|
- /******/ (function(modules) { // webpackBootstrap
- /******/ // The module cache
- /******/ var installedModules = {};
- /******/
- /******/ // The require function
- /******/ function __webpack_require__(moduleId) {
- /******/
- /******/ // Check if module is in cache
- /******/ if(installedModules[moduleId]) {
- /******/ return installedModules[moduleId].exports;
- /******/ }
- /******/ // Create a new module (and put it into the cache)
- /******/ var module = installedModules[moduleId] = {
- /******/ i: moduleId,
- /******/ l: false,
- /******/ exports: {}
- /******/ };
- /******/
- /******/ // Execute the module function
- /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
- /******/
- /******/ // Flag the module as loaded
- /******/ module.l = true;
- /******/
- /******/ // Return the exports of the module
- /******/ return module.exports;
- /******/ }
- /******/
- /******/
- /******/ // expose the modules object (__webpack_modules__)
- /******/ __webpack_require__.m = modules;
- /******/
- /******/ // expose the module cache
- /******/ __webpack_require__.c = installedModules;
- /******/
- /******/ // define getter function for harmony exports
- /******/ __webpack_require__.d = function(exports, name, getter) {
- /******/ if(!__webpack_require__.o(exports, name)) {
- /******/ Object.defineProperty(exports, name, {
- /******/ configurable: false,
- /******/ enumerable: true,
- /******/ get: getter
- /******/ });
- /******/ }
- /******/ };
- /******/
- /******/ // getDefaultExport function for compatibility with non-harmony modules
- /******/ __webpack_require__.n = function(module) {
- /******/ var getter = module && module.__esModule ?
- /******/ function getDefault() { return module['default']; } :
- /******/ function getModuleExports() { return module; };
- /******/ __webpack_require__.d(getter, 'a', getter);
- /******/ return getter;
- /******/ };
- /******/
- /******/ // Object.prototype.hasOwnProperty.call
- /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
- /******/
- /******/ // __webpack_public_path__
- /******/ __webpack_require__.p = "";
- /******/
- /******/ // Load entry module and return exports
- /******/ return __webpack_require__(__webpack_require__.s = 99);
- /******/ })
- /************************************************************************/
- /******/ ([
- /* 0 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var OuterSubscriber_1 = __webpack_require__(29);
- var subscribeToResult_1 = __webpack_require__(30);
- /* tslint:enable:max-line-length */
- /**
- * Combines the source Observable with other Observables to create an Observable
- * whose values are calculated from the latest values of each, only when the
- * source emits.
- *
- * <span class="informal">Whenever the source Observable emits a value, it
- * computes a formula using that value plus the latest values from other input
- * Observables, then emits the output of that formula.</span>
- *
- * <img src="./img/withLatestFrom.png" width="100%">
- *
- * `withLatestFrom` combines each value from the source Observable (the
- * instance) with the latest values from the other input Observables only when
- * the source emits a value, optionally using a `project` function to determine
- * the value to be emitted on the output Observable. All input Observables must
- * emit at least one value before the output Observable will emit a value.
- *
- * @example <caption>On every click event, emit an array with the latest timer event plus the click event</caption>
- * var clicks = Rx.Observable.fromEvent(document, 'click');
- * var timer = Rx.Observable.interval(1000);
- * var result = clicks.withLatestFrom(timer);
- * result.subscribe(x => console.log(x));
- *
- * @see {@link combineLatest}
- *
- * @param {ObservableInput} other An input Observable to combine with the source
- * Observable. More than one input Observables may be given as argument.
- * @param {Function} [project] Projection function for combining values
- * together. Receives all values in order of the Observables passed, where the
- * first parameter is a value from the source Observable. (e.g.
- * `a.withLatestFrom(b, c, (a1, b1, c1) => a1 + b1 + c1)`). If this is not
- * passed, arrays will be emitted on the output Observable.
- * @return {Observable} An Observable of projected values from the most recent
- * values from each input Observable, or an array of the most recent values from
- * each input Observable.
- * @method withLatestFrom
- * @owner Observable
- */
- function withLatestFrom() {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i - 0] = arguments[_i];
- }
- return function (source) {
- var project;
- if (typeof args[args.length - 1] === 'function') {
- project = args.pop();
- }
- var observables = args;
- return source.lift(new WithLatestFromOperator(observables, project));
- };
- }
- exports.withLatestFrom = withLatestFrom;
- var WithLatestFromOperator = (function () {
- function WithLatestFromOperator(observables, project) {
- this.observables = observables;
- this.project = project;
- }
- WithLatestFromOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new WithLatestFromSubscriber(subscriber, this.observables, this.project));
- };
- return WithLatestFromOperator;
- }());
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @ignore
- * @extends {Ignored}
- */
- var WithLatestFromSubscriber = (function (_super) {
- __extends(WithLatestFromSubscriber, _super);
- function WithLatestFromSubscriber(destination, observables, project) {
- _super.call(this, destination);
- this.observables = observables;
- this.project = project;
- this.toRespond = [];
- var len = observables.length;
- this.values = new Array(len);
- for (var i = 0; i < len; i++) {
- this.toRespond.push(i);
- }
- for (var i = 0; i < len; i++) {
- var observable = observables[i];
- this.add(subscribeToResult_1.subscribeToResult(this, observable, observable, i));
- }
- }
- WithLatestFromSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
- this.values[outerIndex] = innerValue;
- var toRespond = this.toRespond;
- if (toRespond.length > 0) {
- var found = toRespond.indexOf(outerIndex);
- if (found !== -1) {
- toRespond.splice(found, 1);
- }
- }
- };
- WithLatestFromSubscriber.prototype.notifyComplete = function () {
- // noop
- };
- WithLatestFromSubscriber.prototype._next = function (value) {
- if (this.toRespond.length === 0) {
- var args = [value].concat(this.values);
- if (this.project) {
- this._tryProject(args);
- }
- else {
- this.destination.next(args);
- }
- }
- };
- WithLatestFromSubscriber.prototype._tryProject = function (args) {
- var result;
- try {
- result = this.project.apply(this, args);
- }
- catch (err) {
- this.destination.error(err);
- return;
- }
- this.destination.next(result);
- };
- return WithLatestFromSubscriber;
- }(OuterSubscriber_1.OuterSubscriber));
- //# sourceMappingURL=withLatestFrom.js.map
-
- /***/ }),
- /* 1 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var root_1 = __webpack_require__(7);
- var toSubscriber_1 = __webpack_require__(103);
- var observable_1 = __webpack_require__(45);
- var pipe_1 = __webpack_require__(105);
- /**
- * A representation of any set of values over any amount of time. This is the most basic building block
- * of RxJS.
- *
- * @class Observable<T>
- */
- var Observable = (function () {
- /**
- * @constructor
- * @param {Function} subscribe the function that is called when the Observable is
- * initially subscribed to. This function is given a Subscriber, to which new values
- * can be `next`ed, or an `error` method can be called to raise an error, or
- * `complete` can be called to notify of a successful completion.
- */
- function Observable(subscribe) {
- this._isScalar = false;
- if (subscribe) {
- this._subscribe = subscribe;
- }
- }
- /**
- * Creates a new Observable, with this Observable as the source, and the passed
- * operator defined as the new observable's operator.
- * @method lift
- * @param {Operator} operator the operator defining the operation to take on the observable
- * @return {Observable} a new observable with the Operator applied
- */
- Observable.prototype.lift = function (operator) {
- var observable = new Observable();
- observable.source = this;
- observable.operator = operator;
- return observable;
- };
- /**
- * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.
- *
- * <span class="informal">Use it when you have all these Observables, but still nothing is happening.</span>
- *
- * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It
- * might be for example a function that you passed to a {@link create} static factory, but most of the time it is
- * a library implementation, which defines what and when will be emitted by an Observable. This means that calling
- * `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often
- * thought.
- *
- * Apart from starting the execution of an Observable, this method allows you to listen for values
- * that an Observable emits, as well as for when it completes or errors. You can achieve this in two
- * following ways.
- *
- * The first way is creating an object that implements {@link Observer} interface. It should have methods
- * defined by that interface, but note that it should be just a regular JavaScript object, which you can create
- * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular do
- * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also
- * that your object does not have to implement all methods. If you find yourself creating a method that doesn't
- * do anything, you can simply omit it. Note however, that if `error` method is not provided, all errors will
- * be left uncaught.
- *
- * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.
- * This means you can provide three functions as arguments to `subscribe`, where first function is equivalent
- * of a `next` method, second of an `error` method and third of a `complete` method. Just as in case of Observer,
- * if you do not need to listen for something, you can omit a function, preferably by passing `undefined` or `null`,
- * since `subscribe` recognizes these functions by where they were placed in function call. When it comes
- * to `error` function, just as before, if not provided, errors emitted by an Observable will be thrown.
- *
- * Whatever style of calling `subscribe` you use, in both cases it returns a Subscription object.
- * This object allows you to call `unsubscribe` on it, which in turn will stop work that an Observable does and will clean
- * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback
- * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.
- *
- * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.
- * It is an Observable itself that decides when these functions will be called. For example {@link of}
- * by default emits all its values synchronously. Always check documentation for how given Observable
- * will behave when subscribed and if its default behavior can be modified with a {@link Scheduler}.
- *
- * @example <caption>Subscribe with an Observer</caption>
- * const sumObserver = {
- * sum: 0,
- * next(value) {
- * console.log('Adding: ' + value);
- * this.sum = this.sum + value;
- * },
- * error() { // We actually could just remove this method,
- * }, // since we do not really care about errors right now.
- * complete() {
- * console.log('Sum equals: ' + this.sum);
- * }
- * };
- *
- * Rx.Observable.of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.
- * .subscribe(sumObserver);
- *
- * // Logs:
- * // "Adding: 1"
- * // "Adding: 2"
- * // "Adding: 3"
- * // "Sum equals: 6"
- *
- *
- * @example <caption>Subscribe with functions</caption>
- * let sum = 0;
- *
- * Rx.Observable.of(1, 2, 3)
- * .subscribe(
- * function(value) {
- * console.log('Adding: ' + value);
- * sum = sum + value;
- * },
- * undefined,
- * function() {
- * console.log('Sum equals: ' + sum);
- * }
- * );
- *
- * // Logs:
- * // "Adding: 1"
- * // "Adding: 2"
- * // "Adding: 3"
- * // "Sum equals: 6"
- *
- *
- * @example <caption>Cancel a subscription</caption>
- * const subscription = Rx.Observable.interval(1000).subscribe(
- * num => console.log(num),
- * undefined,
- * () => console.log('completed!') // Will not be called, even
- * ); // when cancelling subscription
- *
- *
- * setTimeout(() => {
- * subscription.unsubscribe();
- * console.log('unsubscribed!');
- * }, 2500);
- *
- * // Logs:
- * // 0 after 1s
- * // 1 after 2s
- * // "unsubscribed!" after 2.5s
- *
- *
- * @param {Observer|Function} observerOrNext (optional) Either an observer with methods to be called,
- * or the first of three possible handlers, which is the handler for each value emitted from the subscribed
- * Observable.
- * @param {Function} error (optional) A handler for a terminal event resulting from an error. If no error handler is provided,
- * the error will be thrown as unhandled.
- * @param {Function} complete (optional) A handler for a terminal event resulting from successful completion.
- * @return {ISubscription} a subscription reference to the registered handlers
- * @method subscribe
- */
- Observable.prototype.subscribe = function (observerOrNext, error, complete) {
- var operator = this.operator;
- var sink = toSubscriber_1.toSubscriber(observerOrNext, error, complete);
- if (operator) {
- operator.call(sink, this.source);
- }
- else {
- sink.add(this.source || !sink.syncErrorThrowable ? this._subscribe(sink) : this._trySubscribe(sink));
- }
- if (sink.syncErrorThrowable) {
- sink.syncErrorThrowable = false;
- if (sink.syncErrorThrown) {
- throw sink.syncErrorValue;
- }
- }
- return sink;
- };
- Observable.prototype._trySubscribe = function (sink) {
- try {
- return this._subscribe(sink);
- }
- catch (err) {
- sink.syncErrorThrown = true;
- sink.syncErrorValue = err;
- sink.error(err);
- }
- };
- /**
- * @method forEach
- * @param {Function} next a handler for each value emitted by the observable
- * @param {PromiseConstructor} [PromiseCtor] a constructor function used to instantiate the Promise
- * @return {Promise} a promise that either resolves on observable completion or
- * rejects with the handled error
- */
- Observable.prototype.forEach = function (next, PromiseCtor) {
- var _this = this;
- if (!PromiseCtor) {
- if (root_1.root.Rx && root_1.root.Rx.config && root_1.root.Rx.config.Promise) {
- PromiseCtor = root_1.root.Rx.config.Promise;
- }
- else if (root_1.root.Promise) {
- PromiseCtor = root_1.root.Promise;
- }
- }
- if (!PromiseCtor) {
- throw new Error('no Promise impl found');
- }
- return new PromiseCtor(function (resolve, reject) {
- // Must be declared in a separate statement to avoid a RefernceError when
- // accessing subscription below in the closure due to Temporal Dead Zone.
- var subscription;
- subscription = _this.subscribe(function (value) {
- if (subscription) {
- // if there is a subscription, then we can surmise
- // the next handling is asynchronous. Any errors thrown
- // need to be rejected explicitly and unsubscribe must be
- // called manually
- try {
- next(value);
- }
- catch (err) {
- reject(err);
- subscription.unsubscribe();
- }
- }
- else {
- // if there is NO subscription, then we're getting a nexted
- // value synchronously during subscription. We can just call it.
- // If it errors, Observable's `subscribe` will ensure the
- // unsubscription logic is called, then synchronously rethrow the error.
- // After that, Promise will trap the error and send it
- // down the rejection path.
- next(value);
- }
- }, reject, resolve);
- });
- };
- /** @deprecated internal use only */ Observable.prototype._subscribe = function (subscriber) {
- return this.source.subscribe(subscriber);
- };
- /**
- * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable
- * @method Symbol.observable
- * @return {Observable} this instance of the observable
- */
- Observable.prototype[observable_1.observable] = function () {
- return this;
- };
- /* tslint:enable:max-line-length */
- /**
- * Used to stitch together functional operators into a chain.
- * @method pipe
- * @return {Observable} the Observable result of all of the operators having
- * been called in the order they were passed in.
- *
- * @example
- *
- * import { map, filter, scan } from 'rxjs/operators';
- *
- * Rx.Observable.interval(1000)
- * .pipe(
- * filter(x => x % 2 === 0),
- * map(x => x + x),
- * scan((acc, x) => acc + x)
- * )
- * .subscribe(x => console.log(x))
- */
- Observable.prototype.pipe = function () {
- var operations = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- operations[_i - 0] = arguments[_i];
- }
- if (operations.length === 0) {
- return this;
- }
- return pipe_1.pipeFromArray(operations)(this);
- };
- /* tslint:enable:max-line-length */
- Observable.prototype.toPromise = function (PromiseCtor) {
- var _this = this;
- if (!PromiseCtor) {
- if (root_1.root.Rx && root_1.root.Rx.config && root_1.root.Rx.config.Promise) {
- PromiseCtor = root_1.root.Rx.config.Promise;
- }
- else if (root_1.root.Promise) {
- PromiseCtor = root_1.root.Promise;
- }
- }
- if (!PromiseCtor) {
- throw new Error('no Promise impl found');
- }
- return new PromiseCtor(function (resolve, reject) {
- var value;
- _this.subscribe(function (x) { return value = x; }, function (err) { return reject(err); }, function () { return resolve(value); });
- });
- };
- // HACK: Since TypeScript inherits static properties too, we have to
- // fight against TypeScript here so Subject can have a different static create signature
- /**
- * Creates a new cold Observable by calling the Observable constructor
- * @static true
- * @owner Observable
- * @method create
- * @param {Function} subscribe? the subscriber function to be passed to the Observable constructor
- * @return {Observable} a new cold observable
- */
- Observable.create = function (subscribe) {
- return new Observable(subscribe);
- };
- return Observable;
- }());
- exports.Observable = Observable;
- //# sourceMappingURL=Observable.js.map
-
- /***/ }),
- /* 2 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var Subscriber_1 = __webpack_require__(3);
- /**
- * Applies a given `project` function to each value emitted by the source
- * Observable, and emits the resulting values as an Observable.
- *
- * <span class="informal">Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map),
- * it passes each source value through a transformation function to get
- * corresponding output values.</span>
- *
- * <img src="./img/map.png" width="100%">
- *
- * Similar to the well known `Array.prototype.map` function, this operator
- * applies a projection to each value and emits that projection in the output
- * Observable.
- *
- * @example <caption>Map every click to the clientX position of that click</caption>
- * var clicks = Rx.Observable.fromEvent(document, 'click');
- * var positions = clicks.map(ev => ev.clientX);
- * positions.subscribe(x => console.log(x));
- *
- * @see {@link mapTo}
- * @see {@link pluck}
- *
- * @param {function(value: T, index: number): R} project The function to apply
- * to each `value` emitted by the source Observable. The `index` parameter is
- * the number `i` for the i-th emission that has happened since the
- * subscription, starting from the number `0`.
- * @param {any} [thisArg] An optional argument to define what `this` is in the
- * `project` function.
- * @return {Observable<R>} An Observable that emits the values from the source
- * Observable transformed by the given `project` function.
- * @method map
- * @owner Observable
- */
- function map(project, thisArg) {
- return function mapOperation(source) {
- if (typeof project !== 'function') {
- throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');
- }
- return source.lift(new MapOperator(project, thisArg));
- };
- }
- exports.map = map;
- var MapOperator = (function () {
- function MapOperator(project, thisArg) {
- this.project = project;
- this.thisArg = thisArg;
- }
- MapOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));
- };
- return MapOperator;
- }());
- exports.MapOperator = MapOperator;
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @ignore
- * @extends {Ignored}
- */
- var MapSubscriber = (function (_super) {
- __extends(MapSubscriber, _super);
- function MapSubscriber(destination, project, thisArg) {
- _super.call(this, destination);
- this.project = project;
- this.count = 0;
- this.thisArg = thisArg || this;
- }
- // NOTE: This looks unoptimized, but it's actually purposefully NOT
- // using try/catch optimizations.
- MapSubscriber.prototype._next = function (value) {
- var result;
- try {
- result = this.project.call(this.thisArg, value, this.count++);
- }
- catch (err) {
- this.destination.error(err);
- return;
- }
- this.destination.next(result);
- };
- return MapSubscriber;
- }(Subscriber_1.Subscriber));
- //# sourceMappingURL=map.js.map
-
- /***/ }),
- /* 3 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var isFunction_1 = __webpack_require__(42);
- var Subscription_1 = __webpack_require__(12);
- var Observer_1 = __webpack_require__(57);
- var rxSubscriber_1 = __webpack_require__(44);
- /**
- * Implements the {@link Observer} interface and extends the
- * {@link Subscription} class. While the {@link Observer} is the public API for
- * consuming the values of an {@link Observable}, all Observers get converted to
- * a Subscriber, in order to provide Subscription-like capabilities such as
- * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for
- * implementing operators, but it is rarely used as a public API.
- *
- * @class Subscriber<T>
- */
- var Subscriber = (function (_super) {
- __extends(Subscriber, _super);
- /**
- * @param {Observer|function(value: T): void} [destinationOrNext] A partially
- * defined Observer or a `next` callback function.
- * @param {function(e: ?any): void} [error] The `error` callback of an
- * Observer.
- * @param {function(): void} [complete] The `complete` callback of an
- * Observer.
- */
- function Subscriber(destinationOrNext, error, complete) {
- _super.call(this);
- this.syncErrorValue = null;
- this.syncErrorThrown = false;
- this.syncErrorThrowable = false;
- this.isStopped = false;
- switch (arguments.length) {
- case 0:
- this.destination = Observer_1.empty;
- break;
- case 1:
- if (!destinationOrNext) {
- this.destination = Observer_1.empty;
- break;
- }
- if (typeof destinationOrNext === 'object') {
- // HACK(benlesh): To resolve an issue where Node users may have multiple
- // copies of rxjs in their node_modules directory.
- if (isTrustedSubscriber(destinationOrNext)) {
- var trustedSubscriber = destinationOrNext[rxSubscriber_1.rxSubscriber]();
- this.syncErrorThrowable = trustedSubscriber.syncErrorThrowable;
- this.destination = trustedSubscriber;
- trustedSubscriber.add(this);
- }
- else {
- this.syncErrorThrowable = true;
- this.destination = new SafeSubscriber(this, destinationOrNext);
- }
- break;
- }
- default:
- this.syncErrorThrowable = true;
- this.destination = new SafeSubscriber(this, destinationOrNext, error, complete);
- break;
- }
- }
- Subscriber.prototype[rxSubscriber_1.rxSubscriber] = function () { return this; };
- /**
- * A static factory for a Subscriber, given a (potentially partial) definition
- * of an Observer.
- * @param {function(x: ?T): void} [next] The `next` callback of an Observer.
- * @param {function(e: ?any): void} [error] The `error` callback of an
- * Observer.
- * @param {function(): void} [complete] The `complete` callback of an
- * Observer.
- * @return {Subscriber<T>} A Subscriber wrapping the (partially defined)
- * Observer represented by the given arguments.
- */
- Subscriber.create = function (next, error, complete) {
- var subscriber = new Subscriber(next, error, complete);
- subscriber.syncErrorThrowable = false;
- return subscriber;
- };
- /**
- * The {@link Observer} callback to receive notifications of type `next` from
- * the Observable, with a value. The Observable may call this method 0 or more
- * times.
- * @param {T} [value] The `next` value.
- * @return {void}
- */
- Subscriber.prototype.next = function (value) {
- if (!this.isStopped) {
- this._next(value);
- }
- };
- /**
- * The {@link Observer} callback to receive notifications of type `error` from
- * the Observable, with an attached {@link Error}. Notifies the Observer that
- * the Observable has experienced an error condition.
- * @param {any} [err] The `error` exception.
- * @return {void}
- */
- Subscriber.prototype.error = function (err) {
- if (!this.isStopped) {
- this.isStopped = true;
- this._error(err);
- }
- };
- /**
- * The {@link Observer} callback to receive a valueless notification of type
- * `complete` from the Observable. Notifies the Observer that the Observable
- * has finished sending push-based notifications.
- * @return {void}
- */
- Subscriber.prototype.complete = function () {
- if (!this.isStopped) {
- this.isStopped = true;
- this._complete();
- }
- };
- Subscriber.prototype.unsubscribe = function () {
- if (this.closed) {
- return;
- }
- this.isStopped = true;
- _super.prototype.unsubscribe.call(this);
- };
- Subscriber.prototype._next = function (value) {
- this.destination.next(value);
- };
- Subscriber.prototype._error = function (err) {
- this.destination.error(err);
- this.unsubscribe();
- };
- Subscriber.prototype._complete = function () {
- this.destination.complete();
- this.unsubscribe();
- };
- /** @deprecated internal use only */ Subscriber.prototype._unsubscribeAndRecycle = function () {
- var _a = this, _parent = _a._parent, _parents = _a._parents;
- this._parent = null;
- this._parents = null;
- this.unsubscribe();
- this.closed = false;
- this.isStopped = false;
- this._parent = _parent;
- this._parents = _parents;
- return this;
- };
- return Subscriber;
- }(Subscription_1.Subscription));
- exports.Subscriber = Subscriber;
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @ignore
- * @extends {Ignored}
- */
- var SafeSubscriber = (function (_super) {
- __extends(SafeSubscriber, _super);
- function SafeSubscriber(_parentSubscriber, observerOrNext, error, complete) {
- _super.call(this);
- this._parentSubscriber = _parentSubscriber;
- var next;
- var context = this;
- if (isFunction_1.isFunction(observerOrNext)) {
- next = observerOrNext;
- }
- else if (observerOrNext) {
- next = observerOrNext.next;
- error = observerOrNext.error;
- complete = observerOrNext.complete;
- if (observerOrNext !== Observer_1.empty) {
- context = Object.create(observerOrNext);
- if (isFunction_1.isFunction(context.unsubscribe)) {
- this.add(context.unsubscribe.bind(context));
- }
- context.unsubscribe = this.unsubscribe.bind(this);
- }
- }
- this._context = context;
- this._next = next;
- this._error = error;
- this._complete = complete;
- }
- SafeSubscriber.prototype.next = function (value) {
- if (!this.isStopped && this._next) {
- var _parentSubscriber = this._parentSubscriber;
- if (!_parentSubscriber.syncErrorThrowable) {
- this.__tryOrUnsub(this._next, value);
- }
- else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {
- this.unsubscribe();
- }
- }
- };
- SafeSubscriber.prototype.error = function (err) {
- if (!this.isStopped) {
- var _parentSubscriber = this._parentSubscriber;
- if (this._error) {
- if (!_parentSubscriber.syncErrorThrowable) {
- this.__tryOrUnsub(this._error, err);
- this.unsubscribe();
- }
- else {
- this.__tryOrSetError(_parentSubscriber, this._error, err);
- this.unsubscribe();
- }
- }
- else if (!_parentSubscriber.syncErrorThrowable) {
- this.unsubscribe();
- throw err;
- }
- else {
- _parentSubscriber.syncErrorValue = err;
- _parentSubscriber.syncErrorThrown = true;
- this.unsubscribe();
- }
- }
- };
- SafeSubscriber.prototype.complete = function () {
- var _this = this;
- if (!this.isStopped) {
- var _parentSubscriber = this._parentSubscriber;
- if (this._complete) {
- var wrappedComplete = function () { return _this._complete.call(_this._context); };
- if (!_parentSubscriber.syncErrorThrowable) {
- this.__tryOrUnsub(wrappedComplete);
- this.unsubscribe();
- }
- else {
- this.__tryOrSetError(_parentSubscriber, wrappedComplete);
- this.unsubscribe();
- }
- }
- else {
- this.unsubscribe();
- }
- }
- };
- SafeSubscriber.prototype.__tryOrUnsub = function (fn, value) {
- try {
- fn.call(this._context, value);
- }
- catch (err) {
- this.unsubscribe();
- throw err;
- }
- };
- SafeSubscriber.prototype.__tryOrSetError = function (parent, fn, value) {
- try {
- fn.call(this._context, value);
- }
- catch (err) {
- parent.syncErrorValue = err;
- parent.syncErrorThrown = true;
- return true;
- }
- return false;
- };
- /** @deprecated internal use only */ SafeSubscriber.prototype._unsubscribe = function () {
- var _parentSubscriber = this._parentSubscriber;
- this._context = null;
- this._parentSubscriber = null;
- _parentSubscriber.unsubscribe();
- };
- return SafeSubscriber;
- }(Subscriber));
- function isTrustedSubscriber(obj) {
- return obj instanceof Subscriber || ('syncErrorThrowable' in obj && obj[rxSubscriber_1.rxSubscriber]);
- }
- //# sourceMappingURL=Subscriber.js.map
-
- /***/ }),
- /* 4 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var Subscriber_1 = __webpack_require__(3);
- /* tslint:enable:max-line-length */
- /**
- * Filter items emitted by the source Observable by only emitting those that
- * satisfy a specified predicate.
- *
- * <span class="informal">Like
- * [Array.prototype.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter),
- * it only emits a value from the source if it passes a criterion function.</span>
- *
- * <img src="./img/filter.png" width="100%">
- *
- * Similar to the well-known `Array.prototype.filter` method, this operator
- * takes values from the source Observable, passes them through a `predicate`
- * function and only emits those values that yielded `true`.
- *
- * @example <caption>Emit only click events whose target was a DIV element</caption>
- * var clicks = Rx.Observable.fromEvent(document, 'click');
- * var clicksOnDivs = clicks.filter(ev => ev.target.tagName === 'DIV');
- * clicksOnDivs.subscribe(x => console.log(x));
- *
- * @see {@link distinct}
- * @see {@link distinctUntilChanged}
- * @see {@link distinctUntilKeyChanged}
- * @see {@link ignoreElements}
- * @see {@link partition}
- * @see {@link skip}
- *
- * @param {function(value: T, index: number): boolean} predicate A function that
- * evaluates each value emitted by the source Observable. If it returns `true`,
- * the value is emitted, if `false` the value is not passed to the output
- * Observable. The `index` parameter is the number `i` for the i-th source
- * emission that has happened since the subscription, starting from the number
- * `0`.
- * @param {any} [thisArg] An optional argument to determine the value of `this`
- * in the `predicate` function.
- * @return {Observable} An Observable of values from the source that were
- * allowed by the `predicate` function.
- * @method filter
- * @owner Observable
- */
- function filter(predicate, thisArg) {
- return function filterOperatorFunction(source) {
- return source.lift(new FilterOperator(predicate, thisArg));
- };
- }
- exports.filter = filter;
- var FilterOperator = (function () {
- function FilterOperator(predicate, thisArg) {
- this.predicate = predicate;
- this.thisArg = thisArg;
- }
- FilterOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));
- };
- return FilterOperator;
- }());
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @ignore
- * @extends {Ignored}
- */
- var FilterSubscriber = (function (_super) {
- __extends(FilterSubscriber, _super);
- function FilterSubscriber(destination, predicate, thisArg) {
- _super.call(this, destination);
- this.predicate = predicate;
- this.thisArg = thisArg;
- this.count = 0;
- }
- // the try catch block below is left specifically for
- // optimization and perf reasons. a tryCatcher is not necessary here.
- FilterSubscriber.prototype._next = function (value) {
- var result;
- try {
- result = this.predicate.call(this.thisArg, value, this.count++);
- }
- catch (err) {
- this.destination.error(err);
- return;
- }
- if (result) {
- this.destination.next(value);
- }
- };
- return FilterSubscriber;
- }(Subscriber_1.Subscriber));
- //# sourceMappingURL=filter.js.map
-
- /***/ }),
- /* 5 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var Subscriber_1 = __webpack_require__(3);
- /* tslint:enable:max-line-length */
- /**
- * Perform a side effect for every emission on the source Observable, but return
- * an Observable that is identical to the source.
- *
- * <span class="informal">Intercepts each emission on the source and runs a
- * function, but returns an output which is identical to the source as long as errors don't occur.</span>
- *
- * <img src="./img/do.png" width="100%">
- *
- * Returns a mirrored Observable of the source Observable, but modified so that
- * the provided Observer is called to perform a side effect for every value,
- * error, and completion emitted by the source. Any errors that are thrown in
- * the aforementioned Observer or handlers are safely sent down the error path
- * of the output Observable.
- *
- * This operator is useful for debugging your Observables for the correct values
- * or performing other side effects.
- *
- * Note: this is different to a `subscribe` on the Observable. If the Observable
- * returned by `do` is not subscribed, the side effects specified by the
- * Observer will never happen. `do` therefore simply spies on existing
- * execution, it does not trigger an execution to happen like `subscribe` does.
- *
- * @example <caption>Map every click to the clientX position of that click, while also logging the click event</caption>
- * var clicks = Rx.Observable.fromEvent(document, 'click');
- * var positions = clicks
- * .do(ev => console.log(ev))
- * .map(ev => ev.clientX);
- * positions.subscribe(x => console.log(x));
- *
- * @see {@link map}
- * @see {@link subscribe}
- *
- * @param {Observer|function} [nextOrObserver] A normal Observer object or a
- * callback for `next`.
- * @param {function} [error] Callback for errors in the source.
- * @param {function} [complete] Callback for the completion of the source.
- * @return {Observable} An Observable identical to the source, but runs the
- * specified Observer or callback(s) for each item.
- * @name tap
- */
- function tap(nextOrObserver, error, complete) {
- return function tapOperatorFunction(source) {
- return source.lift(new DoOperator(nextOrObserver, error, complete));
- };
- }
- exports.tap = tap;
- var DoOperator = (function () {
- function DoOperator(nextOrObserver, error, complete) {
- this.nextOrObserver = nextOrObserver;
- this.error = error;
- this.complete = complete;
- }
- DoOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new DoSubscriber(subscriber, this.nextOrObserver, this.error, this.complete));
- };
- return DoOperator;
- }());
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @ignore
- * @extends {Ignored}
- */
- var DoSubscriber = (function (_super) {
- __extends(DoSubscriber, _super);
- function DoSubscriber(destination, nextOrObserver, error, complete) {
- _super.call(this, destination);
- var safeSubscriber = new Subscriber_1.Subscriber(nextOrObserver, error, complete);
- safeSubscriber.syncErrorThrowable = true;
- this.add(safeSubscriber);
- this.safeSubscriber = safeSubscriber;
- }
- DoSubscriber.prototype._next = function (value) {
- var safeSubscriber = this.safeSubscriber;
- safeSubscriber.next(value);
- if (safeSubscriber.syncErrorThrown) {
- this.destination.error(safeSubscriber.syncErrorValue);
- }
- else {
- this.destination.next(value);
- }
- };
- DoSubscriber.prototype._error = function (err) {
- var safeSubscriber = this.safeSubscriber;
- safeSubscriber.error(err);
- if (safeSubscriber.syncErrorThrown) {
- this.destination.error(safeSubscriber.syncErrorValue);
- }
- else {
- this.destination.error(err);
- }
- };
- DoSubscriber.prototype._complete = function () {
- var safeSubscriber = this.safeSubscriber;
- safeSubscriber.complete();
- if (safeSubscriber.syncErrorThrown) {
- this.destination.error(safeSubscriber.syncErrorValue);
- }
- else {
- this.destination.complete();
- }
- };
- return DoSubscriber;
- }(Subscriber_1.Subscriber));
- //# sourceMappingURL=tap.js.map
-
- /***/ }),
- /* 6 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var map_1 = __webpack_require__(2);
- /**
- * Maps each source value (an object) to its specified nested property.
- *
- * <span class="informal">Like {@link map}, but meant only for picking one of
- * the nested properties of every emitted object.</span>
- *
- * <img src="./img/pluck.png" width="100%">
- *
- * Given a list of strings describing a path to an object property, retrieves
- * the value of a specified nested property from all values in the source
- * Observable. If a property can't be resolved, it will return `undefined` for
- * that value.
- *
- * @example <caption>Map every click to the tagName of the clicked target element</caption>
- * var clicks = Rx.Observable.fromEvent(document, 'click');
- * var tagNames = clicks.pluck('target', 'tagName');
- * tagNames.subscribe(x => console.log(x));
- *
- * @see {@link map}
- *
- * @param {...string} properties The nested properties to pluck from each source
- * value (an object).
- * @return {Observable} A new Observable of property values from the source values.
- * @method pluck
- * @owner Observable
- */
- function pluck() {
- var properties = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- properties[_i - 0] = arguments[_i];
- }
- var length = properties.length;
- if (length === 0) {
- throw new Error('list of properties cannot be empty.');
- }
- return function (source) { return map_1.map(plucker(properties, length))(source); };
- }
- exports.pluck = pluck;
- function plucker(props, length) {
- var mapper = function (x) {
- var currentProp = x;
- for (var i = 0; i < length; i++) {
- var p = currentProp[props[i]];
- if (typeof p !== 'undefined') {
- currentProp = p;
- }
- else {
- return undefined;
- }
- }
- return currentProp;
- };
- return mapper;
- }
- //# sourceMappingURL=pluck.js.map
-
- /***/ }),
- /* 7 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
- /* WEBPACK VAR INJECTION */(function(global) {
- // CommonJS / Node have global context exposed as "global" variable.
- // We don't want to include the whole node.d.ts this this compilation unit so we'll just fake
- // the global "global" var for now.
- var __window = typeof window !== 'undefined' && window;
- var __self = typeof self !== 'undefined' && typeof WorkerGlobalScope !== 'undefined' &&
- self instanceof WorkerGlobalScope && self;
- var __global = typeof global !== 'undefined' && global;
- var _root = __window || __global || __self;
- exports.root = _root;
- // Workaround Closure Compiler restriction: The body of a goog.module cannot use throw.
- // This is needed when used with angular/tsickle which inserts a goog.module statement.
- // Wrap in IIFE
- (function () {
- if (!_root) {
- throw new Error('RxJS could not find any global context (window, self, global)');
- }
- })();
- //# sourceMappingURL=root.js.map
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(24)))
-
- /***/ }),
- /* 8 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var _a;
- var BehaviorSubject_1 = __webpack_require__(13);
- var set_options_effect_1 = __webpack_require__(53);
- var file_reload_effect_1 = __webpack_require__(86);
- var browser_set_location_effect_1 = __webpack_require__(89);
- var simulate_click_effect_1 = __webpack_require__(90);
- var set_element_value_effect_1 = __webpack_require__(91);
- var set_element_toggle_value_effect_1 = __webpack_require__(92);
- var set_scroll_1 = __webpack_require__(153);
- var browser_reload_effect_1 = __webpack_require__(93);
- var EffectNames;
- (function (EffectNames) {
- EffectNames["FileReload"] = "@@FileReload";
- EffectNames["PreBrowserReload"] = "@@PreBrowserReload";
- EffectNames["BrowserReload"] = "@@BrowserReload";
- EffectNames["BrowserSetLocation"] = "@@BrowserSetLocation";
- EffectNames["BrowserSetScroll"] = "@@BrowserSetScroll";
- EffectNames["SetOptions"] = "@@SetOptions";
- EffectNames["SimulateClick"] = "@@SimulateClick";
- EffectNames["SetElementValue"] = "@@SetElementValue";
- EffectNames["SetElementToggleValue"] = "@@SetElementToggleValue";
- })(EffectNames = exports.EffectNames || (exports.EffectNames = {}));
- exports.effectOutputHandlers$ = new BehaviorSubject_1.BehaviorSubject((_a = {},
- _a[EffectNames.SetOptions] = set_options_effect_1.setOptionsEffect,
- _a[EffectNames.FileReload] = file_reload_effect_1.fileReloadEffect,
- _a[EffectNames.BrowserReload] = browser_reload_effect_1.browserReloadEffect,
- _a[EffectNames.BrowserSetLocation] = browser_set_location_effect_1.browserSetLocationEffect,
- _a[EffectNames.SimulateClick] = simulate_click_effect_1.simulateClickEffect,
- _a[EffectNames.SetElementValue] = set_element_value_effect_1.setElementValueEffect,
- _a[EffectNames.SetElementToggleValue] = set_element_toggle_value_effect_1.setElementToggleValueEffect,
- _a[EffectNames.BrowserSetScroll] = set_scroll_1.setScrollEffect,
- _a));
-
-
- /***/ }),
- /* 9 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var ArrayObservable_1 = __webpack_require__(23);
- exports.of = ArrayObservable_1.ArrayObservable.of;
- //# sourceMappingURL=of.js.map
-
- /***/ }),
- /* 10 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- var _a;
- var BehaviorSubject_1 = __webpack_require__(13);
- var withLatestFrom_1 = __webpack_require__(0);
- var ignoreElements_1 = __webpack_require__(11);
- var tap_1 = __webpack_require__(5);
- var pluck_1 = __webpack_require__(6);
- var ScrollEvent_1 = __webpack_require__(85);
- var ClickEvent_1 = __webpack_require__(94);
- var KeyupEvent_1 = __webpack_require__(95);
- var BrowserNotify_1 = __webpack_require__(156);
- var BrowserLocation_1 = __webpack_require__(157);
- var BrowserReload_1 = __webpack_require__(96);
- var FileReload_1 = __webpack_require__(165);
- var Connection_1 = __webpack_require__(166);
- var Disconnect_1 = __webpack_require__(167);
- var FormToggleEvent_1 = __webpack_require__(98);
- var OptionsSet_1 = __webpack_require__(168);
- var IncomingSocketNames;
- (function (IncomingSocketNames) {
- IncomingSocketNames["Connection"] = "connection";
- IncomingSocketNames["Disconnect"] = "disconnect";
- IncomingSocketNames["FileReload"] = "file:reload";
- IncomingSocketNames["BrowserReload"] = "browser:reload";
- IncomingSocketNames["BrowserLocation"] = "browser:location";
- IncomingSocketNames["BrowserNotify"] = "browser:notify";
- IncomingSocketNames["Scroll"] = "scroll";
- IncomingSocketNames["Click"] = "click";
- IncomingSocketNames["Keyup"] = "input:text";
- IncomingSocketNames["InputToggle"] = "input:toggles";
- IncomingSocketNames["OptionsSet"] = "options:set";
- })(IncomingSocketNames = exports.IncomingSocketNames || (exports.IncomingSocketNames = {}));
- var OutgoingSocketEvents;
- (function (OutgoingSocketEvents) {
- OutgoingSocketEvents["Scroll"] = "@@outgoing/scroll";
- OutgoingSocketEvents["Click"] = "@@outgoing/click";
- OutgoingSocketEvents["Keyup"] = "@@outgoing/keyup";
- OutgoingSocketEvents["InputToggle"] = "@@outgoing/Toggle";
- })(OutgoingSocketEvents = exports.OutgoingSocketEvents || (exports.OutgoingSocketEvents = {}));
- exports.socketHandlers$ = new BehaviorSubject_1.BehaviorSubject((_a = {},
- _a[IncomingSocketNames.Connection] = Connection_1.incomingConnection,
- _a[IncomingSocketNames.Disconnect] = Disconnect_1.incomingDisconnect,
- _a[IncomingSocketNames.FileReload] = FileReload_1.incomingFileReload,
- _a[IncomingSocketNames.BrowserReload] = BrowserReload_1.incomingBrowserReload,
- _a[IncomingSocketNames.BrowserLocation] = BrowserLocation_1.incomingBrowserLocation,
- _a[IncomingSocketNames.BrowserNotify] = BrowserNotify_1.incomingBrowserNotify,
- _a[IncomingSocketNames.Scroll] = ScrollEvent_1.incomingScrollHandler,
- _a[IncomingSocketNames.Click] = ClickEvent_1.incomingHandler$,
- _a[IncomingSocketNames.Keyup] = KeyupEvent_1.incomingKeyupHandler,
- _a[IncomingSocketNames.InputToggle] = FormToggleEvent_1.incomingInputsToggles,
- _a[IncomingSocketNames.OptionsSet] = OptionsSet_1.incomingOptionsSet,
- _a[OutgoingSocketEvents.Scroll] = emitWithPathname(IncomingSocketNames.Scroll),
- _a[OutgoingSocketEvents.Click] = emitWithPathname(IncomingSocketNames.Click),
- _a[OutgoingSocketEvents.Keyup] = emitWithPathname(IncomingSocketNames.Keyup),
- _a[OutgoingSocketEvents.InputToggle] = emitWithPathname(IncomingSocketNames.InputToggle),
- _a));
- function emitWithPathname(name) {
- return function (xs, inputs) {
- return xs.pipe(withLatestFrom_1.withLatestFrom(inputs.io$, inputs.window$.pipe(pluck_1.pluck("location", "pathname"))), tap_1.tap(function (_a) {
- var event = _a[0], io = _a[1], pathname = _a[2];
- return io.emit(name, __assign({}, event, { pathname: pathname }));
- }), ignoreElements_1.ignoreElements());
- };
- }
-
-
- /***/ }),
- /* 11 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var Subscriber_1 = __webpack_require__(3);
- var noop_1 = __webpack_require__(58);
- /**
- * Ignores all items emitted by the source Observable and only passes calls of `complete` or `error`.
- *
- * <img src="./img/ignoreElements.png" width="100%">
- *
- * @return {Observable} An empty Observable that only calls `complete`
- * or `error`, based on which one is called by the source Observable.
- * @method ignoreElements
- * @owner Observable
- */
- function ignoreElements() {
- return function ignoreElementsOperatorFunction(source) {
- return source.lift(new IgnoreElementsOperator());
- };
- }
- exports.ignoreElements = ignoreElements;
- var IgnoreElementsOperator = (function () {
- function IgnoreElementsOperator() {
- }
- IgnoreElementsOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new IgnoreElementsSubscriber(subscriber));
- };
- return IgnoreElementsOperator;
- }());
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @ignore
- * @extends {Ignored}
- */
- var IgnoreElementsSubscriber = (function (_super) {
- __extends(IgnoreElementsSubscriber, _super);
- function IgnoreElementsSubscriber() {
- _super.apply(this, arguments);
- }
- IgnoreElementsSubscriber.prototype._next = function (unused) {
- noop_1.noop();
- };
- return IgnoreElementsSubscriber;
- }(Subscriber_1.Subscriber));
- //# sourceMappingURL=ignoreElements.js.map
-
- /***/ }),
- /* 12 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var isArray_1 = __webpack_require__(26);
- var isObject_1 = __webpack_require__(56);
- var isFunction_1 = __webpack_require__(42);
- var tryCatch_1 = __webpack_require__(43);
- var errorObject_1 = __webpack_require__(27);
- var UnsubscriptionError_1 = __webpack_require__(104);
- /**
- * Represents a disposable resource, such as the execution of an Observable. A
- * Subscription has one important method, `unsubscribe`, that takes no argument
- * and just disposes the resource held by the subscription.
- *
- * Additionally, subscriptions may be grouped together through the `add()`
- * method, which will attach a child Subscription to the current Subscription.
- * When a Subscription is unsubscribed, all its children (and its grandchildren)
- * will be unsubscribed as well.
- *
- * @class Subscription
- */
- var Subscription = (function () {
- /**
- * @param {function(): void} [unsubscribe] A function describing how to
- * perform the disposal of resources when the `unsubscribe` method is called.
- */
- function Subscription(unsubscribe) {
- /**
- * A flag to indicate whether this Subscription has already been unsubscribed.
- * @type {boolean}
- */
- this.closed = false;
- this._parent = null;
- this._parents = null;
- this._subscriptions = null;
- if (unsubscribe) {
- this._unsubscribe = unsubscribe;
- }
- }
- /**
- * Disposes the resources held by the subscription. May, for instance, cancel
- * an ongoing Observable execution or cancel any other type of work that
- * started when the Subscription was created.
- * @return {void}
- */
- Subscription.prototype.unsubscribe = function () {
- var hasErrors = false;
- var errors;
- if (this.closed) {
- return;
- }
- var _a = this, _parent = _a._parent, _parents = _a._parents, _unsubscribe = _a._unsubscribe, _subscriptions = _a._subscriptions;
- this.closed = true;
- this._parent = null;
- this._parents = null;
- // null out _subscriptions first so any child subscriptions that attempt
- // to remove themselves from this subscription will noop
- this._subscriptions = null;
- var index = -1;
- var len = _parents ? _parents.length : 0;
- // if this._parent is null, then so is this._parents, and we
- // don't have to remove ourselves from any parent subscriptions.
- while (_parent) {
- _parent.remove(this);
- // if this._parents is null or index >= len,
- // then _parent is set to null, and the loop exits
- _parent = ++index < len && _parents[index] || null;
- }
- if (isFunction_1.isFunction(_unsubscribe)) {
- var trial = tryCatch_1.tryCatch(_unsubscribe).call(this);
- if (trial === errorObject_1.errorObject) {
- hasErrors = true;
- errors = errors || (errorObject_1.errorObject.e instanceof UnsubscriptionError_1.UnsubscriptionError ?
- flattenUnsubscriptionErrors(errorObject_1.errorObject.e.errors) : [errorObject_1.errorObject.e]);
- }
- }
- if (isArray_1.isArray(_subscriptions)) {
- index = -1;
- len = _subscriptions.length;
- while (++index < len) {
- var sub = _subscriptions[index];
- if (isObject_1.isObject(sub)) {
- var trial = tryCatch_1.tryCatch(sub.unsubscribe).call(sub);
- if (trial === errorObject_1.errorObject) {
- hasErrors = true;
- errors = errors || [];
- var err = errorObject_1.errorObject.e;
- if (err instanceof UnsubscriptionError_1.UnsubscriptionError) {
- errors = errors.concat(flattenUnsubscriptionErrors(err.errors));
- }
- else {
- errors.push(err);
- }
- }
- }
- }
- }
- if (hasErrors) {
- throw new UnsubscriptionError_1.UnsubscriptionError(errors);
- }
- };
- /**
- * Adds a tear down to be called during the unsubscribe() of this
- * Subscription.
- *
- * If the tear down being added is a subscription that is already
- * unsubscribed, is the same reference `add` is being called on, or is
- * `Subscription.EMPTY`, it will not be added.
- *
- * If this subscription is already in an `closed` state, the passed
- * tear down logic will be executed immediately.
- *
- * @param {TeardownLogic} teardown The additional logic to execute on
- * teardown.
- * @return {Subscription} Returns the Subscription used or created to be
- * added to the inner subscriptions list. This Subscription can be used with
- * `remove()` to remove the passed teardown logic from the inner subscriptions
- * list.
- */
- Subscription.prototype.add = function (teardown) {
- if (!teardown || (teardown === Subscription.EMPTY)) {
- return Subscription.EMPTY;
- }
- if (teardown === this) {
- return this;
- }
- var subscription = teardown;
- switch (typeof teardown) {
- case 'function':
- subscription = new Subscription(teardown);
- case 'object':
- if (subscription.closed || typeof subscription.unsubscribe !== 'function') {
- return subscription;
- }
- else if (this.closed) {
- subscription.unsubscribe();
- return subscription;
- }
- else if (typeof subscription._addParent !== 'function' /* quack quack */) {
- var tmp = subscription;
- subscription = new Subscription();
- subscription._subscriptions = [tmp];
- }
- break;
- default:
- throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');
- }
- var subscriptions = this._subscriptions || (this._subscriptions = []);
- subscriptions.push(subscription);
- subscription._addParent(this);
- return subscription;
- };
- /**
- * Removes a Subscription from the internal list of subscriptions that will
- * unsubscribe during the unsubscribe process of this Subscription.
- * @param {Subscription} subscription The subscription to remove.
- * @return {void}
- */
- Subscription.prototype.remove = function (subscription) {
- var subscriptions = this._subscriptions;
- if (subscriptions) {
- var subscriptionIndex = subscriptions.indexOf(subscription);
- if (subscriptionIndex !== -1) {
- subscriptions.splice(subscriptionIndex, 1);
- }
- }
- };
- Subscription.prototype._addParent = function (parent) {
- var _a = this, _parent = _a._parent, _parents = _a._parents;
- if (!_parent || _parent === parent) {
- // If we don't have a parent, or the new parent is the same as the
- // current parent, then set this._parent to the new parent.
- this._parent = parent;
- }
- else if (!_parents) {
- // If there's already one parent, but not multiple, allocate an Array to
- // store the rest of the parent Subscriptions.
- this._parents = [parent];
- }
- else if (_parents.indexOf(parent) === -1) {
- // Only add the new parent to the _parents list if it's not already there.
- _parents.push(parent);
- }
- };
- Subscription.EMPTY = (function (empty) {
- empty.closed = true;
- return empty;
- }(new Subscription()));
- return Subscription;
- }());
- exports.Subscription = Subscription;
- function flattenUnsubscriptionErrors(errors) {
- return errors.reduce(function (errs, err) { return errs.concat((err instanceof UnsubscriptionError_1.UnsubscriptionError) ? err.errors : err); }, []);
- }
- //# sourceMappingURL=Subscription.js.map
-
- /***/ }),
- /* 13 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var Subject_1 = __webpack_require__(37);
- var ObjectUnsubscribedError_1 = __webpack_require__(73);
- /**
- * @class BehaviorSubject<T>
- */
- var BehaviorSubject = (function (_super) {
- __extends(BehaviorSubject, _super);
- function BehaviorSubject(_value) {
- _super.call(this);
- this._value = _value;
- }
- Object.defineProperty(BehaviorSubject.prototype, "value", {
- get: function () {
- return this.getValue();
- },
- enumerable: true,
- configurable: true
- });
- /** @deprecated internal use only */ BehaviorSubject.prototype._subscribe = function (subscriber) {
- var subscription = _super.prototype._subscribe.call(this, subscriber);
- if (subscription && !subscription.closed) {
- subscriber.next(this._value);
- }
- return subscription;
- };
- BehaviorSubject.prototype.getValue = function () {
- if (this.hasError) {
- throw this.thrownError;
- }
- else if (this.closed) {
- throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError();
- }
- else {
- return this._value;
- }
- };
- BehaviorSubject.prototype.next = function (value) {
- _super.prototype.next.call(this, this._value = value);
- };
- return BehaviorSubject;
- }(Subject_1.Subject));
- exports.BehaviorSubject = BehaviorSubject;
- //# sourceMappingURL=BehaviorSubject.js.map
-
- /***/ }),
- /* 14 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var _a;
- var BehaviorSubject_1 = __webpack_require__(13);
- var timer_1 = __webpack_require__(52);
- var of_1 = __webpack_require__(9);
- var logger_1 = __webpack_require__(142);
- var filter_1 = __webpack_require__(4);
- var tap_1 = __webpack_require__(5);
- var withLatestFrom_1 = __webpack_require__(0);
- var switchMap_1 = __webpack_require__(20);
- var pluck_1 = __webpack_require__(6);
- function initLogger(options) {
- var log = new logger_1.Nanologger(options.logPrefix || "", {
- colors: { magenta: "#0F2634" }
- });
- return of_1.of(log);
- }
- exports.initLogger = initLogger;
- var LogNames;
- (function (LogNames) {
- LogNames["Log"] = "@@Log";
- LogNames["Info"] = "@@Log.info";
- LogNames["Debug"] = "@@Log.debug";
- })(LogNames = exports.LogNames || (exports.LogNames = {}));
- var Overlay;
- (function (Overlay) {
- Overlay["Info"] = "@@Overlay.info";
- })(Overlay = exports.Overlay || (exports.Overlay = {}));
- function consoleInfo() {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- return [LogNames.Log, [LogNames.Info, args]];
- }
- exports.consoleInfo = consoleInfo;
- function consoleDebug() {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- return [LogNames.Log, [LogNames.Debug, args]];
- }
- exports.consoleDebug = consoleDebug;
- function overlayInfo(message, timeout) {
- if (timeout === void 0) { timeout = 2000; }
- return [Overlay.Info, [message, timeout]];
- }
- exports.overlayInfo = overlayInfo;
- exports.logHandler$ = new BehaviorSubject_1.BehaviorSubject((_a = {},
- _a[LogNames.Log] = function (xs, inputs) {
- return xs.pipe(
- /**
- * access injectNotification from the options stream
- */
- withLatestFrom_1.withLatestFrom(inputs.logInstance$, inputs.option$.pipe(pluck_1.pluck("injectNotification"))),
- /**
- * only accept messages if injectNotification !== console
- */
- filter_1.filter(function (_a) {
- var injectNotification = _a[2];
- return injectNotification === "console";
- }), tap_1.tap(function (_a) {
- var event = _a[0], log = _a[1];
- switch (event[0]) {
- case LogNames.Info: {
- return log.info.apply(log, event[1]);
- }
- case LogNames.Debug: {
- return log.debug.apply(log, event[1]);
- }
- }
- }));
- },
- _a[Overlay.Info] = function (xs, inputs) {
- return xs.pipe(withLatestFrom_1.withLatestFrom(inputs.option$, inputs.notifyElement$, inputs.document$),
- /**
- * Reject all notifications if notify: false
- */
- filter_1.filter(function (_a) {
- var options = _a[1];
- return Boolean(options.notify);
- }),
- /**
- * Set the HTML of the notify element
- */
- tap_1.tap(function (_a) {
- var event = _a[0], options = _a[1], element = _a[2], document = _a[3];
- element.innerHTML = event[0];
- element.style.display = "block";
- document.body.appendChild(element);
- }),
- /**
- * Now remove the element after the given timeout
- */
- switchMap_1.switchMap(function (_a) {
- var event = _a[0], options = _a[1], element = _a[2], document = _a[3];
- return timer_1.timer(event[1] || 2000).pipe(tap_1.tap(function () {
- element.style.display = "none";
- if (element.parentNode) {
- document.body.removeChild(element);
- }
- }));
- }));
- },
- _a));
-
-
- /***/ }),
- /* 15 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var subscribeToResult_1 = __webpack_require__(30);
- var OuterSubscriber_1 = __webpack_require__(29);
- /* tslint:enable:max-line-length */
- /**
- * Projects each source value to an Observable which is merged in the output
- * Observable.
- *
- * <span class="informal">Maps each value to an Observable, then flattens all of
- * these inner Observables using {@link mergeAll}.</span>
- *
- * <img src="./img/mergeMap.png" width="100%">
- *
- * Returns an Observable that emits items based on applying a function that you
- * supply to each item emitted by the source Observable, where that function
- * returns an Observable, and then merging those resulting Observables and
- * emitting the results of this merger.
- *
- * @example <caption>Map and flatten each letter to an Observable ticking every 1 second</caption>
- * var letters = Rx.Observable.of('a', 'b', 'c');
- * var result = letters.mergeMap(x =>
- * Rx.Observable.interval(1000).map(i => x+i)
- * );
- * result.subscribe(x => console.log(x));
- *
- * // Results in the following:
- * // a0
- * // b0
- * // c0
- * // a1
- * // b1
- * // c1
- * // continues to list a,b,c with respective ascending integers
- *
- * @see {@link concatMap}
- * @see {@link exhaustMap}
- * @see {@link merge}
- * @see {@link mergeAll}
- * @see {@link mergeMapTo}
- * @see {@link mergeScan}
- * @see {@link switchMap}
- *
- * @param {function(value: T, ?index: number): ObservableInput} project A function
- * that, when applied to an item emitted by the source Observable, returns an
- * Observable.
- * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector]
- * A function to produce the value on the output Observable based on the values
- * and the indices of the source (outer) emission and the inner Observable
- * emission. The arguments passed to this function are:
- * - `outerValue`: the value that came from the source
- * - `innerValue`: the value that came from the projected Observable
- * - `outerIndex`: the "index" of the value that came from the source
- * - `innerIndex`: the "index" of the value from the projected Observable
- * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input
- * Observables being subscribed to concurrently.
- * @return {Observable} An Observable that emits the result of applying the
- * projection function (and the optional `resultSelector`) to each item emitted
- * by the source Observable and merging the results of the Observables obtained
- * from this transformation.
- * @method mergeMap
- * @owner Observable
- */
- function mergeMap(project, resultSelector, concurrent) {
- if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }
- return function mergeMapOperatorFunction(source) {
- if (typeof resultSelector === 'number') {
- concurrent = resultSelector;
- resultSelector = null;
- }
- return source.lift(new MergeMapOperator(project, resultSelector, concurrent));
- };
- }
- exports.mergeMap = mergeMap;
- var MergeMapOperator = (function () {
- function MergeMapOperator(project, resultSelector, concurrent) {
- if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }
- this.project = project;
- this.resultSelector = resultSelector;
- this.concurrent = concurrent;
- }
- MergeMapOperator.prototype.call = function (observer, source) {
- return source.subscribe(new MergeMapSubscriber(observer, this.project, this.resultSelector, this.concurrent));
- };
- return MergeMapOperator;
- }());
- exports.MergeMapOperator = MergeMapOperator;
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @ignore
- * @extends {Ignored}
- */
- var MergeMapSubscriber = (function (_super) {
- __extends(MergeMapSubscriber, _super);
- function MergeMapSubscriber(destination, project, resultSelector, concurrent) {
- if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }
- _super.call(this, destination);
- this.project = project;
- this.resultSelector = resultSelector;
- this.concurrent = concurrent;
- this.hasCompleted = false;
- this.buffer = [];
- this.active = 0;
- this.index = 0;
- }
- MergeMapSubscriber.prototype._next = function (value) {
- if (this.active < this.concurrent) {
- this._tryNext(value);
- }
- else {
- this.buffer.push(value);
- }
- };
- MergeMapSubscriber.prototype._tryNext = function (value) {
- var result;
- var index = this.index++;
- try {
- result = this.project(value, index);
- }
- catch (err) {
- this.destination.error(err);
- return;
- }
- this.active++;
- this._innerSub(result, value, index);
- };
- MergeMapSubscriber.prototype._innerSub = function (ish, value, index) {
- this.add(subscribeToResult_1.subscribeToResult(this, ish, value, index));
- };
- MergeMapSubscriber.prototype._complete = function () {
- this.hasCompleted = true;
- if (this.active === 0 && this.buffer.length === 0) {
- this.destination.complete();
- }
- };
- MergeMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
- if (this.resultSelector) {
- this._notifyResultSelector(outerValue, innerValue, outerIndex, innerIndex);
- }
- else {
- this.destination.next(innerValue);
- }
- };
- MergeMapSubscriber.prototype._notifyResultSelector = function (outerValue, innerValue, outerIndex, innerIndex) {
- var result;
- try {
- result = this.resultSelector(outerValue, innerValue, outerIndex, innerIndex);
- }
- catch (err) {
- this.destination.error(err);
- return;
- }
- this.destination.next(result);
- };
- MergeMapSubscriber.prototype.notifyComplete = function (innerSub) {
- var buffer = this.buffer;
- this.remove(innerSub);
- this.active--;
- if (buffer.length > 0) {
- this._next(buffer.shift());
- }
- else if (this.active === 0 && this.hasCompleted) {
- this.destination.complete();
- }
- };
- return MergeMapSubscriber;
- }(OuterSubscriber_1.OuterSubscriber));
- exports.MergeMapSubscriber = MergeMapSubscriber;
- //# sourceMappingURL=mergeMap.js.map
-
- /***/ }),
- /* 16 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var EmptyObservable_1 = __webpack_require__(28);
- exports.empty = EmptyObservable_1.EmptyObservable.create;
- //# sourceMappingURL=empty.js.map
-
- /***/ }),
- /* 17 */
- /***/ (function(module, exports, __webpack_require__) {
-
-
- /**
- * Expose `Emitter`.
- */
-
- if (true) {
- module.exports = Emitter;
- }
-
- /**
- * Initialize a new `Emitter`.
- *
- * @api public
- */
-
- function Emitter(obj) {
- if (obj) return mixin(obj);
- };
-
- /**
- * Mixin the emitter properties.
- *
- * @param {Object} obj
- * @return {Object}
- * @api private
- */
-
- function mixin(obj) {
- for (var key in Emitter.prototype) {
- obj[key] = Emitter.prototype[key];
- }
- return obj;
- }
-
- /**
- * Listen on the given `event` with `fn`.
- *
- * @param {String} event
- * @param {Function} fn
- * @return {Emitter}
- * @api public
- */
-
- Emitter.prototype.on =
- Emitter.prototype.addEventListener = function(event, fn){
- this._callbacks = this._callbacks || {};
- (this._callbacks['$' + event] = this._callbacks['$' + event] || [])
- .push(fn);
- return this;
- };
-
- /**
- * Adds an `event` listener that will be invoked a single
- * time then automatically removed.
- *
- * @param {String} event
- * @param {Function} fn
- * @return {Emitter}
- * @api public
- */
-
- Emitter.prototype.once = function(event, fn){
- function on() {
- this.off(event, on);
- fn.apply(this, arguments);
- }
-
- on.fn = fn;
- this.on(event, on);
- return this;
- };
-
- /**
- * Remove the given callback for `event` or all
- * registered callbacks.
- *
- * @param {String} event
- * @param {Function} fn
- * @return {Emitter}
- * @api public
- */
-
- Emitter.prototype.off =
- Emitter.prototype.removeListener =
- Emitter.prototype.removeAllListeners =
- Emitter.prototype.removeEventListener = function(event, fn){
- this._callbacks = this._callbacks || {};
-
- // all
- if (0 == arguments.length) {
- this._callbacks = {};
- return this;
- }
-
- // specific event
- var callbacks = this._callbacks['$' + event];
- if (!callbacks) return this;
-
- // remove all handlers
- if (1 == arguments.length) {
- delete this._callbacks['$' + event];
- return this;
- }
-
- // remove specific handler
- var cb;
- for (var i = 0; i < callbacks.length; i++) {
- cb = callbacks[i];
- if (cb === fn || cb.fn === fn) {
- callbacks.splice(i, 1);
- break;
- }
- }
- return this;
- };
-
- /**
- * Emit `event` with the given args.
- *
- * @param {String} event
- * @param {Mixed} ...
- * @return {Emitter}
- */
-
- Emitter.prototype.emit = function(event){
- this._callbacks = this._callbacks || {};
- var args = [].slice.call(arguments, 1)
- , callbacks = this._callbacks['$' + event];
-
- if (callbacks) {
- callbacks = callbacks.slice(0);
- for (var i = 0, len = callbacks.length; i < len; ++i) {
- callbacks[i].apply(this, args);
- }
- }
-
- return this;
- };
-
- /**
- * Return array of callbacks for `event`.
- *
- * @param {String} event
- * @return {Array}
- * @api public
- */
-
- Emitter.prototype.listeners = function(event){
- this._callbacks = this._callbacks || {};
- return this._callbacks['$' + event] || [];
- };
-
- /**
- * Check if this emitter has `event` handlers.
- *
- * @param {String} event
- * @return {Boolean}
- * @api public
- */
-
- Emitter.prototype.hasListeners = function(event){
- return !! this.listeners(event).length;
- };
-
-
- /***/ }),
- /* 18 */
- /***/ (function(module, exports, __webpack_require__) {
-
- /**
- * Module dependencies.
- */
-
- var keys = __webpack_require__(121);
- var hasBinary = __webpack_require__(67);
- var sliceBuffer = __webpack_require__(123);
- var after = __webpack_require__(124);
- var utf8 = __webpack_require__(125);
-
- var base64encoder;
- if (typeof ArrayBuffer !== 'undefined') {
- base64encoder = __webpack_require__(126);
- }
-
- /**
- * Check if we are running an android browser. That requires us to use
- * ArrayBuffer with polling transports...
- *
- * http://ghinda.net/jpeg-blob-ajax-android/
- */
-
- var isAndroid = typeof navigator !== 'undefined' && /Android/i.test(navigator.userAgent);
-
- /**
- * Check if we are running in PhantomJS.
- * Uploading a Blob with PhantomJS does not work correctly, as reported here:
- * https://github.com/ariya/phantomjs/issues/11395
- * @type boolean
- */
- var isPhantomJS = typeof navigator !== 'undefined' && /PhantomJS/i.test(navigator.userAgent);
-
- /**
- * When true, avoids using Blobs to encode payloads.
- * @type boolean
- */
- var dontSendBlobs = isAndroid || isPhantomJS;
-
- /**
- * Current protocol version.
- */
-
- exports.protocol = 3;
-
- /**
- * Packet types.
- */
-
- var packets = exports.packets = {
- open: 0 // non-ws
- , close: 1 // non-ws
- , ping: 2
- , pong: 3
- , message: 4
- , upgrade: 5
- , noop: 6
- };
-
- var packetslist = keys(packets);
-
- /**
- * Premade error packet.
- */
-
- var err = { type: 'error', data: 'parser error' };
-
- /**
- * Create a blob api even for blob builder when vendor prefixes exist
- */
-
- var Blob = __webpack_require__(127);
-
- /**
- * Encodes a packet.
- *
- * <packet type id> [ <data> ]
- *
- * Example:
- *
- * 5hello world
- * 3
- * 4
- *
- * Binary is encoded in an identical principle
- *
- * @api private
- */
-
- exports.encodePacket = function (packet, supportsBinary, utf8encode, callback) {
- if (typeof supportsBinary === 'function') {
- callback = supportsBinary;
- supportsBinary = false;
- }
-
- if (typeof utf8encode === 'function') {
- callback = utf8encode;
- utf8encode = null;
- }
-
- var data = (packet.data === undefined)
- ? undefined
- : packet.data.buffer || packet.data;
-
- if (typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer) {
- return encodeArrayBuffer(packet, supportsBinary, callback);
- } else if (typeof Blob !== 'undefined' && data instanceof Blob) {
- return encodeBlob(packet, supportsBinary, callback);
- }
-
- // might be an object with { base64: true, data: dataAsBase64String }
- if (data && data.base64) {
- return encodeBase64Object(packet, callback);
- }
-
- // Sending data as a utf-8 string
- var encoded = packets[packet.type];
-
- // data fragment is optional
- if (undefined !== packet.data) {
- encoded += utf8encode ? utf8.encode(String(packet.data), { strict: false }) : String(packet.data);
- }
-
- return callback('' + encoded);
-
- };
-
- function encodeBase64Object(packet, callback) {
- // packet data is an object { base64: true, data: dataAsBase64String }
- var message = 'b' + exports.packets[packet.type] + packet.data.data;
- return callback(message);
- }
-
- /**
- * Encode packet helpers for binary types
- */
-
- function encodeArrayBuffer(packet, supportsBinary, callback) {
- if (!supportsBinary) {
- return exports.encodeBase64Packet(packet, callback);
- }
-
- var data = packet.data;
- var contentArray = new Uint8Array(data);
- var resultBuffer = new Uint8Array(1 + data.byteLength);
-
- resultBuffer[0] = packets[packet.type];
- for (var i = 0; i < contentArray.length; i++) {
- resultBuffer[i+1] = contentArray[i];
- }
-
- return callback(resultBuffer.buffer);
- }
-
- function encodeBlobAsArrayBuffer(packet, supportsBinary, callback) {
- if (!supportsBinary) {
- return exports.encodeBase64Packet(packet, callback);
- }
-
- var fr = new FileReader();
- fr.onload = function() {
- exports.encodePacket({ type: packet.type, data: fr.result }, supportsBinary, true, callback);
- };
- return fr.readAsArrayBuffer(packet.data);
- }
-
- function encodeBlob(packet, supportsBinary, callback) {
- if (!supportsBinary) {
- return exports.encodeBase64Packet(packet, callback);
- }
-
- if (dontSendBlobs) {
- return encodeBlobAsArrayBuffer(packet, supportsBinary, callback);
- }
-
- var length = new Uint8Array(1);
- length[0] = packets[packet.type];
- var blob = new Blob([length.buffer, packet.data]);
-
- return callback(blob);
- }
-
- /**
- * Encodes a packet with binary data in a base64 string
- *
- * @param {Object} packet, has `type` and `data`
- * @return {String} base64 encoded message
- */
-
- exports.encodeBase64Packet = function(packet, callback) {
- var message = 'b' + exports.packets[packet.type];
- if (typeof Blob !== 'undefined' && packet.data instanceof Blob) {
- var fr = new FileReader();
- fr.onload = function() {
- var b64 = fr.result.split(',')[1];
- callback(message + b64);
- };
- return fr.readAsDataURL(packet.data);
- }
-
- var b64data;
- try {
- b64data = String.fromCharCode.apply(null, new Uint8Array(packet.data));
- } catch (e) {
- // iPhone Safari doesn't let you apply with typed arrays
- var typed = new Uint8Array(packet.data);
- var basic = new Array(typed.length);
- for (var i = 0; i < typed.length; i++) {
- basic[i] = typed[i];
- }
- b64data = String.fromCharCode.apply(null, basic);
- }
- message += btoa(b64data);
- return callback(message);
- };
-
- /**
- * Decodes a packet. Changes format to Blob if requested.
- *
- * @return {Object} with `type` and `data` (if any)
- * @api private
- */
-
- exports.decodePacket = function (data, binaryType, utf8decode) {
- if (data === undefined) {
- return err;
- }
- // String data
- if (typeof data === 'string') {
- if (data.charAt(0) === 'b') {
- return exports.decodeBase64Packet(data.substr(1), binaryType);
- }
-
- if (utf8decode) {
- data = tryDecode(data);
- if (data === false) {
- return err;
- }
- }
- var type = data.charAt(0);
-
- if (Number(type) != type || !packetslist[type]) {
- return err;
- }
-
- if (data.length > 1) {
- return { type: packetslist[type], data: data.substring(1) };
- } else {
- return { type: packetslist[type] };
- }
- }
-
- var asArray = new Uint8Array(data);
- var type = asArray[0];
- var rest = sliceBuffer(data, 1);
- if (Blob && binaryType === 'blob') {
- rest = new Blob([rest]);
- }
- return { type: packetslist[type], data: rest };
- };
-
- function tryDecode(data) {
- try {
- data = utf8.decode(data, { strict: false });
- } catch (e) {
- return false;
- }
- return data;
- }
-
- /**
- * Decodes a packet encoded in a base64 string
- *
- * @param {String} base64 encoded message
- * @return {Object} with `type` and `data` (if any)
- */
-
- exports.decodeBase64Packet = function(msg, binaryType) {
- var type = packetslist[msg.charAt(0)];
- if (!base64encoder) {
- return { type: type, data: { base64: true, data: msg.substr(1) } };
- }
-
- var data = base64encoder.decode(msg.substr(1));
-
- if (binaryType === 'blob' && Blob) {
- data = new Blob([data]);
- }
-
- return { type: type, data: data };
- };
-
- /**
- * Encodes multiple messages (payload).
- *
- * <length>:data
- *
- * Example:
- *
- * 11:hello world2:hi
- *
- * If any contents are binary, they will be encoded as base64 strings. Base64
- * encoded strings are marked with a b before the length specifier
- *
- * @param {Array} packets
- * @api private
- */
-
- exports.encodePayload = function (packets, supportsBinary, callback) {
- if (typeof supportsBinary === 'function') {
- callback = supportsBinary;
- supportsBinary = null;
- }
-
- var isBinary = hasBinary(packets);
-
- if (supportsBinary && isBinary) {
- if (Blob && !dontSendBlobs) {
- return exports.encodePayloadAsBlob(packets, callback);
- }
-
- return exports.encodePayloadAsArrayBuffer(packets, callback);
- }
-
- if (!packets.length) {
- return callback('0:');
- }
-
- function setLengthHeader(message) {
- return message.length + ':' + message;
- }
-
- function encodeOne(packet, doneCallback) {
- exports.encodePacket(packet, !isBinary ? false : supportsBinary, false, function(message) {
- doneCallback(null, setLengthHeader(message));
- });
- }
-
- map(packets, encodeOne, function(err, results) {
- return callback(results.join(''));
- });
- };
-
- /**
- * Async array map using after
- */
-
- function map(ary, each, done) {
- var result = new Array(ary.length);
- var next = after(ary.length, done);
-
- var eachWithIndex = function(i, el, cb) {
- each(el, function(error, msg) {
- result[i] = msg;
- cb(error, result);
- });
- };
-
- for (var i = 0; i < ary.length; i++) {
- eachWithIndex(i, ary[i], next);
- }
- }
-
- /*
- * Decodes data when a payload is maybe expected. Possible binary contents are
- * decoded from their base64 representation
- *
- * @param {String} data, callback method
- * @api public
- */
-
- exports.decodePayload = function (data, binaryType, callback) {
- if (typeof data !== 'string') {
- return exports.decodePayloadAsBinary(data, binaryType, callback);
- }
-
- if (typeof binaryType === 'function') {
- callback = binaryType;
- binaryType = null;
- }
-
- var packet;
- if (data === '') {
- // parser error - ignoring payload
- return callback(err, 0, 1);
- }
-
- var length = '', n, msg;
-
- for (var i = 0, l = data.length; i < l; i++) {
- var chr = data.charAt(i);
-
- if (chr !== ':') {
- length += chr;
- continue;
- }
-
- if (length === '' || (length != (n = Number(length)))) {
- // parser error - ignoring payload
- return callback(err, 0, 1);
- }
-
- msg = data.substr(i + 1, n);
-
- if (length != msg.length) {
- // parser error - ignoring payload
- return callback(err, 0, 1);
- }
-
- if (msg.length) {
- packet = exports.decodePacket(msg, binaryType, false);
-
- if (err.type === packet.type && err.data === packet.data) {
- // parser error in individual packet - ignoring payload
- return callback(err, 0, 1);
- }
-
- var ret = callback(packet, i + n, l);
- if (false === ret) return;
- }
-
- // advance cursor
- i += n;
- length = '';
- }
-
- if (length !== '') {
- // parser error - ignoring payload
- return callback(err, 0, 1);
- }
-
- };
-
- /**
- * Encodes multiple messages (payload) as binary.
- *
- * <1 = binary, 0 = string><number from 0-9><number from 0-9>[...]<number
- * 255><data>
- *
- * Example:
- * 1 3 255 1 2 3, if the binary contents are interpreted as 8 bit integers
- *
- * @param {Array} packets
- * @return {ArrayBuffer} encoded payload
- * @api private
- */
-
- exports.encodePayloadAsArrayBuffer = function(packets, callback) {
- if (!packets.length) {
- return callback(new ArrayBuffer(0));
- }
-
- function encodeOne(packet, doneCallback) {
- exports.encodePacket(packet, true, true, function(data) {
- return doneCallback(null, data);
- });
- }
-
- map(packets, encodeOne, function(err, encodedPackets) {
- var totalLength = encodedPackets.reduce(function(acc, p) {
- var len;
- if (typeof p === 'string'){
- len = p.length;
- } else {
- len = p.byteLength;
- }
- return acc + len.toString().length + len + 2; // string/binary identifier + separator = 2
- }, 0);
-
- var resultArray = new Uint8Array(totalLength);
-
- var bufferIndex = 0;
- encodedPackets.forEach(function(p) {
- var isString = typeof p === 'string';
- var ab = p;
- if (isString) {
- var view = new Uint8Array(p.length);
- for (var i = 0; i < p.length; i++) {
- view[i] = p.charCodeAt(i);
- }
- ab = view.buffer;
- }
-
- if (isString) { // not true binary
- resultArray[bufferIndex++] = 0;
- } else { // true binary
- resultArray[bufferIndex++] = 1;
- }
-
- var lenStr = ab.byteLength.toString();
- for (var i = 0; i < lenStr.length; i++) {
- resultArray[bufferIndex++] = parseInt(lenStr[i]);
- }
- resultArray[bufferIndex++] = 255;
-
- var view = new Uint8Array(ab);
- for (var i = 0; i < view.length; i++) {
- resultArray[bufferIndex++] = view[i];
- }
- });
-
- return callback(resultArray.buffer);
- });
- };
-
- /**
- * Encode as Blob
- */
-
- exports.encodePayloadAsBlob = function(packets, callback) {
- function encodeOne(packet, doneCallback) {
- exports.encodePacket(packet, true, true, function(encoded) {
- var binaryIdentifier = new Uint8Array(1);
- binaryIdentifier[0] = 1;
- if (typeof encoded === 'string') {
- var view = new Uint8Array(encoded.length);
- for (var i = 0; i < encoded.length; i++) {
- view[i] = encoded.charCodeAt(i);
- }
- encoded = view.buffer;
- binaryIdentifier[0] = 0;
- }
-
- var len = (encoded instanceof ArrayBuffer)
- ? encoded.byteLength
- : encoded.size;
-
- var lenStr = len.toString();
- var lengthAry = new Uint8Array(lenStr.length + 1);
- for (var i = 0; i < lenStr.length; i++) {
- lengthAry[i] = parseInt(lenStr[i]);
- }
- lengthAry[lenStr.length] = 255;
-
- if (Blob) {
- var blob = new Blob([binaryIdentifier.buffer, lengthAry.buffer, encoded]);
- doneCallback(null, blob);
- }
- });
- }
-
- map(packets, encodeOne, function(err, results) {
- return callback(new Blob(results));
- });
- };
-
- /*
- * Decodes data when a payload is maybe expected. Strings are decoded by
- * interpreting each byte as a key code for entries marked to start with 0. See
- * description of encodePayloadAsBinary
- *
- * @param {ArrayBuffer} data, callback method
- * @api public
- */
-
- exports.decodePayloadAsBinary = function (data, binaryType, callback) {
- if (typeof binaryType === 'function') {
- callback = binaryType;
- binaryType = null;
- }
-
- var bufferTail = data;
- var buffers = [];
-
- while (bufferTail.byteLength > 0) {
- var tailArray = new Uint8Array(bufferTail);
- var isString = tailArray[0] === 0;
- var msgLength = '';
-
- for (var i = 1; ; i++) {
- if (tailArray[i] === 255) break;
-
- // 310 = char length of Number.MAX_VALUE
- if (msgLength.length > 310) {
- return callback(err, 0, 1);
- }
-
- msgLength += tailArray[i];
- }
-
- bufferTail = sliceBuffer(bufferTail, 2 + msgLength.length);
- msgLength = parseInt(msgLength);
-
- var msg = sliceBuffer(bufferTail, 0, msgLength);
- if (isString) {
- try {
- msg = String.fromCharCode.apply(null, new Uint8Array(msg));
- } catch (e) {
- // iPhone Safari doesn't let you apply to typed arrays
- var typed = new Uint8Array(msg);
- msg = '';
- for (var i = 0; i < typed.length; i++) {
- msg += String.fromCharCode(typed[i]);
- }
- }
- }
-
- buffers.push(msg);
- bufferTail = sliceBuffer(bufferTail, msgLength);
- }
-
- var total = buffers.length;
- buffers.forEach(function(buffer, i) {
- callback(exports.decodePacket(buffer, binaryType, true), i, total);
- });
- };
-
-
- /***/ }),
- /* 19 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var _a;
- var BehaviorSubject_1 = __webpack_require__(13);
- var prop_set_dom_effect_1 = __webpack_require__(76);
- var style_set_dom_effect_1 = __webpack_require__(81);
- var link_replace_dom_effect_1 = __webpack_require__(82);
- var set_scroll_dom_effect_1 = __webpack_require__(83);
- var set_window_name_dom_effect_1 = __webpack_require__(84);
- var Events;
- (function (Events) {
- Events["PropSet"] = "@@BSDOM.Events.PropSet";
- Events["StyleSet"] = "@@BSDOM.Events.StyleSet";
- Events["LinkReplace"] = "@@BSDOM.Events.LinkReplace";
- Events["SetScroll"] = "@@BSDOM.Events.SetScroll";
- Events["SetWindowName"] = "@@BSDOM.Events.SetWindowName";
- })(Events = exports.Events || (exports.Events = {}));
- exports.domHandlers$ = new BehaviorSubject_1.BehaviorSubject((_a = {},
- _a[Events.PropSet] = prop_set_dom_effect_1.propSetDomEffect,
- _a[Events.StyleSet] = style_set_dom_effect_1.styleSetDomEffect,
- _a[Events.LinkReplace] = link_replace_dom_effect_1.linkReplaceDomEffect,
- _a[Events.SetScroll] = set_scroll_dom_effect_1.setScrollDomEffect,
- _a[Events.SetWindowName] = set_window_name_dom_effect_1.setWindowNameDomEffect,
- _a));
-
-
- /***/ }),
- /* 20 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var OuterSubscriber_1 = __webpack_require__(29);
- var subscribeToResult_1 = __webpack_require__(30);
- /* tslint:enable:max-line-length */
- /**
- * Projects each source value to an Observable which is merged in the output
- * Observable, emitting values only from the most recently projected Observable.
- *
- * <span class="informal">Maps each value to an Observable, then flattens all of
- * these inner Observables using {@link switch}.</span>
- *
- * <img src="./img/switchMap.png" width="100%">
- *
- * Returns an Observable that emits items based on applying a function that you
- * supply to each item emitted by the source Observable, where that function
- * returns an (so-called "inner") Observable. Each time it observes one of these
- * inner Observables, the output Observable begins emitting the items emitted by
- * that inner Observable. When a new inner Observable is emitted, `switchMap`
- * stops emitting items from the earlier-emitted inner Observable and begins
- * emitting items from the new one. It continues to behave like this for
- * subsequent inner Observables.
- *
- * @example <caption>Rerun an interval Observable on every click event</caption>
- * var clicks = Rx.Observable.fromEvent(document, 'click');
- * var result = clicks.switchMap((ev) => Rx.Observable.interval(1000));
- * result.subscribe(x => console.log(x));
- *
- * @see {@link concatMap}
- * @see {@link exhaustMap}
- * @see {@link mergeMap}
- * @see {@link switch}
- * @see {@link switchMapTo}
- *
- * @param {function(value: T, ?index: number): ObservableInput} project A function
- * that, when applied to an item emitted by the source Observable, returns an
- * Observable.
- * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any} [resultSelector]
- * A function to produce the value on the output Observable based on the values
- * and the indices of the source (outer) emission and the inner Observable
- * emission. The arguments passed to this function are:
- * - `outerValue`: the value that came from the source
- * - `innerValue`: the value that came from the projected Observable
- * - `outerIndex`: the "index" of the value that came from the source
- * - `innerIndex`: the "index" of the value from the projected Observable
- * @return {Observable} An Observable that emits the result of applying the
- * projection function (and the optional `resultSelector`) to each item emitted
- * by the source Observable and taking only the values from the most recently
- * projected inner Observable.
- * @method switchMap
- * @owner Observable
- */
- function switchMap(project, resultSelector) {
- return function switchMapOperatorFunction(source) {
- return source.lift(new SwitchMapOperator(project, resultSelector));
- };
- }
- exports.switchMap = switchMap;
- var SwitchMapOperator = (function () {
- function SwitchMapOperator(project, resultSelector) {
- this.project = project;
- this.resultSelector = resultSelector;
- }
- SwitchMapOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new SwitchMapSubscriber(subscriber, this.project, this.resultSelector));
- };
- return SwitchMapOperator;
- }());
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @ignore
- * @extends {Ignored}
- */
- var SwitchMapSubscriber = (function (_super) {
- __extends(SwitchMapSubscriber, _super);
- function SwitchMapSubscriber(destination, project, resultSelector) {
- _super.call(this, destination);
- this.project = project;
- this.resultSelector = resultSelector;
- this.index = 0;
- }
- SwitchMapSubscriber.prototype._next = function (value) {
- var result;
- var index = this.index++;
- try {
- result = this.project(value, index);
- }
- catch (error) {
- this.destination.error(error);
- return;
- }
- this._innerSub(result, value, index);
- };
- SwitchMapSubscriber.prototype._innerSub = function (result, value, index) {
- var innerSubscription = this.innerSubscription;
- if (innerSubscription) {
- innerSubscription.unsubscribe();
- }
- this.add(this.innerSubscription = subscribeToResult_1.subscribeToResult(this, result, value, index));
- };
- SwitchMapSubscriber.prototype._complete = function () {
- var innerSubscription = this.innerSubscription;
- if (!innerSubscription || innerSubscription.closed) {
- _super.prototype._complete.call(this);
- }
- };
- /** @deprecated internal use only */ SwitchMapSubscriber.prototype._unsubscribe = function () {
- this.innerSubscription = null;
- };
- SwitchMapSubscriber.prototype.notifyComplete = function (innerSub) {
- this.remove(innerSub);
- this.innerSubscription = null;
- if (this.isStopped) {
- _super.prototype._complete.call(this);
- }
- };
- SwitchMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
- if (this.resultSelector) {
- this._tryNotifyNext(outerValue, innerValue, outerIndex, innerIndex);
- }
- else {
- this.destination.next(innerValue);
- }
- };
- SwitchMapSubscriber.prototype._tryNotifyNext = function (outerValue, innerValue, outerIndex, innerIndex) {
- var result;
- try {
- result = this.resultSelector(outerValue, innerValue, outerIndex, innerIndex);
- }
- catch (err) {
- this.destination.error(err);
- return;
- }
- this.destination.next(result);
- };
- return SwitchMapSubscriber;
- }(OuterSubscriber_1.OuterSubscriber));
- //# sourceMappingURL=switchMap.js.map
-
- /***/ }),
- /* 21 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var concat_1 = __webpack_require__(54);
- var timer_1 = __webpack_require__(52);
- var of_1 = __webpack_require__(9);
- var switchMap_1 = __webpack_require__(20);
- var startWith_1 = __webpack_require__(152);
- var mapTo_1 = __webpack_require__(88);
- function each(incoming) {
- return [].slice.call(incoming || []);
- }
- exports.each = each;
- exports.splitUrl = function (url) {
- var hash, index, params;
- if ((index = url.indexOf("#")) >= 0) {
- hash = url.slice(index);
- url = url.slice(0, index);
- }
- else {
- hash = "";
- }
- if ((index = url.indexOf("?")) >= 0) {
- params = url.slice(index);
- url = url.slice(0, index);
- }
- else {
- params = "";
- }
- return { url: url, params: params, hash: hash };
- };
- exports.pathFromUrl = function (url) {
- var path;
- (url = exports.splitUrl(url).url);
- if (url.indexOf("file://") === 0) {
- path = url.replace(new RegExp("^file://(localhost)?"), "");
- }
- else {
- // http : // hostname :8080 /
- path = url.replace(new RegExp("^([^:]+:)?//([^:/]+)(:\\d*)?/"), "/");
- }
- // decodeURI has special handling of stuff like semicolons, so use decodeURIComponent
- return decodeURIComponent(path);
- };
- exports.pickBestMatch = function (path, objects, pathFunc) {
- var score;
- var bestMatch = { score: 0, object: null };
- objects.forEach(function (object) {
- score = exports.numberOfMatchingSegments(path, pathFunc(object));
- if (score > bestMatch.score) {
- bestMatch = { object: object, score: score };
- }
- });
- if (bestMatch.score > 0) {
- return bestMatch;
- }
- else {
- return null;
- }
- };
- exports.numberOfMatchingSegments = function (path1, path2) {
- path1 = normalisePath(path1);
- path2 = normalisePath(path2);
- if (path1 === path2) {
- return 10000;
- }
- var comps1 = path1.split("/").reverse();
- var comps2 = path2.split("/").reverse();
- var len = Math.min(comps1.length, comps2.length);
- var eqCount = 0;
- while (eqCount < len && comps1[eqCount] === comps2[eqCount]) {
- ++eqCount;
- }
- return eqCount;
- };
- exports.pathsMatch = function (path1, path2) {
- return exports.numberOfMatchingSegments(path1, path2) > 0;
- };
- function getLocation(url) {
- var location = document.createElement("a");
- location.href = url;
- if (location.host === "") {
- location.href = location.href;
- }
- return location;
- }
- exports.getLocation = getLocation;
- /**
- * @param {string} search
- * @param {string} key
- * @param {string} suffix
- */
- function updateSearch(search, key, suffix) {
- if (search === "") {
- return "?" + suffix;
- }
- return ("?" +
- search
- .slice(1)
- .split("&")
- .map(function (item) {
- return item.split("=");
- })
- .filter(function (tuple) {
- return tuple[0] !== key;
- })
- .map(function (item) {
- return [item[0], item[1]].join("=");
- })
- .concat(suffix)
- .join("&"));
- }
- exports.updateSearch = updateSearch;
- var blacklist = [
- // never allow .map files through
- function (incoming) {
- return incoming.ext === "map";
- }
- ];
- /**
- * @param incoming
- * @returns {boolean}
- */
- function isBlacklisted(incoming) {
- return blacklist.some(function (fn) {
- return fn(incoming);
- });
- }
- exports.isBlacklisted = isBlacklisted;
- function createTimedBooleanSwitch(source$, timeout) {
- if (timeout === void 0) { timeout = 1000; }
- return source$.pipe(switchMap_1.switchMap(function () {
- return concat_1.concat(of_1.of(false), timer_1.timer(timeout).pipe(mapTo_1.mapTo(true)));
- }), startWith_1.startWith(true));
- }
- exports.createTimedBooleanSwitch = createTimedBooleanSwitch;
- function array(incoming) {
- return [].slice.call(incoming);
- }
- exports.array = array;
- function normalisePath(path) {
- return path
- .replace(/^\/+/, "")
- .replace(/\\/g, "/")
- .toLowerCase();
- }
- exports.normalisePath = normalisePath;
-
-
- /***/ }),
- /* 22 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- function getWindow() {
- return window;
- }
- exports.getWindow = getWindow;
- /**
- * @returns {HTMLDocument}
- */
- function getDocument() {
- return document;
- }
- exports.getDocument = getDocument;
- /**
- * Get the current x/y position crossbow
- * @returns {{x: *, y: *}}
- */
- function getBrowserScrollPosition(window, document) {
- var scrollX;
- var scrollY;
- var dElement = document.documentElement;
- var dBody = document.body;
- if (window.pageYOffset !== undefined) {
- scrollX = window.pageXOffset;
- scrollY = window.pageYOffset;
- }
- else {
- scrollX = dElement.scrollLeft || dBody.scrollLeft || 0;
- scrollY = dElement.scrollTop || dBody.scrollTop || 0;
- }
- return {
- x: scrollX,
- y: scrollY
- };
- }
- exports.getBrowserScrollPosition = getBrowserScrollPosition;
- /**
- * @returns {{x: number, y: number}}
- */
- function getDocumentScrollSpace(document) {
- var dElement = document.documentElement;
- var dBody = document.body;
- return {
- x: dBody.scrollHeight - dElement.clientWidth,
- y: dBody.scrollHeight - dElement.clientHeight
- };
- }
- exports.getDocumentScrollSpace = getDocumentScrollSpace;
- /**
- * Saves scroll position into cookies
- */
- function saveScrollPosition(window, document) {
- var pos = getBrowserScrollPosition(window, document);
- document.cookie = "bs_scroll_pos=" + [pos.x, pos.y].join(",");
- }
- exports.saveScrollPosition = saveScrollPosition;
- /**
- * Restores scroll position from cookies
- */
- function restoreScrollPosition() {
- var pos = getDocument()
- .cookie.replace(/(?:(?:^|.*;\s*)bs_scroll_pos\s*\=\s*([^;]*).*$)|^.*$/, "$1")
- .split(",");
- getWindow().scrollTo(Number(pos[0]), Number(pos[1]));
- }
- exports.restoreScrollPosition = restoreScrollPosition;
- /**
- * @param tagName
- * @param elem
- * @returns {*|number}
- */
- function getElementIndex(tagName, elem) {
- var allElems = getDocument().getElementsByTagName(tagName);
- return Array.prototype.indexOf.call(allElems, elem);
- }
- exports.getElementIndex = getElementIndex;
- /**
- * Force Change event on radio & checkboxes (IE)
- */
- function forceChange(elem) {
- elem.blur();
- elem.focus();
- }
- exports.forceChange = forceChange;
- /**
- * @param elem
- * @returns {{tagName: (elem.tagName|*), index: *}}
- */
- function getElementData(elem) {
- var tagName = elem.tagName;
- var index = getElementIndex(tagName, elem);
- return {
- tagName: tagName,
- index: index
- };
- }
- exports.getElementData = getElementData;
- /**
- * @param {string} tagName
- * @param {number} index
- */
- function getSingleElement(tagName, index) {
- var elems = getDocument().getElementsByTagName(tagName);
- return elems[index];
- }
- exports.getSingleElement = getSingleElement;
- /**
- * Get the body element
- */
- function getBody() {
- return getDocument().getElementsByTagName("body")[0];
- }
- exports.getBody = getBody;
- /**
- * @param {{x: number, y: number}} pos
- */
- function setScroll(pos) {
- getWindow().scrollTo(pos.x, pos.y);
- }
- exports.setScroll = setScroll;
- /**
- * Hard reload
- */
- function reloadBrowser() {
- getWindow().location.reload(true);
- }
- exports.reloadBrowser = reloadBrowser;
- /**
- * Foreach polyfill
- * @param coll
- * @param fn
- */
- function forEach(coll, fn) {
- for (var i = 0, n = coll.length; i < n; i += 1) {
- fn(coll[i], i, coll);
- }
- }
- exports.forEach = forEach;
- /**
- * Are we dealing with old IE?
- * @returns {boolean}
- */
- function isOldIe() {
- return typeof getWindow().attachEvent !== "undefined";
- }
- exports.isOldIe = isOldIe;
- /**
- * Split the URL information
- * @returns {object}
- */
- function getLocation(url) {
- var location = getDocument().createElement("a");
- location.href = url;
- if (location.host === "") {
- location.href = location.href;
- }
- return location;
- }
- exports.getLocation = getLocation;
- /**
- * @param {String} val
- * @returns {boolean}
- */
- function isUndefined(val) {
- return "undefined" === typeof val;
- }
- exports.isUndefined = isUndefined;
- /**
- * @param obj
- * @param path
- */
- function getByPath(obj, path) {
- for (var i = 0, tempPath = path.split("."), len = tempPath.length; i < len; i++) {
- if (!obj || typeof obj !== "object") {
- return false;
- }
- obj = obj[tempPath[i]];
- }
- if (typeof obj === "undefined") {
- return false;
- }
- return obj;
- }
- exports.getByPath = getByPath;
- function getScrollPosition(window, document) {
- var pos = getBrowserScrollPosition(window, document);
- return {
- raw: pos,
- proportional: getScrollTopPercentage(pos, document) // Get % of y axis of scroll
- };
- }
- exports.getScrollPosition = getScrollPosition;
- function getScrollPositionForElement(element) {
- var raw = {
- x: element.scrollLeft,
- y: element.scrollTop
- };
- var scrollSpace = {
- x: element.scrollWidth,
- y: element.scrollHeight
- };
- return {
- raw: raw,
- proportional: getScrollPercentage(scrollSpace, raw).y // Get % of y axis of scroll
- };
- }
- exports.getScrollPositionForElement = getScrollPositionForElement;
- function getScrollTopPercentage(pos, document) {
- var scrollSpace = getDocumentScrollSpace(document);
- var percentage = getScrollPercentage(scrollSpace, pos);
- return percentage.y;
- }
- exports.getScrollTopPercentage = getScrollTopPercentage;
- function getScrollPercentage(scrollSpace, scrollPosition) {
- var x = scrollPosition.x / scrollSpace.x;
- var y = scrollPosition.y / scrollSpace.y;
- return {
- x: x || 0,
- y: y
- };
- }
- exports.getScrollPercentage = getScrollPercentage;
-
-
- /***/ }),
- /* 23 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var Observable_1 = __webpack_require__(1);
- var ScalarObservable_1 = __webpack_require__(46);
- var EmptyObservable_1 = __webpack_require__(28);
- var isScheduler_1 = __webpack_require__(25);
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @extends {Ignored}
- * @hide true
- */
- var ArrayObservable = (function (_super) {
- __extends(ArrayObservable, _super);
- function ArrayObservable(array, scheduler) {
- _super.call(this);
- this.array = array;
- this.scheduler = scheduler;
- if (!scheduler && array.length === 1) {
- this._isScalar = true;
- this.value = array[0];
- }
- }
- ArrayObservable.create = function (array, scheduler) {
- return new ArrayObservable(array, scheduler);
- };
- /**
- * Creates an Observable that emits some values you specify as arguments,
- * immediately one after the other, and then emits a complete notification.
- *
- * <span class="informal">Emits the arguments you provide, then completes.
- * </span>
- *
- * <img src="./img/of.png" width="100%">
- *
- * This static operator is useful for creating a simple Observable that only
- * emits the arguments given, and the complete notification thereafter. It can
- * be used for composing with other Observables, such as with {@link concat}.
- * By default, it uses a `null` IScheduler, which means the `next`
- * notifications are sent synchronously, although with a different IScheduler
- * it is possible to determine when those notifications will be delivered.
- *
- * @example <caption>Emit 10, 20, 30, then 'a', 'b', 'c', then start ticking every second.</caption>
- * var numbers = Rx.Observable.of(10, 20, 30);
- * var letters = Rx.Observable.of('a', 'b', 'c');
- * var interval = Rx.Observable.interval(1000);
- * var result = numbers.concat(letters).concat(interval);
- * result.subscribe(x => console.log(x));
- *
- * @see {@link create}
- * @see {@link empty}
- * @see {@link never}
- * @see {@link throw}
- *
- * @param {...T} values Arguments that represent `next` values to be emitted.
- * @param {Scheduler} [scheduler] A {@link IScheduler} to use for scheduling
- * the emissions of the `next` notifications.
- * @return {Observable<T>} An Observable that emits each given input value.
- * @static true
- * @name of
- * @owner Observable
- */
- ArrayObservable.of = function () {
- var array = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- array[_i - 0] = arguments[_i];
- }
- var scheduler = array[array.length - 1];
- if (isScheduler_1.isScheduler(scheduler)) {
- array.pop();
- }
- else {
- scheduler = null;
- }
- var len = array.length;
- if (len > 1) {
- return new ArrayObservable(array, scheduler);
- }
- else if (len === 1) {
- return new ScalarObservable_1.ScalarObservable(array[0], scheduler);
- }
- else {
- return new EmptyObservable_1.EmptyObservable(scheduler);
- }
- };
- ArrayObservable.dispatch = function (state) {
- var array = state.array, index = state.index, count = state.count, subscriber = state.subscriber;
- if (index >= count) {
- subscriber.complete();
- return;
- }
- subscriber.next(array[index]);
- if (subscriber.closed) {
- return;
- }
- state.index = index + 1;
- this.schedule(state);
- };
- /** @deprecated internal use only */ ArrayObservable.prototype._subscribe = function (subscriber) {
- var index = 0;
- var array = this.array;
- var count = array.length;
- var scheduler = this.scheduler;
- if (scheduler) {
- return scheduler.schedule(ArrayObservable.dispatch, 0, {
- array: array, index: index, count: count, subscriber: subscriber
- });
- }
- else {
- for (var i = 0; i < count && !subscriber.closed; i++) {
- subscriber.next(array[i]);
- }
- subscriber.complete();
- }
- };
- return ArrayObservable;
- }(Observable_1.Observable));
- exports.ArrayObservable = ArrayObservable;
- //# sourceMappingURL=ArrayObservable.js.map
-
- /***/ }),
- /* 24 */
- /***/ (function(module, exports) {
-
- var g;
-
- // This works in non-strict mode
- g = (function() {
- return this;
- })();
-
- try {
- // This works if eval is allowed (see CSP)
- g = g || Function("return this")() || (1,eval)("this");
- } catch(e) {
- // This works if the window reference is available
- if(typeof window === "object")
- g = window;
- }
-
- // g can still be undefined, but nothing to do about it...
- // We return undefined, instead of nothing here, so it's
- // easier to handle this case. if(!global) { ...}
-
- module.exports = g;
-
-
- /***/ }),
- /* 25 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- function isScheduler(value) {
- return value && typeof value.schedule === 'function';
- }
- exports.isScheduler = isScheduler;
- //# sourceMappingURL=isScheduler.js.map
-
- /***/ }),
- /* 26 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- exports.isArray = Array.isArray || (function (x) { return x && typeof x.length === 'number'; });
- //# sourceMappingURL=isArray.js.map
-
- /***/ }),
- /* 27 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- // typeof any so that it we don't have to cast when comparing a result to the error object
- exports.errorObject = { e: {} };
- //# sourceMappingURL=errorObject.js.map
-
- /***/ }),
- /* 28 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var Observable_1 = __webpack_require__(1);
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @extends {Ignored}
- * @hide true
- */
- var EmptyObservable = (function (_super) {
- __extends(EmptyObservable, _super);
- function EmptyObservable(scheduler) {
- _super.call(this);
- this.scheduler = scheduler;
- }
- /**
- * Creates an Observable that emits no items to the Observer and immediately
- * emits a complete notification.
- *
- * <span class="informal">Just emits 'complete', and nothing else.
- * </span>
- *
- * <img src="./img/empty.png" width="100%">
- *
- * This static operator is useful for creating a simple Observable that only
- * emits the complete notification. It can be used for composing with other
- * Observables, such as in a {@link mergeMap}.
- *
- * @example <caption>Emit the number 7, then complete.</caption>
- * var result = Rx.Observable.empty().startWith(7);
- * result.subscribe(x => console.log(x));
- *
- * @example <caption>Map and flatten only odd numbers to the sequence 'a', 'b', 'c'</caption>
- * var interval = Rx.Observable.interval(1000);
- * var result = interval.mergeMap(x =>
- * x % 2 === 1 ? Rx.Observable.of('a', 'b', 'c') : Rx.Observable.empty()
- * );
- * result.subscribe(x => console.log(x));
- *
- * // Results in the following to the console:
- * // x is equal to the count on the interval eg(0,1,2,3,...)
- * // x will occur every 1000ms
- * // if x % 2 is equal to 1 print abc
- * // if x % 2 is not equal to 1 nothing will be output
- *
- * @see {@link create}
- * @see {@link never}
- * @see {@link of}
- * @see {@link throw}
- *
- * @param {Scheduler} [scheduler] A {@link IScheduler} to use for scheduling
- * the emission of the complete notification.
- * @return {Observable} An "empty" Observable: emits only the complete
- * notification.
- * @static true
- * @name empty
- * @owner Observable
- */
- EmptyObservable.create = function (scheduler) {
- return new EmptyObservable(scheduler);
- };
- EmptyObservable.dispatch = function (arg) {
- var subscriber = arg.subscriber;
- subscriber.complete();
- };
- /** @deprecated internal use only */ EmptyObservable.prototype._subscribe = function (subscriber) {
- var scheduler = this.scheduler;
- if (scheduler) {
- return scheduler.schedule(EmptyObservable.dispatch, 0, { subscriber: subscriber });
- }
- else {
- subscriber.complete();
- }
- };
- return EmptyObservable;
- }(Observable_1.Observable));
- exports.EmptyObservable = EmptyObservable;
- //# sourceMappingURL=EmptyObservable.js.map
-
- /***/ }),
- /* 29 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var Subscriber_1 = __webpack_require__(3);
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @ignore
- * @extends {Ignored}
- */
- var OuterSubscriber = (function (_super) {
- __extends(OuterSubscriber, _super);
- function OuterSubscriber() {
- _super.apply(this, arguments);
- }
- OuterSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
- this.destination.next(innerValue);
- };
- OuterSubscriber.prototype.notifyError = function (error, innerSub) {
- this.destination.error(error);
- };
- OuterSubscriber.prototype.notifyComplete = function (innerSub) {
- this.destination.complete();
- };
- return OuterSubscriber;
- }(Subscriber_1.Subscriber));
- exports.OuterSubscriber = OuterSubscriber;
- //# sourceMappingURL=OuterSubscriber.js.map
-
- /***/ }),
- /* 30 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var root_1 = __webpack_require__(7);
- var isArrayLike_1 = __webpack_require__(59);
- var isPromise_1 = __webpack_require__(60);
- var isObject_1 = __webpack_require__(56);
- var Observable_1 = __webpack_require__(1);
- var iterator_1 = __webpack_require__(31);
- var InnerSubscriber_1 = __webpack_require__(106);
- var observable_1 = __webpack_require__(45);
- function subscribeToResult(outerSubscriber, result, outerValue, outerIndex) {
- var destination = new InnerSubscriber_1.InnerSubscriber(outerSubscriber, outerValue, outerIndex);
- if (destination.closed) {
- return null;
- }
- if (result instanceof Observable_1.Observable) {
- if (result._isScalar) {
- destination.next(result.value);
- destination.complete();
- return null;
- }
- else {
- destination.syncErrorThrowable = true;
- return result.subscribe(destination);
- }
- }
- else if (isArrayLike_1.isArrayLike(result)) {
- for (var i = 0, len = result.length; i < len && !destination.closed; i++) {
- destination.next(result[i]);
- }
- if (!destination.closed) {
- destination.complete();
- }
- }
- else if (isPromise_1.isPromise(result)) {
- result.then(function (value) {
- if (!destination.closed) {
- destination.next(value);
- destination.complete();
- }
- }, function (err) { return destination.error(err); })
- .then(null, function (err) {
- // Escaping the Promise trap: globally throw unhandled errors
- root_1.root.setTimeout(function () { throw err; });
- });
- return destination;
- }
- else if (result && typeof result[iterator_1.iterator] === 'function') {
- var iterator = result[iterator_1.iterator]();
- do {
- var item = iterator.next();
- if (item.done) {
- destination.complete();
- break;
- }
- destination.next(item.value);
- if (destination.closed) {
- break;
- }
- } while (true);
- }
- else if (result && typeof result[observable_1.observable] === 'function') {
- var obs = result[observable_1.observable]();
- if (typeof obs.subscribe !== 'function') {
- destination.error(new TypeError('Provided object does not correctly implement Symbol.observable'));
- }
- else {
- return obs.subscribe(new InnerSubscriber_1.InnerSubscriber(outerSubscriber, outerValue, outerIndex));
- }
- }
- else {
- var value = isObject_1.isObject(result) ? 'an invalid object' : "'" + result + "'";
- var msg = ("You provided " + value + " where a stream was expected.")
- + ' You can provide an Observable, Promise, Array, or Iterable.';
- destination.error(new TypeError(msg));
- }
- return null;
- }
- exports.subscribeToResult = subscribeToResult;
- //# sourceMappingURL=subscribeToResult.js.map
-
- /***/ }),
- /* 31 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var root_1 = __webpack_require__(7);
- function symbolIteratorPonyfill(root) {
- var Symbol = root.Symbol;
- if (typeof Symbol === 'function') {
- if (!Symbol.iterator) {
- Symbol.iterator = Symbol('iterator polyfill');
- }
- return Symbol.iterator;
- }
- else {
- // [for Mozilla Gecko 27-35:](https://mzl.la/2ewE1zC)
- var Set_1 = root.Set;
- if (Set_1 && typeof new Set_1()['@@iterator'] === 'function') {
- return '@@iterator';
- }
- var Map_1 = root.Map;
- // required for compatability with es6-shim
- if (Map_1) {
- var keys = Object.getOwnPropertyNames(Map_1.prototype);
- for (var i = 0; i < keys.length; ++i) {
- var key = keys[i];
- // according to spec, Map.prototype[@@iterator] and Map.orototype.entries must be equal.
- if (key !== 'entries' && key !== 'size' && Map_1.prototype[key] === Map_1.prototype['entries']) {
- return key;
- }
- }
- }
- return '@@iterator';
- }
- }
- exports.symbolIteratorPonyfill = symbolIteratorPonyfill;
- exports.iterator = symbolIteratorPonyfill(root_1.root);
- /**
- * @deprecated use iterator instead
- */
- exports.$$iterator = exports.iterator;
- //# sourceMappingURL=iterator.js.map
-
- /***/ }),
- /* 32 */
- /***/ (function(module, exports, __webpack_require__) {
-
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * This is the web browser implementation of `debug()`.
- *
- * Expose `debug()` as the module.
- */
-
- exports = module.exports = __webpack_require__(110);
- exports.log = log;
- exports.formatArgs = formatArgs;
- exports.save = save;
- exports.load = load;
- exports.useColors = useColors;
- exports.storage = 'undefined' != typeof chrome
- && 'undefined' != typeof chrome.storage
- ? chrome.storage.local
- : localstorage();
-
- /**
- * Colors.
- */
-
- exports.colors = [
- '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC',
- '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF',
- '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC',
- '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF',
- '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC',
- '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033',
- '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366',
- '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933',
- '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC',
- '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF',
- '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'
- ];
-
- /**
- * Currently only WebKit-based Web Inspectors, Firefox >= v31,
- * and the Firebug extension (any Firefox version) are known
- * to support "%c" CSS customizations.
- *
- * TODO: add a `localStorage` variable to explicitly enable/disable colors
- */
-
- function useColors() {
- // NB: In an Electron preload script, document will be defined but not fully
- // initialized. Since we know we're in Chrome, we'll just detect this case
- // explicitly
- if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {
- return true;
- }
-
- // Internet Explorer and Edge do not support colors.
- if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
- return false;
- }
-
- // is webkit? http://stackoverflow.com/a/16459606/376773
- // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632
- return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||
- // is firebug? http://stackoverflow.com/a/398120/376773
- (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||
- // is firefox >= v31?
- // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
- (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||
- // double check webkit in userAgent just in case we are in a worker
- (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/));
- }
-
- /**
- * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.
- */
-
- exports.formatters.j = function(v) {
- try {
- return JSON.stringify(v);
- } catch (err) {
- return '[UnexpectedJSONParseError]: ' + err.message;
- }
- };
-
-
- /**
- * Colorize log arguments if enabled.
- *
- * @api public
- */
-
- function formatArgs(args) {
- var useColors = this.useColors;
-
- args[0] = (useColors ? '%c' : '')
- + this.namespace
- + (useColors ? ' %c' : ' ')
- + args[0]
- + (useColors ? '%c ' : ' ')
- + '+' + exports.humanize(this.diff);
-
- if (!useColors) return;
-
- var c = 'color: ' + this.color;
- args.splice(1, 0, c, 'color: inherit')
-
- // the final "%c" is somewhat tricky, because there could be other
- // arguments passed either before or after the %c, so we need to
- // figure out the correct index to insert the CSS into
- var index = 0;
- var lastC = 0;
- args[0].replace(/%[a-zA-Z%]/g, function(match) {
- if ('%%' === match) return;
- index++;
- if ('%c' === match) {
- // we only are interested in the *last* %c
- // (the user may have provided their own)
- lastC = index;
- }
- });
-
- args.splice(lastC, 0, c);
- }
-
- /**
- * Invokes `console.log()` when available.
- * No-op when `console.log` is not a "function".
- *
- * @api public
- */
-
- function log() {
- // this hackery is required for IE8/9, where
- // the `console.log` function doesn't have 'apply'
- return 'object' === typeof console
- && console.log
- && Function.prototype.apply.call(console.log, console, arguments);
- }
-
- /**
- * Save `namespaces`.
- *
- * @param {String} namespaces
- * @api private
- */
-
- function save(namespaces) {
- try {
- if (null == namespaces) {
- exports.storage.removeItem('debug');
- } else {
- exports.storage.debug = namespaces;
- }
- } catch(e) {}
- }
-
- /**
- * Load `namespaces`.
- *
- * @return {String} returns the previously persisted debug modes
- * @api private
- */
-
- function load() {
- var r;
- try {
- r = exports.storage.debug;
- } catch(e) {}
-
- // If debug isn't set in LS, and we're in Electron, try to load $DEBUG
- if (!r && typeof process !== 'undefined' && 'env' in process) {
- r = process.env.DEBUG;
- }
-
- return r;
- }
-
- /**
- * Enable namespaces listed in `localStorage.debug` initially.
- */
-
- exports.enable(load());
-
- /**
- * Localstorage attempts to return the localstorage.
- *
- * This is necessary because safari throws
- * when a user disables cookies/localstorage
- * and you attempt to access it.
- *
- * @return {LocalStorage}
- * @api private
- */
-
- function localstorage() {
- try {
- return window.localStorage;
- } catch (e) {}
- }
-
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(33)))
-
- /***/ }),
- /* 33 */
- /***/ (function(module, exports) {
-
- // shim for using process in browser
- var process = module.exports = {};
-
- // cached from whatever global is present so that test runners that stub it
- // don't break things. But we need to wrap it in a try catch in case it is
- // wrapped in strict mode code which doesn't define any globals. It's inside a
- // function because try/catches deoptimize in certain engines.
-
- var cachedSetTimeout;
- var cachedClearTimeout;
-
- function defaultSetTimout() {
- throw new Error('setTimeout has not been defined');
- }
- function defaultClearTimeout () {
- throw new Error('clearTimeout has not been defined');
- }
- (function () {
- try {
- if (typeof setTimeout === 'function') {
- cachedSetTimeout = setTimeout;
- } else {
- cachedSetTimeout = defaultSetTimout;
- }
- } catch (e) {
- cachedSetTimeout = defaultSetTimout;
- }
- try {
- if (typeof clearTimeout === 'function') {
- cachedClearTimeout = clearTimeout;
- } else {
- cachedClearTimeout = defaultClearTimeout;
- }
- } catch (e) {
- cachedClearTimeout = defaultClearTimeout;
- }
- } ())
- function runTimeout(fun) {
- if (cachedSetTimeout === setTimeout) {
- //normal enviroments in sane situations
- return setTimeout(fun, 0);
- }
- // if setTimeout wasn't available but was latter defined
- if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
- cachedSetTimeout = setTimeout;
- return setTimeout(fun, 0);
- }
- try {
- // when when somebody has screwed with setTimeout but no I.E. maddness
- return cachedSetTimeout(fun, 0);
- } catch(e){
- try {
- // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
- return cachedSetTimeout.call(null, fun, 0);
- } catch(e){
- // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
- return cachedSetTimeout.call(this, fun, 0);
- }
- }
-
-
- }
- function runClearTimeout(marker) {
- if (cachedClearTimeout === clearTimeout) {
- //normal enviroments in sane situations
- return clearTimeout(marker);
- }
- // if clearTimeout wasn't available but was latter defined
- if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
- cachedClearTimeout = clearTimeout;
- return clearTimeout(marker);
- }
- try {
- // when when somebody has screwed with setTimeout but no I.E. maddness
- return cachedClearTimeout(marker);
- } catch (e){
- try {
- // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
- return cachedClearTimeout.call(null, marker);
- } catch (e){
- // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
- // Some versions of I.E. have different rules for clearTimeout vs setTimeout
- return cachedClearTimeout.call(this, marker);
- }
- }
-
-
-
- }
- var queue = [];
- var draining = false;
- var currentQueue;
- var queueIndex = -1;
-
- function cleanUpNextTick() {
- if (!draining || !currentQueue) {
- return;
- }
- draining = false;
- if (currentQueue.length) {
- queue = currentQueue.concat(queue);
- } else {
- queueIndex = -1;
- }
- if (queue.length) {
- drainQueue();
- }
- }
-
- function drainQueue() {
- if (draining) {
- return;
- }
- var timeout = runTimeout(cleanUpNextTick);
- draining = true;
-
- var len = queue.length;
- while(len) {
- currentQueue = queue;
- queue = [];
- while (++queueIndex < len) {
- if (currentQueue) {
- currentQueue[queueIndex].run();
- }
- }
- queueIndex = -1;
- len = queue.length;
- }
- currentQueue = null;
- draining = false;
- runClearTimeout(timeout);
- }
-
- process.nextTick = function (fun) {
- var args = new Array(arguments.length - 1);
- if (arguments.length > 1) {
- for (var i = 1; i < arguments.length; i++) {
- args[i - 1] = arguments[i];
- }
- }
- queue.push(new Item(fun, args));
- if (queue.length === 1 && !draining) {
- runTimeout(drainQueue);
- }
- };
-
- // v8 likes predictible objects
- function Item(fun, array) {
- this.fun = fun;
- this.array = array;
- }
- Item.prototype.run = function () {
- this.fun.apply(null, this.array);
- };
- process.title = 'browser';
- process.browser = true;
- process.env = {};
- process.argv = [];
- process.version = ''; // empty string to avoid regexp issues
- process.versions = {};
-
- function noop() {}
-
- process.on = noop;
- process.addListener = noop;
- process.once = noop;
- process.off = noop;
- process.removeListener = noop;
- process.removeAllListeners = noop;
- process.emit = noop;
- process.prependListener = noop;
- process.prependOnceListener = noop;
-
- process.listeners = function (name) { return [] }
-
- process.binding = function (name) {
- throw new Error('process.binding is not supported');
- };
-
- process.cwd = function () { return '/' };
- process.chdir = function (dir) {
- throw new Error('process.chdir is not supported');
- };
- process.umask = function() { return 0; };
-
-
- /***/ }),
- /* 34 */
- /***/ (function(module, exports) {
-
- /**
- * Compiles a querystring
- * Returns string representation of the object
- *
- * @param {Object}
- * @api private
- */
-
- exports.encode = function (obj) {
- var str = '';
-
- for (var i in obj) {
- if (obj.hasOwnProperty(i)) {
- if (str.length) str += '&';
- str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);
- }
- }
-
- return str;
- };
-
- /**
- * Parses a simple querystring into an object
- *
- * @param {String} qs
- * @api private
- */
-
- exports.decode = function(qs){
- var qry = {};
- var pairs = qs.split('&');
- for (var i = 0, l = pairs.length; i < l; i++) {
- var pair = pairs[i].split('=');
- qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);
- }
- return qry;
- };
-
-
- /***/ }),
- /* 35 */
- /***/ (function(module, exports) {
-
-
- module.exports = function(a, b){
- var fn = function(){};
- fn.prototype = b.prototype;
- a.prototype = new fn;
- a.prototype.constructor = a;
- };
-
- /***/ }),
- /* 36 */
- /***/ (function(module, exports, __webpack_require__) {
-
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * This is the web browser implementation of `debug()`.
- *
- * Expose `debug()` as the module.
- */
-
- exports = module.exports = __webpack_require__(128);
- exports.log = log;
- exports.formatArgs = formatArgs;
- exports.save = save;
- exports.load = load;
- exports.useColors = useColors;
- exports.storage = 'undefined' != typeof chrome
- && 'undefined' != typeof chrome.storage
- ? chrome.storage.local
- : localstorage();
-
- /**
- * Colors.
- */
-
- exports.colors = [
- '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC',
- '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF',
- '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC',
- '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF',
- '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC',
- '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033',
- '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366',
- '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933',
- '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC',
- '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF',
- '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'
- ];
-
- /**
- * Currently only WebKit-based Web Inspectors, Firefox >= v31,
- * and the Firebug extension (any Firefox version) are known
- * to support "%c" CSS customizations.
- *
- * TODO: add a `localStorage` variable to explicitly enable/disable colors
- */
-
- function useColors() {
- // NB: In an Electron preload script, document will be defined but not fully
- // initialized. Since we know we're in Chrome, we'll just detect this case
- // explicitly
- if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {
- return true;
- }
-
- // Internet Explorer and Edge do not support colors.
- if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
- return false;
- }
-
- // is webkit? http://stackoverflow.com/a/16459606/376773
- // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632
- return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||
- // is firebug? http://stackoverflow.com/a/398120/376773
- (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||
- // is firefox >= v31?
- // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
- (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||
- // double check webkit in userAgent just in case we are in a worker
- (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/));
- }
-
- /**
- * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.
- */
-
- exports.formatters.j = function(v) {
- try {
- return JSON.stringify(v);
- } catch (err) {
- return '[UnexpectedJSONParseError]: ' + err.message;
- }
- };
-
-
- /**
- * Colorize log arguments if enabled.
- *
- * @api public
- */
-
- function formatArgs(args) {
- var useColors = this.useColors;
-
- args[0] = (useColors ? '%c' : '')
- + this.namespace
- + (useColors ? ' %c' : ' ')
- + args[0]
- + (useColors ? '%c ' : ' ')
- + '+' + exports.humanize(this.diff);
-
- if (!useColors) return;
-
- var c = 'color: ' + this.color;
- args.splice(1, 0, c, 'color: inherit')
-
- // the final "%c" is somewhat tricky, because there could be other
- // arguments passed either before or after the %c, so we need to
- // figure out the correct index to insert the CSS into
- var index = 0;
- var lastC = 0;
- args[0].replace(/%[a-zA-Z%]/g, function(match) {
- if ('%%' === match) return;
- index++;
- if ('%c' === match) {
- // we only are interested in the *last* %c
- // (the user may have provided their own)
- lastC = index;
- }
- });
-
- args.splice(lastC, 0, c);
- }
-
- /**
- * Invokes `console.log()` when available.
- * No-op when `console.log` is not a "function".
- *
- * @api public
- */
-
- function log() {
- // this hackery is required for IE8/9, where
- // the `console.log` function doesn't have 'apply'
- return 'object' === typeof console
- && console.log
- && Function.prototype.apply.call(console.log, console, arguments);
- }
-
- /**
- * Save `namespaces`.
- *
- * @param {String} namespaces
- * @api private
- */
-
- function save(namespaces) {
- try {
- if (null == namespaces) {
- exports.storage.removeItem('debug');
- } else {
- exports.storage.debug = namespaces;
- }
- } catch(e) {}
- }
-
- /**
- * Load `namespaces`.
- *
- * @return {String} returns the previously persisted debug modes
- * @api private
- */
-
- function load() {
- var r;
- try {
- r = exports.storage.debug;
- } catch(e) {}
-
- // If debug isn't set in LS, and we're in Electron, try to load $DEBUG
- if (!r && typeof process !== 'undefined' && 'env' in process) {
- r = process.env.DEBUG;
- }
-
- return r;
- }
-
- /**
- * Enable namespaces listed in `localStorage.debug` initially.
- */
-
- exports.enable(load());
-
- /**
- * Localstorage attempts to return the localstorage.
- *
- * This is necessary because safari throws
- * when a user disables cookies/localstorage
- * and you attempt to access it.
- *
- * @return {LocalStorage}
- * @api private
- */
-
- function localstorage() {
- try {
- return window.localStorage;
- } catch (e) {}
- }
-
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(33)))
-
- /***/ }),
- /* 37 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var Observable_1 = __webpack_require__(1);
- var Subscriber_1 = __webpack_require__(3);
- var Subscription_1 = __webpack_require__(12);
- var ObjectUnsubscribedError_1 = __webpack_require__(73);
- var SubjectSubscription_1 = __webpack_require__(134);
- var rxSubscriber_1 = __webpack_require__(44);
- /**
- * @class SubjectSubscriber<T>
- */
- var SubjectSubscriber = (function (_super) {
- __extends(SubjectSubscriber, _super);
- function SubjectSubscriber(destination) {
- _super.call(this, destination);
- this.destination = destination;
- }
- return SubjectSubscriber;
- }(Subscriber_1.Subscriber));
- exports.SubjectSubscriber = SubjectSubscriber;
- /**
- * @class Subject<T>
- */
- var Subject = (function (_super) {
- __extends(Subject, _super);
- function Subject() {
- _super.call(this);
- this.observers = [];
- this.closed = false;
- this.isStopped = false;
- this.hasError = false;
- this.thrownError = null;
- }
- Subject.prototype[rxSubscriber_1.rxSubscriber] = function () {
- return new SubjectSubscriber(this);
- };
- Subject.prototype.lift = function (operator) {
- var subject = new AnonymousSubject(this, this);
- subject.operator = operator;
- return subject;
- };
- Subject.prototype.next = function (value) {
- if (this.closed) {
- throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError();
- }
- if (!this.isStopped) {
- var observers = this.observers;
- var len = observers.length;
- var copy = observers.slice();
- for (var i = 0; i < len; i++) {
- copy[i].next(value);
- }
- }
- };
- Subject.prototype.error = function (err) {
- if (this.closed) {
- throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError();
- }
- this.hasError = true;
- this.thrownError = err;
- this.isStopped = true;
- var observers = this.observers;
- var len = observers.length;
- var copy = observers.slice();
- for (var i = 0; i < len; i++) {
- copy[i].error(err);
- }
- this.observers.length = 0;
- };
- Subject.prototype.complete = function () {
- if (this.closed) {
- throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError();
- }
- this.isStopped = true;
- var observers = this.observers;
- var len = observers.length;
- var copy = observers.slice();
- for (var i = 0; i < len; i++) {
- copy[i].complete();
- }
- this.observers.length = 0;
- };
- Subject.prototype.unsubscribe = function () {
- this.isStopped = true;
- this.closed = true;
- this.observers = null;
- };
- Subject.prototype._trySubscribe = function (subscriber) {
- if (this.closed) {
- throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError();
- }
- else {
- return _super.prototype._trySubscribe.call(this, subscriber);
- }
- };
- /** @deprecated internal use only */ Subject.prototype._subscribe = function (subscriber) {
- if (this.closed) {
- throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError();
- }
- else if (this.hasError) {
- subscriber.error(this.thrownError);
- return Subscription_1.Subscription.EMPTY;
- }
- else if (this.isStopped) {
- subscriber.complete();
- return Subscription_1.Subscription.EMPTY;
- }
- else {
- this.observers.push(subscriber);
- return new SubjectSubscription_1.SubjectSubscription(this, subscriber);
- }
- };
- Subject.prototype.asObservable = function () {
- var observable = new Observable_1.Observable();
- observable.source = this;
- return observable;
- };
- Subject.create = function (destination, source) {
- return new AnonymousSubject(destination, source);
- };
- return Subject;
- }(Observable_1.Observable));
- exports.Subject = Subject;
- /**
- * @class AnonymousSubject<T>
- */
- var AnonymousSubject = (function (_super) {
- __extends(AnonymousSubject, _super);
- function AnonymousSubject(destination, source) {
- _super.call(this);
- this.destination = destination;
- this.source = source;
- }
- AnonymousSubject.prototype.next = function (value) {
- var destination = this.destination;
- if (destination && destination.next) {
- destination.next(value);
- }
- };
- AnonymousSubject.prototype.error = function (err) {
- var destination = this.destination;
- if (destination && destination.error) {
- this.destination.error(err);
- }
- };
- AnonymousSubject.prototype.complete = function () {
- var destination = this.destination;
- if (destination && destination.complete) {
- this.destination.complete();
- }
- };
- /** @deprecated internal use only */ AnonymousSubject.prototype._subscribe = function (subscriber) {
- var source = this.source;
- if (source) {
- return this.source.subscribe(subscriber);
- }
- else {
- return Subscription_1.Subscription.EMPTY;
- }
- };
- return AnonymousSubject;
- }(Subject));
- exports.AnonymousSubject = AnonymousSubject;
- //# sourceMappingURL=Subject.js.map
-
- /***/ }),
- /* 38 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var Observable_1 = __webpack_require__(1);
- var ArrayObservable_1 = __webpack_require__(23);
- var isScheduler_1 = __webpack_require__(25);
- var mergeAll_1 = __webpack_require__(55);
- /* tslint:enable:max-line-length */
- /**
- * Creates an output Observable which concurrently emits all values from every
- * given input Observable.
- *
- * <span class="informal">Flattens multiple Observables together by blending
- * their values into one Observable.</span>
- *
- * <img src="./img/merge.png" width="100%">
- *
- * `merge` subscribes to each given input Observable (as arguments), and simply
- * forwards (without doing any transformation) all the values from all the input
- * Observables to the output Observable. The output Observable only completes
- * once all input Observables have completed. Any error delivered by an input
- * Observable will be immediately emitted on the output Observable.
- *
- * @example <caption>Merge together two Observables: 1s interval and clicks</caption>
- * var clicks = Rx.Observable.fromEvent(document, 'click');
- * var timer = Rx.Observable.interval(1000);
- * var clicksOrTimer = Rx.Observable.merge(clicks, timer);
- * clicksOrTimer.subscribe(x => console.log(x));
- *
- * // Results in the following:
- * // timer will emit ascending values, one every second(1000ms) to console
- * // clicks logs MouseEvents to console everytime the "document" is clicked
- * // Since the two streams are merged you see these happening
- * // as they occur.
- *
- * @example <caption>Merge together 3 Observables, but only 2 run concurrently</caption>
- * var timer1 = Rx.Observable.interval(1000).take(10);
- * var timer2 = Rx.Observable.interval(2000).take(6);
- * var timer3 = Rx.Observable.interval(500).take(10);
- * var concurrent = 2; // the argument
- * var merged = Rx.Observable.merge(timer1, timer2, timer3, concurrent);
- * merged.subscribe(x => console.log(x));
- *
- * // Results in the following:
- * // - First timer1 and timer2 will run concurrently
- * // - timer1 will emit a value every 1000ms for 10 iterations
- * // - timer2 will emit a value every 2000ms for 6 iterations
- * // - after timer1 hits it's max iteration, timer2 will
- * // continue, and timer3 will start to run concurrently with timer2
- * // - when timer2 hits it's max iteration it terminates, and
- * // timer3 will continue to emit a value every 500ms until it is complete
- *
- * @see {@link mergeAll}
- * @see {@link mergeMap}
- * @see {@link mergeMapTo}
- * @see {@link mergeScan}
- *
- * @param {...ObservableInput} observables Input Observables to merge together.
- * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of input
- * Observables being subscribed to concurrently.
- * @param {Scheduler} [scheduler=null] The IScheduler to use for managing
- * concurrency of input Observables.
- * @return {Observable} an Observable that emits items that are the result of
- * every input Observable.
- * @static true
- * @name merge
- * @owner Observable
- */
- function merge() {
- var observables = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- observables[_i - 0] = arguments[_i];
- }
- var concurrent = Number.POSITIVE_INFINITY;
- var scheduler = null;
- var last = observables[observables.length - 1];
- if (isScheduler_1.isScheduler(last)) {
- scheduler = observables.pop();
- if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') {
- concurrent = observables.pop();
- }
- }
- else if (typeof last === 'number') {
- concurrent = observables.pop();
- }
- if (scheduler === null && observables.length === 1 && observables[0] instanceof Observable_1.Observable) {
- return observables[0];
- }
- return mergeAll_1.mergeAll(concurrent)(new ArrayObservable_1.ArrayObservable(observables, scheduler));
- }
- exports.merge = merge;
- //# sourceMappingURL=merge.js.map
-
- /***/ }),
- /* 39 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var Subscriber_1 = __webpack_require__(3);
- /**
- * Returns an Observable that skips the first `count` items emitted by the source Observable.
- *
- * <img src="./img/skip.png" width="100%">
- *
- * @param {Number} count - The number of times, items emitted by source Observable should be skipped.
- * @return {Observable} An Observable that skips values emitted by the source Observable.
- *
- * @method skip
- * @owner Observable
- */
- function skip(count) {
- return function (source) { return source.lift(new SkipOperator(count)); };
- }
- exports.skip = skip;
- var SkipOperator = (function () {
- function SkipOperator(total) {
- this.total = total;
- }
- SkipOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new SkipSubscriber(subscriber, this.total));
- };
- return SkipOperator;
- }());
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @ignore
- * @extends {Ignored}
- */
- var SkipSubscriber = (function (_super) {
- __extends(SkipSubscriber, _super);
- function SkipSubscriber(destination, total) {
- _super.call(this, destination);
- this.total = total;
- this.count = 0;
- }
- SkipSubscriber.prototype._next = function (x) {
- if (++this.count > this.total) {
- this.destination.next(x);
- }
- };
- return SkipSubscriber;
- }(Subscriber_1.Subscriber));
- //# sourceMappingURL=skip.js.map
-
- /***/ }),
- /* 40 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var Subscriber_1 = __webpack_require__(3);
- var tryCatch_1 = __webpack_require__(43);
- var errorObject_1 = __webpack_require__(27);
- /* tslint:enable:max-line-length */
- /**
- * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from the previous item.
- *
- * If a comparator function is provided, then it will be called for each item to test for whether or not that value should be emitted.
- *
- * If a comparator function is not provided, an equality check is used by default.
- *
- * @example <caption>A simple example with numbers</caption>
- * Observable.of(1, 1, 2, 2, 2, 1, 1, 2, 3, 3, 4)
- * .distinctUntilChanged()
- * .subscribe(x => console.log(x)); // 1, 2, 1, 2, 3, 4
- *
- * @example <caption>An example using a compare function</caption>
- * interface Person {
- * age: number,
- * name: string
- * }
- *
- * Observable.of<Person>(
- * { age: 4, name: 'Foo'},
- * { age: 7, name: 'Bar'},
- * { age: 5, name: 'Foo'})
- * { age: 6, name: 'Foo'})
- * .distinctUntilChanged((p: Person, q: Person) => p.name === q.name)
- * .subscribe(x => console.log(x));
- *
- * // displays:
- * // { age: 4, name: 'Foo' }
- * // { age: 7, name: 'Bar' }
- * // { age: 5, name: 'Foo' }
- *
- * @see {@link distinct}
- * @see {@link distinctUntilKeyChanged}
- *
- * @param {function} [compare] Optional comparison function called to test if an item is distinct from the previous item in the source.
- * @return {Observable} An Observable that emits items from the source Observable with distinct values.
- * @method distinctUntilChanged
- * @owner Observable
- */
- function distinctUntilChanged(compare, keySelector) {
- return function (source) { return source.lift(new DistinctUntilChangedOperator(compare, keySelector)); };
- }
- exports.distinctUntilChanged = distinctUntilChanged;
- var DistinctUntilChangedOperator = (function () {
- function DistinctUntilChangedOperator(compare, keySelector) {
- this.compare = compare;
- this.keySelector = keySelector;
- }
- DistinctUntilChangedOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new DistinctUntilChangedSubscriber(subscriber, this.compare, this.keySelector));
- };
- return DistinctUntilChangedOperator;
- }());
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @ignore
- * @extends {Ignored}
- */
- var DistinctUntilChangedSubscriber = (function (_super) {
- __extends(DistinctUntilChangedSubscriber, _super);
- function DistinctUntilChangedSubscriber(destination, compare, keySelector) {
- _super.call(this, destination);
- this.keySelector = keySelector;
- this.hasKey = false;
- if (typeof compare === 'function') {
- this.compare = compare;
- }
- }
- DistinctUntilChangedSubscriber.prototype.compare = function (x, y) {
- return x === y;
- };
- DistinctUntilChangedSubscriber.prototype._next = function (value) {
- var keySelector = this.keySelector;
- var key = value;
- if (keySelector) {
- key = tryCatch_1.tryCatch(this.keySelector)(value);
- if (key === errorObject_1.errorObject) {
- return this.destination.error(errorObject_1.errorObject.e);
- }
- }
- var result = false;
- if (this.hasKey) {
- result = tryCatch_1.tryCatch(this.compare)(this.key, key);
- if (result === errorObject_1.errorObject) {
- return this.destination.error(errorObject_1.errorObject.e);
- }
- }
- else {
- this.hasKey = true;
- }
- if (Boolean(result) === false) {
- this.key = key;
- this.destination.next(value);
- }
- };
- return DistinctUntilChangedSubscriber;
- }(Subscriber_1.Subscriber));
- //# sourceMappingURL=distinctUntilChanged.js.map
-
- /***/ }),
- /* 41 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var FromEventObservable_1 = __webpack_require__(172);
- exports.fromEvent = FromEventObservable_1.FromEventObservable.create;
- //# sourceMappingURL=fromEvent.js.map
-
- /***/ }),
- /* 42 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- function isFunction(x) {
- return typeof x === 'function';
- }
- exports.isFunction = isFunction;
- //# sourceMappingURL=isFunction.js.map
-
- /***/ }),
- /* 43 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var errorObject_1 = __webpack_require__(27);
- var tryCatchTarget;
- function tryCatcher() {
- try {
- return tryCatchTarget.apply(this, arguments);
- }
- catch (e) {
- errorObject_1.errorObject.e = e;
- return errorObject_1.errorObject;
- }
- }
- function tryCatch(fn) {
- tryCatchTarget = fn;
- return tryCatcher;
- }
- exports.tryCatch = tryCatch;
- ;
- //# sourceMappingURL=tryCatch.js.map
-
- /***/ }),
- /* 44 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var root_1 = __webpack_require__(7);
- var Symbol = root_1.root.Symbol;
- exports.rxSubscriber = (typeof Symbol === 'function' && typeof Symbol.for === 'function') ?
- Symbol.for('rxSubscriber') : '@@rxSubscriber';
- /**
- * @deprecated use rxSubscriber instead
- */
- exports.$$rxSubscriber = exports.rxSubscriber;
- //# sourceMappingURL=rxSubscriber.js.map
-
- /***/ }),
- /* 45 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var root_1 = __webpack_require__(7);
- function getSymbolObservable(context) {
- var $$observable;
- var Symbol = context.Symbol;
- if (typeof Symbol === 'function') {
- if (Symbol.observable) {
- $$observable = Symbol.observable;
- }
- else {
- $$observable = Symbol('observable');
- Symbol.observable = $$observable;
- }
- }
- else {
- $$observable = '@@observable';
- }
- return $$observable;
- }
- exports.getSymbolObservable = getSymbolObservable;
- exports.observable = getSymbolObservable(root_1.root);
- /**
- * @deprecated use observable instead
- */
- exports.$$observable = exports.observable;
- //# sourceMappingURL=observable.js.map
-
- /***/ }),
- /* 46 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var Observable_1 = __webpack_require__(1);
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @extends {Ignored}
- * @hide true
- */
- var ScalarObservable = (function (_super) {
- __extends(ScalarObservable, _super);
- function ScalarObservable(value, scheduler) {
- _super.call(this);
- this.value = value;
- this.scheduler = scheduler;
- this._isScalar = true;
- if (scheduler) {
- this._isScalar = false;
- }
- }
- ScalarObservable.create = function (value, scheduler) {
- return new ScalarObservable(value, scheduler);
- };
- ScalarObservable.dispatch = function (state) {
- var done = state.done, value = state.value, subscriber = state.subscriber;
- if (done) {
- subscriber.complete();
- return;
- }
- subscriber.next(value);
- if (subscriber.closed) {
- return;
- }
- state.done = true;
- this.schedule(state);
- };
- /** @deprecated internal use only */ ScalarObservable.prototype._subscribe = function (subscriber) {
- var value = this.value;
- var scheduler = this.scheduler;
- if (scheduler) {
- return scheduler.schedule(ScalarObservable.dispatch, 0, {
- done: false, value: value, subscriber: subscriber
- });
- }
- else {
- subscriber.next(value);
- if (!subscriber.closed) {
- subscriber.complete();
- }
- }
- };
- return ScalarObservable;
- }(Observable_1.Observable));
- exports.ScalarObservable = ScalarObservable;
- //# sourceMappingURL=ScalarObservable.js.map
-
- /***/ }),
- /* 47 */
- /***/ (function(module, exports) {
-
- /**
- * Helpers.
- */
-
- var s = 1000;
- var m = s * 60;
- var h = m * 60;
- var d = h * 24;
- var y = d * 365.25;
-
- /**
- * Parse or format the given `val`.
- *
- * Options:
- *
- * - `long` verbose formatting [false]
- *
- * @param {String|Number} val
- * @param {Object} [options]
- * @throws {Error} throw an error if val is not a non-empty string or a number
- * @return {String|Number}
- * @api public
- */
-
- module.exports = function(val, options) {
- options = options || {};
- var type = typeof val;
- if (type === 'string' && val.length > 0) {
- return parse(val);
- } else if (type === 'number' && isNaN(val) === false) {
- return options.long ? fmtLong(val) : fmtShort(val);
- }
- throw new Error(
- 'val is not a non-empty string or a valid number. val=' +
- JSON.stringify(val)
- );
- };
-
- /**
- * Parse the given `str` and return milliseconds.
- *
- * @param {String} str
- * @return {Number}
- * @api private
- */
-
- function parse(str) {
- str = String(str);
- if (str.length > 100) {
- return;
- }
- var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(
- str
- );
- if (!match) {
- return;
- }
- var n = parseFloat(match[1]);
- var type = (match[2] || 'ms').toLowerCase();
- switch (type) {
- case 'years':
- case 'year':
- case 'yrs':
- case 'yr':
- case 'y':
- return n * y;
- case 'days':
- case 'day':
- case 'd':
- return n * d;
- case 'hours':
- case 'hour':
- case 'hrs':
- case 'hr':
- case 'h':
- return n * h;
- case 'minutes':
- case 'minute':
- case 'mins':
- case 'min':
- case 'm':
- return n * m;
- case 'seconds':
- case 'second':
- case 'secs':
- case 'sec':
- case 's':
- return n * s;
- case 'milliseconds':
- case 'millisecond':
- case 'msecs':
- case 'msec':
- case 'ms':
- return n;
- default:
- return undefined;
- }
- }
-
- /**
- * Short format for `ms`.
- *
- * @param {Number} ms
- * @return {String}
- * @api private
- */
-
- function fmtShort(ms) {
- if (ms >= d) {
- return Math.round(ms / d) + 'd';
- }
- if (ms >= h) {
- return Math.round(ms / h) + 'h';
- }
- if (ms >= m) {
- return Math.round(ms / m) + 'm';
- }
- if (ms >= s) {
- return Math.round(ms / s) + 's';
- }
- return ms + 'ms';
- }
-
- /**
- * Long format for `ms`.
- *
- * @param {Number} ms
- * @return {String}
- * @api private
- */
-
- function fmtLong(ms) {
- return plural(ms, d, 'day') ||
- plural(ms, h, 'hour') ||
- plural(ms, m, 'minute') ||
- plural(ms, s, 'second') ||
- ms + ' ms';
- }
-
- /**
- * Pluralization helper.
- */
-
- function plural(ms, n, name) {
- if (ms < n) {
- return;
- }
- if (ms < n * 1.5) {
- return Math.floor(ms / n) + ' ' + name;
- }
- return Math.ceil(ms / n) + ' ' + name + 's';
- }
-
-
- /***/ }),
- /* 48 */
- /***/ (function(module, exports, __webpack_require__) {
-
-
- /**
- * Module dependencies.
- */
-
- var debug = __webpack_require__(111)('socket.io-parser');
- var Emitter = __webpack_require__(17);
- var binary = __webpack_require__(113);
- var isArray = __webpack_require__(62);
- var isBuf = __webpack_require__(63);
-
- /**
- * Protocol version.
- *
- * @api public
- */
-
- exports.protocol = 4;
-
- /**
- * Packet types.
- *
- * @api public
- */
-
- exports.types = [
- 'CONNECT',
- 'DISCONNECT',
- 'EVENT',
- 'ACK',
- 'ERROR',
- 'BINARY_EVENT',
- 'BINARY_ACK'
- ];
-
- /**
- * Packet type `connect`.
- *
- * @api public
- */
-
- exports.CONNECT = 0;
-
- /**
- * Packet type `disconnect`.
- *
- * @api public
- */
-
- exports.DISCONNECT = 1;
-
- /**
- * Packet type `event`.
- *
- * @api public
- */
-
- exports.EVENT = 2;
-
- /**
- * Packet type `ack`.
- *
- * @api public
- */
-
- exports.ACK = 3;
-
- /**
- * Packet type `error`.
- *
- * @api public
- */
-
- exports.ERROR = 4;
-
- /**
- * Packet type 'binary event'
- *
- * @api public
- */
-
- exports.BINARY_EVENT = 5;
-
- /**
- * Packet type `binary ack`. For acks with binary arguments.
- *
- * @api public
- */
-
- exports.BINARY_ACK = 6;
-
- /**
- * Encoder constructor.
- *
- * @api public
- */
-
- exports.Encoder = Encoder;
-
- /**
- * Decoder constructor.
- *
- * @api public
- */
-
- exports.Decoder = Decoder;
-
- /**
- * A socket.io Encoder instance
- *
- * @api public
- */
-
- function Encoder() {}
-
- var ERROR_PACKET = exports.ERROR + '"encode error"';
-
- /**
- * Encode a packet as a single string if non-binary, or as a
- * buffer sequence, depending on packet type.
- *
- * @param {Object} obj - packet object
- * @param {Function} callback - function to handle encodings (likely engine.write)
- * @return Calls callback with Array of encodings
- * @api public
- */
-
- Encoder.prototype.encode = function(obj, callback){
- debug('encoding packet %j', obj);
-
- if (exports.BINARY_EVENT === obj.type || exports.BINARY_ACK === obj.type) {
- encodeAsBinary(obj, callback);
- } else {
- var encoding = encodeAsString(obj);
- callback([encoding]);
- }
- };
-
- /**
- * Encode packet as string.
- *
- * @param {Object} packet
- * @return {String} encoded
- * @api private
- */
-
- function encodeAsString(obj) {
-
- // first is type
- var str = '' + obj.type;
-
- // attachments if we have them
- if (exports.BINARY_EVENT === obj.type || exports.BINARY_ACK === obj.type) {
- str += obj.attachments + '-';
- }
-
- // if we have a namespace other than `/`
- // we append it followed by a comma `,`
- if (obj.nsp && '/' !== obj.nsp) {
- str += obj.nsp + ',';
- }
-
- // immediately followed by the id
- if (null != obj.id) {
- str += obj.id;
- }
-
- // json data
- if (null != obj.data) {
- var payload = tryStringify(obj.data);
- if (payload !== false) {
- str += payload;
- } else {
- return ERROR_PACKET;
- }
- }
-
- debug('encoded %j as %s', obj, str);
- return str;
- }
-
- function tryStringify(str) {
- try {
- return JSON.stringify(str);
- } catch(e){
- return false;
- }
- }
-
- /**
- * Encode packet as 'buffer sequence' by removing blobs, and
- * deconstructing packet into object with placeholders and
- * a list of buffers.
- *
- * @param {Object} packet
- * @return {Buffer} encoded
- * @api private
- */
-
- function encodeAsBinary(obj, callback) {
-
- function writeEncoding(bloblessData) {
- var deconstruction = binary.deconstructPacket(bloblessData);
- var pack = encodeAsString(deconstruction.packet);
- var buffers = deconstruction.buffers;
-
- buffers.unshift(pack); // add packet info to beginning of data list
- callback(buffers); // write all the buffers
- }
-
- binary.removeBlobs(obj, writeEncoding);
- }
-
- /**
- * A socket.io Decoder instance
- *
- * @return {Object} decoder
- * @api public
- */
-
- function Decoder() {
- this.reconstructor = null;
- }
-
- /**
- * Mix in `Emitter` with Decoder.
- */
-
- Emitter(Decoder.prototype);
-
- /**
- * Decodes an encoded packet string into packet JSON.
- *
- * @param {String} obj - encoded packet
- * @return {Object} packet
- * @api public
- */
-
- Decoder.prototype.add = function(obj) {
- var packet;
- if (typeof obj === 'string') {
- packet = decodeString(obj);
- if (exports.BINARY_EVENT === packet.type || exports.BINARY_ACK === packet.type) { // binary packet's json
- this.reconstructor = new BinaryReconstructor(packet);
-
- // no attachments, labeled binary but no binary data to follow
- if (this.reconstructor.reconPack.attachments === 0) {
- this.emit('decoded', packet);
- }
- } else { // non-binary full packet
- this.emit('decoded', packet);
- }
- } else if (isBuf(obj) || obj.base64) { // raw binary data
- if (!this.reconstructor) {
- throw new Error('got binary data when not reconstructing a packet');
- } else {
- packet = this.reconstructor.takeBinaryData(obj);
- if (packet) { // received final buffer
- this.reconstructor = null;
- this.emit('decoded', packet);
- }
- }
- } else {
- throw new Error('Unknown type: ' + obj);
- }
- };
-
- /**
- * Decode a packet String (JSON data)
- *
- * @param {String} str
- * @return {Object} packet
- * @api private
- */
-
- function decodeString(str) {
- var i = 0;
- // look up type
- var p = {
- type: Number(str.charAt(0))
- };
-
- if (null == exports.types[p.type]) {
- return error('unknown packet type ' + p.type);
- }
-
- // look up attachments if type binary
- if (exports.BINARY_EVENT === p.type || exports.BINARY_ACK === p.type) {
- var buf = '';
- while (str.charAt(++i) !== '-') {
- buf += str.charAt(i);
- if (i == str.length) break;
- }
- if (buf != Number(buf) || str.charAt(i) !== '-') {
- throw new Error('Illegal attachments');
- }
- p.attachments = Number(buf);
- }
-
- // look up namespace (if any)
- if ('/' === str.charAt(i + 1)) {
- p.nsp = '';
- while (++i) {
- var c = str.charAt(i);
- if (',' === c) break;
- p.nsp += c;
- if (i === str.length) break;
- }
- } else {
- p.nsp = '/';
- }
-
- // look up id
- var next = str.charAt(i + 1);
- if ('' !== next && Number(next) == next) {
- p.id = '';
- while (++i) {
- var c = str.charAt(i);
- if (null == c || Number(c) != c) {
- --i;
- break;
- }
- p.id += str.charAt(i);
- if (i === str.length) break;
- }
- p.id = Number(p.id);
- }
-
- // look up json data
- if (str.charAt(++i)) {
- var payload = tryParse(str.substr(i));
- var isPayloadValid = payload !== false && (p.type === exports.ERROR || isArray(payload));
- if (isPayloadValid) {
- p.data = payload;
- } else {
- return error('invalid payload');
- }
- }
-
- debug('decoded %s as %j', str, p);
- return p;
- }
-
- function tryParse(str) {
- try {
- return JSON.parse(str);
- } catch(e){
- return false;
- }
- }
-
- /**
- * Deallocates a parser's resources
- *
- * @api public
- */
-
- Decoder.prototype.destroy = function() {
- if (this.reconstructor) {
- this.reconstructor.finishedReconstruction();
- }
- };
-
- /**
- * A manager of a binary event's 'buffer sequence'. Should
- * be constructed whenever a packet of type BINARY_EVENT is
- * decoded.
- *
- * @param {Object} packet
- * @return {BinaryReconstructor} initialized reconstructor
- * @api private
- */
-
- function BinaryReconstructor(packet) {
- this.reconPack = packet;
- this.buffers = [];
- }
-
- /**
- * Method to be called when binary data received from connection
- * after a BINARY_EVENT packet.
- *
- * @param {Buffer | ArrayBuffer} binData - the raw binary data received
- * @return {null | Object} returns null if more binary data is expected or
- * a reconstructed packet object if all buffers have been received.
- * @api private
- */
-
- BinaryReconstructor.prototype.takeBinaryData = function(binData) {
- this.buffers.push(binData);
- if (this.buffers.length === this.reconPack.attachments) { // done with buffer list
- var packet = binary.reconstructPacket(this.reconPack, this.buffers);
- this.finishedReconstruction();
- return packet;
- }
- return null;
- };
-
- /**
- * Cleans up binary packet reconstruction variables.
- *
- * @api private
- */
-
- BinaryReconstructor.prototype.finishedReconstruction = function() {
- this.reconPack = null;
- this.buffers = [];
- };
-
- function error(msg) {
- return {
- type: exports.ERROR,
- data: 'parser error: ' + msg
- };
- }
-
-
- /***/ }),
- /* 49 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
- /* WEBPACK VAR INJECTION */(function(global) {/*!
- * The buffer module from node.js, for the browser.
- *
- * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
- * @license MIT
- */
- /* eslint-disable no-proto */
-
-
-
- var base64 = __webpack_require__(114)
- var ieee754 = __webpack_require__(115)
- var isArray = __webpack_require__(116)
-
- exports.Buffer = Buffer
- exports.SlowBuffer = SlowBuffer
- exports.INSPECT_MAX_BYTES = 50
-
- /**
- * If `Buffer.TYPED_ARRAY_SUPPORT`:
- * === true Use Uint8Array implementation (fastest)
- * === false Use Object implementation (most compatible, even IE6)
- *
- * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
- * Opera 11.6+, iOS 4.2+.
- *
- * Due to various browser bugs, sometimes the Object implementation will be used even
- * when the browser supports typed arrays.
- *
- * Note:
- *
- * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
- * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
- *
- * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
- *
- * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
- * incorrect length in some situations.
-
- * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
- * get the Object implementation, which is slower but behaves correctly.
- */
- Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined
- ? global.TYPED_ARRAY_SUPPORT
- : typedArraySupport()
-
- /*
- * Export kMaxLength after typed array support is determined.
- */
- exports.kMaxLength = kMaxLength()
-
- function typedArraySupport () {
- try {
- var arr = new Uint8Array(1)
- arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
- return arr.foo() === 42 && // typed array instances can be augmented
- typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`
- arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`
- } catch (e) {
- return false
- }
- }
-
- function kMaxLength () {
- return Buffer.TYPED_ARRAY_SUPPORT
- ? 0x7fffffff
- : 0x3fffffff
- }
-
- function createBuffer (that, length) {
- if (kMaxLength() < length) {
- throw new RangeError('Invalid typed array length')
- }
- if (Buffer.TYPED_ARRAY_SUPPORT) {
- // Return an augmented `Uint8Array` instance, for best performance
- that = new Uint8Array(length)
- that.__proto__ = Buffer.prototype
- } else {
- // Fallback: Return an object instance of the Buffer class
- if (that === null) {
- that = new Buffer(length)
- }
- that.length = length
- }
-
- return that
- }
-
- /**
- * The Buffer constructor returns instances of `Uint8Array` that have their
- * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
- * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
- * and the `Uint8Array` methods. Square bracket notation works as expected -- it
- * returns a single octet.
- *
- * The `Uint8Array` prototype remains unmodified.
- */
-
- function Buffer (arg, encodingOrOffset, length) {
- if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {
- return new Buffer(arg, encodingOrOffset, length)
- }
-
- // Common case.
- if (typeof arg === 'number') {
- if (typeof encodingOrOffset === 'string') {
- throw new Error(
- 'If encoding is specified then the first argument must be a string'
- )
- }
- return allocUnsafe(this, arg)
- }
- return from(this, arg, encodingOrOffset, length)
- }
-
- Buffer.poolSize = 8192 // not used by this implementation
-
- // TODO: Legacy, not needed anymore. Remove in next major version.
- Buffer._augment = function (arr) {
- arr.__proto__ = Buffer.prototype
- return arr
- }
-
- function from (that, value, encodingOrOffset, length) {
- if (typeof value === 'number') {
- throw new TypeError('"value" argument must not be a number')
- }
-
- if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
- return fromArrayBuffer(that, value, encodingOrOffset, length)
- }
-
- if (typeof value === 'string') {
- return fromString(that, value, encodingOrOffset)
- }
-
- return fromObject(that, value)
- }
-
- /**
- * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
- * if value is a number.
- * Buffer.from(str[, encoding])
- * Buffer.from(array)
- * Buffer.from(buffer)
- * Buffer.from(arrayBuffer[, byteOffset[, length]])
- **/
- Buffer.from = function (value, encodingOrOffset, length) {
- return from(null, value, encodingOrOffset, length)
- }
-
- if (Buffer.TYPED_ARRAY_SUPPORT) {
- Buffer.prototype.__proto__ = Uint8Array.prototype
- Buffer.__proto__ = Uint8Array
- if (typeof Symbol !== 'undefined' && Symbol.species &&
- Buffer[Symbol.species] === Buffer) {
- // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
- Object.defineProperty(Buffer, Symbol.species, {
- value: null,
- configurable: true
- })
- }
- }
-
- function assertSize (size) {
- if (typeof size !== 'number') {
- throw new TypeError('"size" argument must be a number')
- } else if (size < 0) {
- throw new RangeError('"size" argument must not be negative')
- }
- }
-
- function alloc (that, size, fill, encoding) {
- assertSize(size)
- if (size <= 0) {
- return createBuffer(that, size)
- }
- if (fill !== undefined) {
- // Only pay attention to encoding if it's a string. This
- // prevents accidentally sending in a number that would
- // be interpretted as a start offset.
- return typeof encoding === 'string'
- ? createBuffer(that, size).fill(fill, encoding)
- : createBuffer(that, size).fill(fill)
- }
- return createBuffer(that, size)
- }
-
- /**
- * Creates a new filled Buffer instance.
- * alloc(size[, fill[, encoding]])
- **/
- Buffer.alloc = function (size, fill, encoding) {
- return alloc(null, size, fill, encoding)
- }
-
- function allocUnsafe (that, size) {
- assertSize(size)
- that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)
- if (!Buffer.TYPED_ARRAY_SUPPORT) {
- for (var i = 0; i < size; ++i) {
- that[i] = 0
- }
- }
- return that
- }
-
- /**
- * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
- * */
- Buffer.allocUnsafe = function (size) {
- return allocUnsafe(null, size)
- }
- /**
- * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
- */
- Buffer.allocUnsafeSlow = function (size) {
- return allocUnsafe(null, size)
- }
-
- function fromString (that, string, encoding) {
- if (typeof encoding !== 'string' || encoding === '') {
- encoding = 'utf8'
- }
-
- if (!Buffer.isEncoding(encoding)) {
- throw new TypeError('"encoding" must be a valid string encoding')
- }
-
- var length = byteLength(string, encoding) | 0
- that = createBuffer(that, length)
-
- var actual = that.write(string, encoding)
-
- if (actual !== length) {
- // Writing a hex string, for example, that contains invalid characters will
- // cause everything after the first invalid character to be ignored. (e.g.
- // 'abxxcd' will be treated as 'ab')
- that = that.slice(0, actual)
- }
-
- return that
- }
-
- function fromArrayLike (that, array) {
- var length = array.length < 0 ? 0 : checked(array.length) | 0
- that = createBuffer(that, length)
- for (var i = 0; i < length; i += 1) {
- that[i] = array[i] & 255
- }
- return that
- }
-
- function fromArrayBuffer (that, array, byteOffset, length) {
- array.byteLength // this throws if `array` is not a valid ArrayBuffer
-
- if (byteOffset < 0 || array.byteLength < byteOffset) {
- throw new RangeError('\'offset\' is out of bounds')
- }
-
- if (array.byteLength < byteOffset + (length || 0)) {
- throw new RangeError('\'length\' is out of bounds')
- }
-
- if (byteOffset === undefined && length === undefined) {
- array = new Uint8Array(array)
- } else if (length === undefined) {
- array = new Uint8Array(array, byteOffset)
- } else {
- array = new Uint8Array(array, byteOffset, length)
- }
-
- if (Buffer.TYPED_ARRAY_SUPPORT) {
- // Return an augmented `Uint8Array` instance, for best performance
- that = array
- that.__proto__ = Buffer.prototype
- } else {
- // Fallback: Return an object instance of the Buffer class
- that = fromArrayLike(that, array)
- }
- return that
- }
-
- function fromObject (that, obj) {
- if (Buffer.isBuffer(obj)) {
- var len = checked(obj.length) | 0
- that = createBuffer(that, len)
-
- if (that.length === 0) {
- return that
- }
-
- obj.copy(that, 0, 0, len)
- return that
- }
-
- if (obj) {
- if ((typeof ArrayBuffer !== 'undefined' &&
- obj.buffer instanceof ArrayBuffer) || 'length' in obj) {
- if (typeof obj.length !== 'number' || isnan(obj.length)) {
- return createBuffer(that, 0)
- }
- return fromArrayLike(that, obj)
- }
-
- if (obj.type === 'Buffer' && isArray(obj.data)) {
- return fromArrayLike(that, obj.data)
- }
- }
-
- throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
- }
-
- function checked (length) {
- // Note: cannot use `length < kMaxLength()` here because that fails when
- // length is NaN (which is otherwise coerced to zero.)
- if (length >= kMaxLength()) {
- throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
- 'size: 0x' + kMaxLength().toString(16) + ' bytes')
- }
- return length | 0
- }
-
- function SlowBuffer (length) {
- if (+length != length) { // eslint-disable-line eqeqeq
- length = 0
- }
- return Buffer.alloc(+length)
- }
-
- Buffer.isBuffer = function isBuffer (b) {
- return !!(b != null && b._isBuffer)
- }
-
- Buffer.compare = function compare (a, b) {
- if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
- throw new TypeError('Arguments must be Buffers')
- }
-
- if (a === b) return 0
-
- var x = a.length
- var y = b.length
-
- for (var i = 0, len = Math.min(x, y); i < len; ++i) {
- if (a[i] !== b[i]) {
- x = a[i]
- y = b[i]
- break
- }
- }
-
- if (x < y) return -1
- if (y < x) return 1
- return 0
- }
-
- Buffer.isEncoding = function isEncoding (encoding) {
- switch (String(encoding).toLowerCase()) {
- case 'hex':
- case 'utf8':
- case 'utf-8':
- case 'ascii':
- case 'latin1':
- case 'binary':
- case 'base64':
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- return true
- default:
- return false
- }
- }
-
- Buffer.concat = function concat (list, length) {
- if (!isArray(list)) {
- throw new TypeError('"list" argument must be an Array of Buffers')
- }
-
- if (list.length === 0) {
- return Buffer.alloc(0)
- }
-
- var i
- if (length === undefined) {
- length = 0
- for (i = 0; i < list.length; ++i) {
- length += list[i].length
- }
- }
-
- var buffer = Buffer.allocUnsafe(length)
- var pos = 0
- for (i = 0; i < list.length; ++i) {
- var buf = list[i]
- if (!Buffer.isBuffer(buf)) {
- throw new TypeError('"list" argument must be an Array of Buffers')
- }
- buf.copy(buffer, pos)
- pos += buf.length
- }
- return buffer
- }
-
- function byteLength (string, encoding) {
- if (Buffer.isBuffer(string)) {
- return string.length
- }
- if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&
- (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {
- return string.byteLength
- }
- if (typeof string !== 'string') {
- string = '' + string
- }
-
- var len = string.length
- if (len === 0) return 0
-
- // Use a for loop to avoid recursion
- var loweredCase = false
- for (;;) {
- switch (encoding) {
- case 'ascii':
- case 'latin1':
- case 'binary':
- return len
- case 'utf8':
- case 'utf-8':
- case undefined:
- return utf8ToBytes(string).length
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- return len * 2
- case 'hex':
- return len >>> 1
- case 'base64':
- return base64ToBytes(string).length
- default:
- if (loweredCase) return utf8ToBytes(string).length // assume utf8
- encoding = ('' + encoding).toLowerCase()
- loweredCase = true
- }
- }
- }
- Buffer.byteLength = byteLength
-
- function slowToString (encoding, start, end) {
- var loweredCase = false
-
- // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
- // property of a typed array.
-
- // This behaves neither like String nor Uint8Array in that we set start/end
- // to their upper/lower bounds if the value passed is out of range.
- // undefined is handled specially as per ECMA-262 6th Edition,
- // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
- if (start === undefined || start < 0) {
- start = 0
- }
- // Return early if start > this.length. Done here to prevent potential uint32
- // coercion fail below.
- if (start > this.length) {
- return ''
- }
-
- if (end === undefined || end > this.length) {
- end = this.length
- }
-
- if (end <= 0) {
- return ''
- }
-
- // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
- end >>>= 0
- start >>>= 0
-
- if (end <= start) {
- return ''
- }
-
- if (!encoding) encoding = 'utf8'
-
- while (true) {
- switch (encoding) {
- case 'hex':
- return hexSlice(this, start, end)
-
- case 'utf8':
- case 'utf-8':
- return utf8Slice(this, start, end)
-
- case 'ascii':
- return asciiSlice(this, start, end)
-
- case 'latin1':
- case 'binary':
- return latin1Slice(this, start, end)
-
- case 'base64':
- return base64Slice(this, start, end)
-
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- return utf16leSlice(this, start, end)
-
- default:
- if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
- encoding = (encoding + '').toLowerCase()
- loweredCase = true
- }
- }
- }
-
- // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect
- // Buffer instances.
- Buffer.prototype._isBuffer = true
-
- function swap (b, n, m) {
- var i = b[n]
- b[n] = b[m]
- b[m] = i
- }
-
- Buffer.prototype.swap16 = function swap16 () {
- var len = this.length
- if (len % 2 !== 0) {
- throw new RangeError('Buffer size must be a multiple of 16-bits')
- }
- for (var i = 0; i < len; i += 2) {
- swap(this, i, i + 1)
- }
- return this
- }
-
- Buffer.prototype.swap32 = function swap32 () {
- var len = this.length
- if (len % 4 !== 0) {
- throw new RangeError('Buffer size must be a multiple of 32-bits')
- }
- for (var i = 0; i < len; i += 4) {
- swap(this, i, i + 3)
- swap(this, i + 1, i + 2)
- }
- return this
- }
-
- Buffer.prototype.swap64 = function swap64 () {
- var len = this.length
- if (len % 8 !== 0) {
- throw new RangeError('Buffer size must be a multiple of 64-bits')
- }
- for (var i = 0; i < len; i += 8) {
- swap(this, i, i + 7)
- swap(this, i + 1, i + 6)
- swap(this, i + 2, i + 5)
- swap(this, i + 3, i + 4)
- }
- return this
- }
-
- Buffer.prototype.toString = function toString () {
- var length = this.length | 0
- if (length === 0) return ''
- if (arguments.length === 0) return utf8Slice(this, 0, length)
- return slowToString.apply(this, arguments)
- }
-
- Buffer.prototype.equals = function equals (b) {
- if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
- if (this === b) return true
- return Buffer.compare(this, b) === 0
- }
-
- Buffer.prototype.inspect = function inspect () {
- var str = ''
- var max = exports.INSPECT_MAX_BYTES
- if (this.length > 0) {
- str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
- if (this.length > max) str += ' ... '
- }
- return '<Buffer ' + str + '>'
- }
-
- Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
- if (!Buffer.isBuffer(target)) {
- throw new TypeError('Argument must be a Buffer')
- }
-
- if (start === undefined) {
- start = 0
- }
- if (end === undefined) {
- end = target ? target.length : 0
- }
- if (thisStart === undefined) {
- thisStart = 0
- }
- if (thisEnd === undefined) {
- thisEnd = this.length
- }
-
- if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
- throw new RangeError('out of range index')
- }
-
- if (thisStart >= thisEnd && start >= end) {
- return 0
- }
- if (thisStart >= thisEnd) {
- return -1
- }
- if (start >= end) {
- return 1
- }
-
- start >>>= 0
- end >>>= 0
- thisStart >>>= 0
- thisEnd >>>= 0
-
- if (this === target) return 0
-
- var x = thisEnd - thisStart
- var y = end - start
- var len = Math.min(x, y)
-
- var thisCopy = this.slice(thisStart, thisEnd)
- var targetCopy = target.slice(start, end)
-
- for (var i = 0; i < len; ++i) {
- if (thisCopy[i] !== targetCopy[i]) {
- x = thisCopy[i]
- y = targetCopy[i]
- break
- }
- }
-
- if (x < y) return -1
- if (y < x) return 1
- return 0
- }
-
- // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
- // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
- //
- // Arguments:
- // - buffer - a Buffer to search
- // - val - a string, Buffer, or number
- // - byteOffset - an index into `buffer`; will be clamped to an int32
- // - encoding - an optional encoding, relevant is val is a string
- // - dir - true for indexOf, false for lastIndexOf
- function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
- // Empty buffer means no match
- if (buffer.length === 0) return -1
-
- // Normalize byteOffset
- if (typeof byteOffset === 'string') {
- encoding = byteOffset
- byteOffset = 0
- } else if (byteOffset > 0x7fffffff) {
- byteOffset = 0x7fffffff
- } else if (byteOffset < -0x80000000) {
- byteOffset = -0x80000000
- }
- byteOffset = +byteOffset // Coerce to Number.
- if (isNaN(byteOffset)) {
- // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
- byteOffset = dir ? 0 : (buffer.length - 1)
- }
-
- // Normalize byteOffset: negative offsets start from the end of the buffer
- if (byteOffset < 0) byteOffset = buffer.length + byteOffset
- if (byteOffset >= buffer.length) {
- if (dir) return -1
- else byteOffset = buffer.length - 1
- } else if (byteOffset < 0) {
- if (dir) byteOffset = 0
- else return -1
- }
-
- // Normalize val
- if (typeof val === 'string') {
- val = Buffer.from(val, encoding)
- }
-
- // Finally, search either indexOf (if dir is true) or lastIndexOf
- if (Buffer.isBuffer(val)) {
- // Special case: looking for empty string/buffer always fails
- if (val.length === 0) {
- return -1
- }
- return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
- } else if (typeof val === 'number') {
- val = val & 0xFF // Search for a byte value [0-255]
- if (Buffer.TYPED_ARRAY_SUPPORT &&
- typeof Uint8Array.prototype.indexOf === 'function') {
- if (dir) {
- return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
- } else {
- return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
- }
- }
- return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
- }
-
- throw new TypeError('val must be string, number or Buffer')
- }
-
- function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
- var indexSize = 1
- var arrLength = arr.length
- var valLength = val.length
-
- if (encoding !== undefined) {
- encoding = String(encoding).toLowerCase()
- if (encoding === 'ucs2' || encoding === 'ucs-2' ||
- encoding === 'utf16le' || encoding === 'utf-16le') {
- if (arr.length < 2 || val.length < 2) {
- return -1
- }
- indexSize = 2
- arrLength /= 2
- valLength /= 2
- byteOffset /= 2
- }
- }
-
- function read (buf, i) {
- if (indexSize === 1) {
- return buf[i]
- } else {
- return buf.readUInt16BE(i * indexSize)
- }
- }
-
- var i
- if (dir) {
- var foundIndex = -1
- for (i = byteOffset; i < arrLength; i++) {
- if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
- if (foundIndex === -1) foundIndex = i
- if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
- } else {
- if (foundIndex !== -1) i -= i - foundIndex
- foundIndex = -1
- }
- }
- } else {
- if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
- for (i = byteOffset; i >= 0; i--) {
- var found = true
- for (var j = 0; j < valLength; j++) {
- if (read(arr, i + j) !== read(val, j)) {
- found = false
- break
- }
- }
- if (found) return i
- }
- }
-
- return -1
- }
-
- Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
- return this.indexOf(val, byteOffset, encoding) !== -1
- }
-
- Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
- return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
- }
-
- Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
- return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
- }
-
- function hexWrite (buf, string, offset, length) {
- offset = Number(offset) || 0
- var remaining = buf.length - offset
- if (!length) {
- length = remaining
- } else {
- length = Number(length)
- if (length > remaining) {
- length = remaining
- }
- }
-
- // must be an even number of digits
- var strLen = string.length
- if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
-
- if (length > strLen / 2) {
- length = strLen / 2
- }
- for (var i = 0; i < length; ++i) {
- var parsed = parseInt(string.substr(i * 2, 2), 16)
- if (isNaN(parsed)) return i
- buf[offset + i] = parsed
- }
- return i
- }
-
- function utf8Write (buf, string, offset, length) {
- return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
- }
-
- function asciiWrite (buf, string, offset, length) {
- return blitBuffer(asciiToBytes(string), buf, offset, length)
- }
-
- function latin1Write (buf, string, offset, length) {
- return asciiWrite(buf, string, offset, length)
- }
-
- function base64Write (buf, string, offset, length) {
- return blitBuffer(base64ToBytes(string), buf, offset, length)
- }
-
- function ucs2Write (buf, string, offset, length) {
- return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
- }
-
- Buffer.prototype.write = function write (string, offset, length, encoding) {
- // Buffer#write(string)
- if (offset === undefined) {
- encoding = 'utf8'
- length = this.length
- offset = 0
- // Buffer#write(string, encoding)
- } else if (length === undefined && typeof offset === 'string') {
- encoding = offset
- length = this.length
- offset = 0
- // Buffer#write(string, offset[, length][, encoding])
- } else if (isFinite(offset)) {
- offset = offset | 0
- if (isFinite(length)) {
- length = length | 0
- if (encoding === undefined) encoding = 'utf8'
- } else {
- encoding = length
- length = undefined
- }
- // legacy write(string, encoding, offset, length) - remove in v0.13
- } else {
- throw new Error(
- 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
- )
- }
-
- var remaining = this.length - offset
- if (length === undefined || length > remaining) length = remaining
-
- if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
- throw new RangeError('Attempt to write outside buffer bounds')
- }
-
- if (!encoding) encoding = 'utf8'
-
- var loweredCase = false
- for (;;) {
- switch (encoding) {
- case 'hex':
- return hexWrite(this, string, offset, length)
-
- case 'utf8':
- case 'utf-8':
- return utf8Write(this, string, offset, length)
-
- case 'ascii':
- return asciiWrite(this, string, offset, length)
-
- case 'latin1':
- case 'binary':
- return latin1Write(this, string, offset, length)
-
- case 'base64':
- // Warning: maxLength not taken into account in base64Write
- return base64Write(this, string, offset, length)
-
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- return ucs2Write(this, string, offset, length)
-
- default:
- if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
- encoding = ('' + encoding).toLowerCase()
- loweredCase = true
- }
- }
- }
-
- Buffer.prototype.toJSON = function toJSON () {
- return {
- type: 'Buffer',
- data: Array.prototype.slice.call(this._arr || this, 0)
- }
- }
-
- function base64Slice (buf, start, end) {
- if (start === 0 && end === buf.length) {
- return base64.fromByteArray(buf)
- } else {
- return base64.fromByteArray(buf.slice(start, end))
- }
- }
-
- function utf8Slice (buf, start, end) {
- end = Math.min(buf.length, end)
- var res = []
-
- var i = start
- while (i < end) {
- var firstByte = buf[i]
- var codePoint = null
- var bytesPerSequence = (firstByte > 0xEF) ? 4
- : (firstByte > 0xDF) ? 3
- : (firstByte > 0xBF) ? 2
- : 1
-
- if (i + bytesPerSequence <= end) {
- var secondByte, thirdByte, fourthByte, tempCodePoint
-
- switch (bytesPerSequence) {
- case 1:
- if (firstByte < 0x80) {
- codePoint = firstByte
- }
- break
- case 2:
- secondByte = buf[i + 1]
- if ((secondByte & 0xC0) === 0x80) {
- tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
- if (tempCodePoint > 0x7F) {
- codePoint = tempCodePoint
- }
- }
- break
- case 3:
- secondByte = buf[i + 1]
- thirdByte = buf[i + 2]
- if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
- tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
- if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
- codePoint = tempCodePoint
- }
- }
- break
- case 4:
- secondByte = buf[i + 1]
- thirdByte = buf[i + 2]
- fourthByte = buf[i + 3]
- if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
- tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
- if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
- codePoint = tempCodePoint
- }
- }
- }
- }
-
- if (codePoint === null) {
- // we did not generate a valid codePoint so insert a
- // replacement char (U+FFFD) and advance only 1 byte
- codePoint = 0xFFFD
- bytesPerSequence = 1
- } else if (codePoint > 0xFFFF) {
- // encode to utf16 (surrogate pair dance)
- codePoint -= 0x10000
- res.push(codePoint >>> 10 & 0x3FF | 0xD800)
- codePoint = 0xDC00 | codePoint & 0x3FF
- }
-
- res.push(codePoint)
- i += bytesPerSequence
- }
-
- return decodeCodePointsArray(res)
- }
-
- // Based on http://stackoverflow.com/a/22747272/680742, the browser with
- // the lowest limit is Chrome, with 0x10000 args.
- // We go 1 magnitude less, for safety
- var MAX_ARGUMENTS_LENGTH = 0x1000
-
- function decodeCodePointsArray (codePoints) {
- var len = codePoints.length
- if (len <= MAX_ARGUMENTS_LENGTH) {
- return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
- }
-
- // Decode in chunks to avoid "call stack size exceeded".
- var res = ''
- var i = 0
- while (i < len) {
- res += String.fromCharCode.apply(
- String,
- codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
- )
- }
- return res
- }
-
- function asciiSlice (buf, start, end) {
- var ret = ''
- end = Math.min(buf.length, end)
-
- for (var i = start; i < end; ++i) {
- ret += String.fromCharCode(buf[i] & 0x7F)
- }
- return ret
- }
-
- function latin1Slice (buf, start, end) {
- var ret = ''
- end = Math.min(buf.length, end)
-
- for (var i = start; i < end; ++i) {
- ret += String.fromCharCode(buf[i])
- }
- return ret
- }
-
- function hexSlice (buf, start, end) {
- var len = buf.length
-
- if (!start || start < 0) start = 0
- if (!end || end < 0 || end > len) end = len
-
- var out = ''
- for (var i = start; i < end; ++i) {
- out += toHex(buf[i])
- }
- return out
- }
-
- function utf16leSlice (buf, start, end) {
- var bytes = buf.slice(start, end)
- var res = ''
- for (var i = 0; i < bytes.length; i += 2) {
- res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)
- }
- return res
- }
-
- Buffer.prototype.slice = function slice (start, end) {
- var len = this.length
- start = ~~start
- end = end === undefined ? len : ~~end
-
- if (start < 0) {
- start += len
- if (start < 0) start = 0
- } else if (start > len) {
- start = len
- }
-
- if (end < 0) {
- end += len
- if (end < 0) end = 0
- } else if (end > len) {
- end = len
- }
-
- if (end < start) end = start
-
- var newBuf
- if (Buffer.TYPED_ARRAY_SUPPORT) {
- newBuf = this.subarray(start, end)
- newBuf.__proto__ = Buffer.prototype
- } else {
- var sliceLen = end - start
- newBuf = new Buffer(sliceLen, undefined)
- for (var i = 0; i < sliceLen; ++i) {
- newBuf[i] = this[i + start]
- }
- }
-
- return newBuf
- }
-
- /*
- * Need to make sure that buffer isn't trying to write out of bounds.
- */
- function checkOffset (offset, ext, length) {
- if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
- if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
- }
-
- Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
- offset = offset | 0
- byteLength = byteLength | 0
- if (!noAssert) checkOffset(offset, byteLength, this.length)
-
- var val = this[offset]
- var mul = 1
- var i = 0
- while (++i < byteLength && (mul *= 0x100)) {
- val += this[offset + i] * mul
- }
-
- return val
- }
-
- Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
- offset = offset | 0
- byteLength = byteLength | 0
- if (!noAssert) {
- checkOffset(offset, byteLength, this.length)
- }
-
- var val = this[offset + --byteLength]
- var mul = 1
- while (byteLength > 0 && (mul *= 0x100)) {
- val += this[offset + --byteLength] * mul
- }
-
- return val
- }
-
- Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
- if (!noAssert) checkOffset(offset, 1, this.length)
- return this[offset]
- }
-
- Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
- if (!noAssert) checkOffset(offset, 2, this.length)
- return this[offset] | (this[offset + 1] << 8)
- }
-
- Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
- if (!noAssert) checkOffset(offset, 2, this.length)
- return (this[offset] << 8) | this[offset + 1]
- }
-
- Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
- if (!noAssert) checkOffset(offset, 4, this.length)
-
- return ((this[offset]) |
- (this[offset + 1] << 8) |
- (this[offset + 2] << 16)) +
- (this[offset + 3] * 0x1000000)
- }
-
- Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
- if (!noAssert) checkOffset(offset, 4, this.length)
-
- return (this[offset] * 0x1000000) +
- ((this[offset + 1] << 16) |
- (this[offset + 2] << 8) |
- this[offset + 3])
- }
-
- Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
- offset = offset | 0
- byteLength = byteLength | 0
- if (!noAssert) checkOffset(offset, byteLength, this.length)
-
- var val = this[offset]
- var mul = 1
- var i = 0
- while (++i < byteLength && (mul *= 0x100)) {
- val += this[offset + i] * mul
- }
- mul *= 0x80
-
- if (val >= mul) val -= Math.pow(2, 8 * byteLength)
-
- return val
- }
-
- Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
- offset = offset | 0
- byteLength = byteLength | 0
- if (!noAssert) checkOffset(offset, byteLength, this.length)
-
- var i = byteLength
- var mul = 1
- var val = this[offset + --i]
- while (i > 0 && (mul *= 0x100)) {
- val += this[offset + --i] * mul
- }
- mul *= 0x80
-
- if (val >= mul) val -= Math.pow(2, 8 * byteLength)
-
- return val
- }
-
- Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
- if (!noAssert) checkOffset(offset, 1, this.length)
- if (!(this[offset] & 0x80)) return (this[offset])
- return ((0xff - this[offset] + 1) * -1)
- }
-
- Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
- if (!noAssert) checkOffset(offset, 2, this.length)
- var val = this[offset] | (this[offset + 1] << 8)
- return (val & 0x8000) ? val | 0xFFFF0000 : val
- }
-
- Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
- if (!noAssert) checkOffset(offset, 2, this.length)
- var val = this[offset + 1] | (this[offset] << 8)
- return (val & 0x8000) ? val | 0xFFFF0000 : val
- }
-
- Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
- if (!noAssert) checkOffset(offset, 4, this.length)
-
- return (this[offset]) |
- (this[offset + 1] << 8) |
- (this[offset + 2] << 16) |
- (this[offset + 3] << 24)
- }
-
- Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
- if (!noAssert) checkOffset(offset, 4, this.length)
-
- return (this[offset] << 24) |
- (this[offset + 1] << 16) |
- (this[offset + 2] << 8) |
- (this[offset + 3])
- }
-
- Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
- if (!noAssert) checkOffset(offset, 4, this.length)
- return ieee754.read(this, offset, true, 23, 4)
- }
-
- Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
- if (!noAssert) checkOffset(offset, 4, this.length)
- return ieee754.read(this, offset, false, 23, 4)
- }
-
- Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
- if (!noAssert) checkOffset(offset, 8, this.length)
- return ieee754.read(this, offset, true, 52, 8)
- }
-
- Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
- if (!noAssert) checkOffset(offset, 8, this.length)
- return ieee754.read(this, offset, false, 52, 8)
- }
-
- function checkInt (buf, value, offset, ext, max, min) {
- if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
- if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
- if (offset + ext > buf.length) throw new RangeError('Index out of range')
- }
-
- Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
- value = +value
- offset = offset | 0
- byteLength = byteLength | 0
- if (!noAssert) {
- var maxBytes = Math.pow(2, 8 * byteLength) - 1
- checkInt(this, value, offset, byteLength, maxBytes, 0)
- }
-
- var mul = 1
- var i = 0
- this[offset] = value & 0xFF
- while (++i < byteLength && (mul *= 0x100)) {
- this[offset + i] = (value / mul) & 0xFF
- }
-
- return offset + byteLength
- }
-
- Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
- value = +value
- offset = offset | 0
- byteLength = byteLength | 0
- if (!noAssert) {
- var maxBytes = Math.pow(2, 8 * byteLength) - 1
- checkInt(this, value, offset, byteLength, maxBytes, 0)
- }
-
- var i = byteLength - 1
- var mul = 1
- this[offset + i] = value & 0xFF
- while (--i >= 0 && (mul *= 0x100)) {
- this[offset + i] = (value / mul) & 0xFF
- }
-
- return offset + byteLength
- }
-
- Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
- value = +value
- offset = offset | 0
- if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
- if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
- this[offset] = (value & 0xff)
- return offset + 1
- }
-
- function objectWriteUInt16 (buf, value, offset, littleEndian) {
- if (value < 0) value = 0xffff + value + 1
- for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {
- buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
- (littleEndian ? i : 1 - i) * 8
- }
- }
-
- Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
- value = +value
- offset = offset | 0
- if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
- if (Buffer.TYPED_ARRAY_SUPPORT) {
- this[offset] = (value & 0xff)
- this[offset + 1] = (value >>> 8)
- } else {
- objectWriteUInt16(this, value, offset, true)
- }
- return offset + 2
- }
-
- Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
- value = +value
- offset = offset | 0
- if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
- if (Buffer.TYPED_ARRAY_SUPPORT) {
- this[offset] = (value >>> 8)
- this[offset + 1] = (value & 0xff)
- } else {
- objectWriteUInt16(this, value, offset, false)
- }
- return offset + 2
- }
-
- function objectWriteUInt32 (buf, value, offset, littleEndian) {
- if (value < 0) value = 0xffffffff + value + 1
- for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {
- buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
- }
- }
-
- Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
- value = +value
- offset = offset | 0
- if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
- if (Buffer.TYPED_ARRAY_SUPPORT) {
- this[offset + 3] = (value >>> 24)
- this[offset + 2] = (value >>> 16)
- this[offset + 1] = (value >>> 8)
- this[offset] = (value & 0xff)
- } else {
- objectWriteUInt32(this, value, offset, true)
- }
- return offset + 4
- }
-
- Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
- value = +value
- offset = offset | 0
- if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
- if (Buffer.TYPED_ARRAY_SUPPORT) {
- this[offset] = (value >>> 24)
- this[offset + 1] = (value >>> 16)
- this[offset + 2] = (value >>> 8)
- this[offset + 3] = (value & 0xff)
- } else {
- objectWriteUInt32(this, value, offset, false)
- }
- return offset + 4
- }
-
- Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
- value = +value
- offset = offset | 0
- if (!noAssert) {
- var limit = Math.pow(2, 8 * byteLength - 1)
-
- checkInt(this, value, offset, byteLength, limit - 1, -limit)
- }
-
- var i = 0
- var mul = 1
- var sub = 0
- this[offset] = value & 0xFF
- while (++i < byteLength && (mul *= 0x100)) {
- if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
- sub = 1
- }
- this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
- }
-
- return offset + byteLength
- }
-
- Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
- value = +value
- offset = offset | 0
- if (!noAssert) {
- var limit = Math.pow(2, 8 * byteLength - 1)
-
- checkInt(this, value, offset, byteLength, limit - 1, -limit)
- }
-
- var i = byteLength - 1
- var mul = 1
- var sub = 0
- this[offset + i] = value & 0xFF
- while (--i >= 0 && (mul *= 0x100)) {
- if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
- sub = 1
- }
- this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
- }
-
- return offset + byteLength
- }
-
- Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
- value = +value
- offset = offset | 0
- if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
- if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
- if (value < 0) value = 0xff + value + 1
- this[offset] = (value & 0xff)
- return offset + 1
- }
-
- Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
- value = +value
- offset = offset | 0
- if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
- if (Buffer.TYPED_ARRAY_SUPPORT) {
- this[offset] = (value & 0xff)
- this[offset + 1] = (value >>> 8)
- } else {
- objectWriteUInt16(this, value, offset, true)
- }
- return offset + 2
- }
-
- Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
- value = +value
- offset = offset | 0
- if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
- if (Buffer.TYPED_ARRAY_SUPPORT) {
- this[offset] = (value >>> 8)
- this[offset + 1] = (value & 0xff)
- } else {
- objectWriteUInt16(this, value, offset, false)
- }
- return offset + 2
- }
-
- Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
- value = +value
- offset = offset | 0
- if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
- if (Buffer.TYPED_ARRAY_SUPPORT) {
- this[offset] = (value & 0xff)
- this[offset + 1] = (value >>> 8)
- this[offset + 2] = (value >>> 16)
- this[offset + 3] = (value >>> 24)
- } else {
- objectWriteUInt32(this, value, offset, true)
- }
- return offset + 4
- }
-
- Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
- value = +value
- offset = offset | 0
- if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
- if (value < 0) value = 0xffffffff + value + 1
- if (Buffer.TYPED_ARRAY_SUPPORT) {
- this[offset] = (value >>> 24)
- this[offset + 1] = (value >>> 16)
- this[offset + 2] = (value >>> 8)
- this[offset + 3] = (value & 0xff)
- } else {
- objectWriteUInt32(this, value, offset, false)
- }
- return offset + 4
- }
-
- function checkIEEE754 (buf, value, offset, ext, max, min) {
- if (offset + ext > buf.length) throw new RangeError('Index out of range')
- if (offset < 0) throw new RangeError('Index out of range')
- }
-
- function writeFloat (buf, value, offset, littleEndian, noAssert) {
- if (!noAssert) {
- checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
- }
- ieee754.write(buf, value, offset, littleEndian, 23, 4)
- return offset + 4
- }
-
- Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
- return writeFloat(this, value, offset, true, noAssert)
- }
-
- Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
- return writeFloat(this, value, offset, false, noAssert)
- }
-
- function writeDouble (buf, value, offset, littleEndian, noAssert) {
- if (!noAssert) {
- checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
- }
- ieee754.write(buf, value, offset, littleEndian, 52, 8)
- return offset + 8
- }
-
- Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
- return writeDouble(this, value, offset, true, noAssert)
- }
-
- Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
- return writeDouble(this, value, offset, false, noAssert)
- }
-
- // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
- Buffer.prototype.copy = function copy (target, targetStart, start, end) {
- if (!start) start = 0
- if (!end && end !== 0) end = this.length
- if (targetStart >= target.length) targetStart = target.length
- if (!targetStart) targetStart = 0
- if (end > 0 && end < start) end = start
-
- // Copy 0 bytes; we're done
- if (end === start) return 0
- if (target.length === 0 || this.length === 0) return 0
-
- // Fatal error conditions
- if (targetStart < 0) {
- throw new RangeError('targetStart out of bounds')
- }
- if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
- if (end < 0) throw new RangeError('sourceEnd out of bounds')
-
- // Are we oob?
- if (end > this.length) end = this.length
- if (target.length - targetStart < end - start) {
- end = target.length - targetStart + start
- }
-
- var len = end - start
- var i
-
- if (this === target && start < targetStart && targetStart < end) {
- // descending copy from end
- for (i = len - 1; i >= 0; --i) {
- target[i + targetStart] = this[i + start]
- }
- } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
- // ascending copy from start
- for (i = 0; i < len; ++i) {
- target[i + targetStart] = this[i + start]
- }
- } else {
- Uint8Array.prototype.set.call(
- target,
- this.subarray(start, start + len),
- targetStart
- )
- }
-
- return len
- }
-
- // Usage:
- // buffer.fill(number[, offset[, end]])
- // buffer.fill(buffer[, offset[, end]])
- // buffer.fill(string[, offset[, end]][, encoding])
- Buffer.prototype.fill = function fill (val, start, end, encoding) {
- // Handle string cases:
- if (typeof val === 'string') {
- if (typeof start === 'string') {
- encoding = start
- start = 0
- end = this.length
- } else if (typeof end === 'string') {
- encoding = end
- end = this.length
- }
- if (val.length === 1) {
- var code = val.charCodeAt(0)
- if (code < 256) {
- val = code
- }
- }
- if (encoding !== undefined && typeof encoding !== 'string') {
- throw new TypeError('encoding must be a string')
- }
- if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
- throw new TypeError('Unknown encoding: ' + encoding)
- }
- } else if (typeof val === 'number') {
- val = val & 255
- }
-
- // Invalid ranges are not set to a default, so can range check early.
- if (start < 0 || this.length < start || this.length < end) {
- throw new RangeError('Out of range index')
- }
-
- if (end <= start) {
- return this
- }
-
- start = start >>> 0
- end = end === undefined ? this.length : end >>> 0
-
- if (!val) val = 0
-
- var i
- if (typeof val === 'number') {
- for (i = start; i < end; ++i) {
- this[i] = val
- }
- } else {
- var bytes = Buffer.isBuffer(val)
- ? val
- : utf8ToBytes(new Buffer(val, encoding).toString())
- var len = bytes.length
- for (i = 0; i < end - start; ++i) {
- this[i + start] = bytes[i % len]
- }
- }
-
- return this
- }
-
- // HELPER FUNCTIONS
- // ================
-
- var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g
-
- function base64clean (str) {
- // Node strips out invalid characters like \n and \t from the string, base64-js does not
- str = stringtrim(str).replace(INVALID_BASE64_RE, '')
- // Node converts strings with length < 2 to ''
- if (str.length < 2) return ''
- // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
- while (str.length % 4 !== 0) {
- str = str + '='
- }
- return str
- }
-
- function stringtrim (str) {
- if (str.trim) return str.trim()
- return str.replace(/^\s+|\s+$/g, '')
- }
-
- function toHex (n) {
- if (n < 16) return '0' + n.toString(16)
- return n.toString(16)
- }
-
- function utf8ToBytes (string, units) {
- units = units || Infinity
- var codePoint
- var length = string.length
- var leadSurrogate = null
- var bytes = []
-
- for (var i = 0; i < length; ++i) {
- codePoint = string.charCodeAt(i)
-
- // is surrogate component
- if (codePoint > 0xD7FF && codePoint < 0xE000) {
- // last char was a lead
- if (!leadSurrogate) {
- // no lead yet
- if (codePoint > 0xDBFF) {
- // unexpected trail
- if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
- continue
- } else if (i + 1 === length) {
- // unpaired lead
- if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
- continue
- }
-
- // valid lead
- leadSurrogate = codePoint
-
- continue
- }
-
- // 2 leads in a row
- if (codePoint < 0xDC00) {
- if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
- leadSurrogate = codePoint
- continue
- }
-
- // valid surrogate pair
- codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
- } else if (leadSurrogate) {
- // valid bmp char, but last char was a lead
- if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
- }
-
- leadSurrogate = null
-
- // encode utf8
- if (codePoint < 0x80) {
- if ((units -= 1) < 0) break
- bytes.push(codePoint)
- } else if (codePoint < 0x800) {
- if ((units -= 2) < 0) break
- bytes.push(
- codePoint >> 0x6 | 0xC0,
- codePoint & 0x3F | 0x80
- )
- } else if (codePoint < 0x10000) {
- if ((units -= 3) < 0) break
- bytes.push(
- codePoint >> 0xC | 0xE0,
- codePoint >> 0x6 & 0x3F | 0x80,
- codePoint & 0x3F | 0x80
- )
- } else if (codePoint < 0x110000) {
- if ((units -= 4) < 0) break
- bytes.push(
- codePoint >> 0x12 | 0xF0,
- codePoint >> 0xC & 0x3F | 0x80,
- codePoint >> 0x6 & 0x3F | 0x80,
- codePoint & 0x3F | 0x80
- )
- } else {
- throw new Error('Invalid code point')
- }
- }
-
- return bytes
- }
-
- function asciiToBytes (str) {
- var byteArray = []
- for (var i = 0; i < str.length; ++i) {
- // Node's code seems to be doing this and not & 0x7F..
- byteArray.push(str.charCodeAt(i) & 0xFF)
- }
- return byteArray
- }
-
- function utf16leToBytes (str, units) {
- var c, hi, lo
- var byteArray = []
- for (var i = 0; i < str.length; ++i) {
- if ((units -= 2) < 0) break
-
- c = str.charCodeAt(i)
- hi = c >> 8
- lo = c % 256
- byteArray.push(lo)
- byteArray.push(hi)
- }
-
- return byteArray
- }
-
- function base64ToBytes (str) {
- return base64.toByteArray(base64clean(str))
- }
-
- function blitBuffer (src, dst, offset, length) {
- for (var i = 0; i < length; ++i) {
- if ((i + offset >= dst.length) || (i >= src.length)) break
- dst[i + offset] = src[i]
- }
- return i
- }
-
- function isnan (val) {
- return val !== val // eslint-disable-line no-self-compare
- }
-
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(24)))
-
- /***/ }),
- /* 50 */
- /***/ (function(module, exports, __webpack_require__) {
-
- // browser shim for xmlhttprequest module
-
- var hasCORS = __webpack_require__(119);
-
- module.exports = function (opts) {
- var xdomain = opts.xdomain;
-
- // scheme must be same when usign XDomainRequest
- // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx
- var xscheme = opts.xscheme;
-
- // XDomainRequest has a flow of not sending cookie, therefore it should be disabled as a default.
- // https://github.com/Automattic/engine.io-client/pull/217
- var enablesXDR = opts.enablesXDR;
-
- // XMLHttpRequest can be disabled on IE
- try {
- if ('undefined' !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {
- return new XMLHttpRequest();
- }
- } catch (e) { }
-
- // Use XDomainRequest for IE8 if enablesXDR is true
- // because loading bar keeps flashing when using jsonp-polling
- // https://github.com/yujiosaka/socke.io-ie8-loading-example
- try {
- if ('undefined' !== typeof XDomainRequest && !xscheme && enablesXDR) {
- return new XDomainRequest();
- }
- } catch (e) { }
-
- if (!xdomain) {
- try {
- return new self[['Active'].concat('Object').join('X')]('Microsoft.XMLHTTP');
- } catch (e) { }
- }
- };
-
-
- /***/ }),
- /* 51 */
- /***/ (function(module, exports, __webpack_require__) {
-
- /**
- * Module dependencies.
- */
-
- var parser = __webpack_require__(18);
- var Emitter = __webpack_require__(17);
-
- /**
- * Module exports.
- */
-
- module.exports = Transport;
-
- /**
- * Transport abstract constructor.
- *
- * @param {Object} options.
- * @api private
- */
-
- function Transport (opts) {
- this.path = opts.path;
- this.hostname = opts.hostname;
- this.port = opts.port;
- this.secure = opts.secure;
- this.query = opts.query;
- this.timestampParam = opts.timestampParam;
- this.timestampRequests = opts.timestampRequests;
- this.readyState = '';
- this.agent = opts.agent || false;
- this.socket = opts.socket;
- this.enablesXDR = opts.enablesXDR;
-
- // SSL options for Node.js client
- this.pfx = opts.pfx;
- this.key = opts.key;
- this.passphrase = opts.passphrase;
- this.cert = opts.cert;
- this.ca = opts.ca;
- this.ciphers = opts.ciphers;
- this.rejectUnauthorized = opts.rejectUnauthorized;
- this.forceNode = opts.forceNode;
-
- // results of ReactNative environment detection
- this.isReactNative = opts.isReactNative;
-
- // other options for Node.js client
- this.extraHeaders = opts.extraHeaders;
- this.localAddress = opts.localAddress;
- }
-
- /**
- * Mix in `Emitter`.
- */
-
- Emitter(Transport.prototype);
-
- /**
- * Emits an error.
- *
- * @param {String} str
- * @return {Transport} for chaining
- * @api public
- */
-
- Transport.prototype.onError = function (msg, desc) {
- var err = new Error(msg);
- err.type = 'TransportError';
- err.description = desc;
- this.emit('error', err);
- return this;
- };
-
- /**
- * Opens the transport.
- *
- * @api public
- */
-
- Transport.prototype.open = function () {
- if ('closed' === this.readyState || '' === this.readyState) {
- this.readyState = 'opening';
- this.doOpen();
- }
-
- return this;
- };
-
- /**
- * Closes the transport.
- *
- * @api private
- */
-
- Transport.prototype.close = function () {
- if ('opening' === this.readyState || 'open' === this.readyState) {
- this.doClose();
- this.onClose();
- }
-
- return this;
- };
-
- /**
- * Sends multiple packets.
- *
- * @param {Array} packets
- * @api private
- */
-
- Transport.prototype.send = function (packets) {
- if ('open' === this.readyState) {
- this.write(packets);
- } else {
- throw new Error('Transport not open');
- }
- };
-
- /**
- * Called upon open
- *
- * @api private
- */
-
- Transport.prototype.onOpen = function () {
- this.readyState = 'open';
- this.writable = true;
- this.emit('open');
- };
-
- /**
- * Called with data.
- *
- * @param {String} data
- * @api private
- */
-
- Transport.prototype.onData = function (data) {
- var packet = parser.decodePacket(data, this.socket.binaryType);
- this.onPacket(packet);
- };
-
- /**
- * Called with a decoded packet.
- */
-
- Transport.prototype.onPacket = function (packet) {
- this.emit('packet', packet);
- };
-
- /**
- * Called upon close.
- *
- * @api private
- */
-
- Transport.prototype.onClose = function () {
- this.readyState = 'closed';
- this.emit('close');
- };
-
-
- /***/ }),
- /* 52 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var TimerObservable_1 = __webpack_require__(138);
- exports.timer = TimerObservable_1.TimerObservable.create;
- //# sourceMappingURL=timer.js.map
-
- /***/ }),
- /* 53 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var ignoreElements_1 = __webpack_require__(11);
- var tap_1 = __webpack_require__(5);
- var effects_1 = __webpack_require__(8);
- /**
- * Set the local client options
- * @param xs
- * @param inputs
- */
- function setOptionsEffect(xs, inputs) {
- return xs.pipe(tap_1.tap(function (options) { return inputs.option$.next(options); }),
- // map(() => consoleInfo('set options'))
- ignoreElements_1.ignoreElements());
- }
- exports.setOptionsEffect = setOptionsEffect;
- function setOptions(options) {
- return [effects_1.EffectNames.SetOptions, options];
- }
- exports.setOptions = setOptions;
-
-
- /***/ }),
- /* 54 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var isScheduler_1 = __webpack_require__(25);
- var of_1 = __webpack_require__(9);
- var from_1 = __webpack_require__(87);
- var concatAll_1 = __webpack_require__(150);
- /* tslint:enable:max-line-length */
- /**
- * Creates an output Observable which sequentially emits all values from given
- * Observable and then moves on to the next.
- *
- * <span class="informal">Concatenates multiple Observables together by
- * sequentially emitting their values, one Observable after the other.</span>
- *
- * <img src="./img/concat.png" width="100%">
- *
- * `concat` joins multiple Observables together, by subscribing to them one at a time and
- * merging their results into the output Observable. You can pass either an array of
- * Observables, or put them directly as arguments. Passing an empty array will result
- * in Observable that completes immediately.
- *
- * `concat` will subscribe to first input Observable and emit all its values, without
- * changing or affecting them in any way. When that Observable completes, it will
- * subscribe to then next Observable passed and, again, emit its values. This will be
- * repeated, until the operator runs out of Observables. When last input Observable completes,
- * `concat` will complete as well. At any given moment only one Observable passed to operator
- * emits values. If you would like to emit values from passed Observables concurrently, check out
- * {@link merge} instead, especially with optional `concurrent` parameter. As a matter of fact,
- * `concat` is an equivalent of `merge` operator with `concurrent` parameter set to `1`.
- *
- * Note that if some input Observable never completes, `concat` will also never complete
- * and Observables following the one that did not complete will never be subscribed. On the other
- * hand, if some Observable simply completes immediately after it is subscribed, it will be
- * invisible for `concat`, which will just move on to the next Observable.
- *
- * If any Observable in chain errors, instead of passing control to the next Observable,
- * `concat` will error immediately as well. Observables that would be subscribed after
- * the one that emitted error, never will.
- *
- * If you pass to `concat` the same Observable many times, its stream of values
- * will be "replayed" on every subscription, which means you can repeat given Observable
- * as many times as you like. If passing the same Observable to `concat` 1000 times becomes tedious,
- * you can always use {@link repeat}.
- *
- * @example <caption>Concatenate a timer counting from 0 to 3 with a synchronous sequence from 1 to 10</caption>
- * var timer = Rx.Observable.interval(1000).take(4);
- * var sequence = Rx.Observable.range(1, 10);
- * var result = Rx.Observable.concat(timer, sequence);
- * result.subscribe(x => console.log(x));
- *
- * // results in:
- * // 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 -immediate-> 1 ... 10
- *
- *
- * @example <caption>Concatenate an array of 3 Observables</caption>
- * var timer1 = Rx.Observable.interval(1000).take(10);
- * var timer2 = Rx.Observable.interval(2000).take(6);
- * var timer3 = Rx.Observable.interval(500).take(10);
- * var result = Rx.Observable.concat([timer1, timer2, timer3]); // note that array is passed
- * result.subscribe(x => console.log(x));
- *
- * // results in the following:
- * // (Prints to console sequentially)
- * // -1000ms-> 0 -1000ms-> 1 -1000ms-> ... 9
- * // -2000ms-> 0 -2000ms-> 1 -2000ms-> ... 5
- * // -500ms-> 0 -500ms-> 1 -500ms-> ... 9
- *
- *
- * @example <caption>Concatenate the same Observable to repeat it</caption>
- * const timer = Rx.Observable.interval(1000).take(2);
- *
- * Rx.Observable.concat(timer, timer) // concating the same Observable!
- * .subscribe(
- * value => console.log(value),
- * err => {},
- * () => console.log('...and it is done!')
- * );
- *
- * // Logs:
- * // 0 after 1s
- * // 1 after 2s
- * // 0 after 3s
- * // 1 after 4s
- * // "...and it is done!" also after 4s
- *
- * @see {@link concatAll}
- * @see {@link concatMap}
- * @see {@link concatMapTo}
- *
- * @param {ObservableInput} input1 An input Observable to concatenate with others.
- * @param {ObservableInput} input2 An input Observable to concatenate with others.
- * More than one input Observables may be given as argument.
- * @param {Scheduler} [scheduler=null] An optional IScheduler to schedule each
- * Observable subscription on.
- * @return {Observable} All values of each passed Observable merged into a
- * single Observable, in order, in serial fashion.
- * @static true
- * @name concat
- * @owner Observable
- */
- function concat() {
- var observables = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- observables[_i - 0] = arguments[_i];
- }
- if (observables.length === 1 || (observables.length === 2 && isScheduler_1.isScheduler(observables[1]))) {
- return from_1.from(observables[0]);
- }
- return concatAll_1.concatAll()(of_1.of.apply(void 0, observables));
- }
- exports.concat = concat;
- //# sourceMappingURL=concat.js.map
-
- /***/ }),
- /* 55 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var mergeMap_1 = __webpack_require__(15);
- var identity_1 = __webpack_require__(151);
- /**
- * Converts a higher-order Observable into a first-order Observable which
- * concurrently delivers all values that are emitted on the inner Observables.
- *
- * <span class="informal">Flattens an Observable-of-Observables.</span>
- *
- * <img src="./img/mergeAll.png" width="100%">
- *
- * `mergeAll` subscribes to an Observable that emits Observables, also known as
- * a higher-order Observable. Each time it observes one of these emitted inner
- * Observables, it subscribes to that and delivers all the values from the
- * inner Observable on the output Observable. The output Observable only
- * completes once all inner Observables have completed. Any error delivered by
- * a inner Observable will be immediately emitted on the output Observable.
- *
- * @example <caption>Spawn a new interval Observable for each click event, and blend their outputs as one Observable</caption>
- * var clicks = Rx.Observable.fromEvent(document, 'click');
- * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000));
- * var firstOrder = higherOrder.mergeAll();
- * firstOrder.subscribe(x => console.log(x));
- *
- * @example <caption>Count from 0 to 9 every second for each click, but only allow 2 concurrent timers</caption>
- * var clicks = Rx.Observable.fromEvent(document, 'click');
- * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000).take(10));
- * var firstOrder = higherOrder.mergeAll(2);
- * firstOrder.subscribe(x => console.log(x));
- *
- * @see {@link combineAll}
- * @see {@link concatAll}
- * @see {@link exhaust}
- * @see {@link merge}
- * @see {@link mergeMap}
- * @see {@link mergeMapTo}
- * @see {@link mergeScan}
- * @see {@link switch}
- * @see {@link zipAll}
- *
- * @param {number} [concurrent=Number.POSITIVE_INFINITY] Maximum number of inner
- * Observables being subscribed to concurrently.
- * @return {Observable} An Observable that emits values coming from all the
- * inner Observables emitted by the source Observable.
- * @method mergeAll
- * @owner Observable
- */
- function mergeAll(concurrent) {
- if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }
- return mergeMap_1.mergeMap(identity_1.identity, null, concurrent);
- }
- exports.mergeAll = mergeAll;
- //# sourceMappingURL=mergeAll.js.map
-
- /***/ }),
- /* 56 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- function isObject(x) {
- return x != null && typeof x === 'object';
- }
- exports.isObject = isObject;
- //# sourceMappingURL=isObject.js.map
-
- /***/ }),
- /* 57 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- exports.empty = {
- closed: true,
- next: function (value) { },
- error: function (err) { throw err; },
- complete: function () { }
- };
- //# sourceMappingURL=Observer.js.map
-
- /***/ }),
- /* 58 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- /* tslint:disable:no-empty */
- function noop() { }
- exports.noop = noop;
- //# sourceMappingURL=noop.js.map
-
- /***/ }),
- /* 59 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- exports.isArrayLike = (function (x) { return x && typeof x.length === 'number'; });
- //# sourceMappingURL=isArrayLike.js.map
-
- /***/ }),
- /* 60 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- function isPromise(value) {
- return value && typeof value.subscribe !== 'function' && typeof value.then === 'function';
- }
- exports.isPromise = isPromise;
- //# sourceMappingURL=isPromise.js.map
-
- /***/ }),
- /* 61 */
- /***/ (function(module, exports) {
-
- /**
- * Parses an URI
- *
- * @author Steven Levithan <stevenlevithan.com> (MIT license)
- * @api private
- */
-
- var re = /^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/;
-
- var parts = [
- 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'
- ];
-
- module.exports = function parseuri(str) {
- var src = str,
- b = str.indexOf('['),
- e = str.indexOf(']');
-
- if (b != -1 && e != -1) {
- str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);
- }
-
- var m = re.exec(str || ''),
- uri = {},
- i = 14;
-
- while (i--) {
- uri[parts[i]] = m[i] || '';
- }
-
- if (b != -1 && e != -1) {
- uri.source = src;
- uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');
- uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');
- uri.ipv6uri = true;
- }
-
- return uri;
- };
-
-
- /***/ }),
- /* 62 */
- /***/ (function(module, exports) {
-
- var toString = {}.toString;
-
- module.exports = Array.isArray || function (arr) {
- return toString.call(arr) == '[object Array]';
- };
-
-
- /***/ }),
- /* 63 */
- /***/ (function(module, exports, __webpack_require__) {
-
- /* WEBPACK VAR INJECTION */(function(Buffer) {
- module.exports = isBuf;
-
- var withNativeBuffer = typeof Buffer === 'function' && typeof Buffer.isBuffer === 'function';
- var withNativeArrayBuffer = typeof ArrayBuffer === 'function';
-
- var isView = function (obj) {
- return typeof ArrayBuffer.isView === 'function' ? ArrayBuffer.isView(obj) : (obj.buffer instanceof ArrayBuffer);
- };
-
- /**
- * Returns true if obj is a buffer or an arraybuffer.
- *
- * @api private
- */
-
- function isBuf(obj) {
- return (withNativeBuffer && Buffer.isBuffer(obj)) ||
- (withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj)));
- }
-
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(49).Buffer))
-
- /***/ }),
- /* 64 */
- /***/ (function(module, exports, __webpack_require__) {
-
-
- /**
- * Module dependencies.
- */
-
- var eio = __webpack_require__(117);
- var Socket = __webpack_require__(70);
- var Emitter = __webpack_require__(17);
- var parser = __webpack_require__(48);
- var on = __webpack_require__(71);
- var bind = __webpack_require__(72);
- var debug = __webpack_require__(32)('socket.io-client:manager');
- var indexOf = __webpack_require__(69);
- var Backoff = __webpack_require__(133);
-
- /**
- * IE6+ hasOwnProperty
- */
-
- var has = Object.prototype.hasOwnProperty;
-
- /**
- * Module exports
- */
-
- module.exports = Manager;
-
- /**
- * `Manager` constructor.
- *
- * @param {String} engine instance or engine uri/opts
- * @param {Object} options
- * @api public
- */
-
- function Manager (uri, opts) {
- if (!(this instanceof Manager)) return new Manager(uri, opts);
- if (uri && ('object' === typeof uri)) {
- opts = uri;
- uri = undefined;
- }
- opts = opts || {};
-
- opts.path = opts.path || '/socket.io';
- this.nsps = {};
- this.subs = [];
- this.opts = opts;
- this.reconnection(opts.reconnection !== false);
- this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);
- this.reconnectionDelay(opts.reconnectionDelay || 1000);
- this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);
- this.randomizationFactor(opts.randomizationFactor || 0.5);
- this.backoff = new Backoff({
- min: this.reconnectionDelay(),
- max: this.reconnectionDelayMax(),
- jitter: this.randomizationFactor()
- });
- this.timeout(null == opts.timeout ? 20000 : opts.timeout);
- this.readyState = 'closed';
- this.uri = uri;
- this.connecting = [];
- this.lastPing = null;
- this.encoding = false;
- this.packetBuffer = [];
- var _parser = opts.parser || parser;
- this.encoder = new _parser.Encoder();
- this.decoder = new _parser.Decoder();
- this.autoConnect = opts.autoConnect !== false;
- if (this.autoConnect) this.open();
- }
-
- /**
- * Propagate given event to sockets and emit on `this`
- *
- * @api private
- */
-
- Manager.prototype.emitAll = function () {
- this.emit.apply(this, arguments);
- for (var nsp in this.nsps) {
- if (has.call(this.nsps, nsp)) {
- this.nsps[nsp].emit.apply(this.nsps[nsp], arguments);
- }
- }
- };
-
- /**
- * Update `socket.id` of all sockets
- *
- * @api private
- */
-
- Manager.prototype.updateSocketIds = function () {
- for (var nsp in this.nsps) {
- if (has.call(this.nsps, nsp)) {
- this.nsps[nsp].id = this.generateId(nsp);
- }
- }
- };
-
- /**
- * generate `socket.id` for the given `nsp`
- *
- * @param {String} nsp
- * @return {String}
- * @api private
- */
-
- Manager.prototype.generateId = function (nsp) {
- return (nsp === '/' ? '' : (nsp + '#')) + this.engine.id;
- };
-
- /**
- * Mix in `Emitter`.
- */
-
- Emitter(Manager.prototype);
-
- /**
- * Sets the `reconnection` config.
- *
- * @param {Boolean} true/false if it should automatically reconnect
- * @return {Manager} self or value
- * @api public
- */
-
- Manager.prototype.reconnection = function (v) {
- if (!arguments.length) return this._reconnection;
- this._reconnection = !!v;
- return this;
- };
-
- /**
- * Sets the reconnection attempts config.
- *
- * @param {Number} max reconnection attempts before giving up
- * @return {Manager} self or value
- * @api public
- */
-
- Manager.prototype.reconnectionAttempts = function (v) {
- if (!arguments.length) return this._reconnectionAttempts;
- this._reconnectionAttempts = v;
- return this;
- };
-
- /**
- * Sets the delay between reconnections.
- *
- * @param {Number} delay
- * @return {Manager} self or value
- * @api public
- */
-
- Manager.prototype.reconnectionDelay = function (v) {
- if (!arguments.length) return this._reconnectionDelay;
- this._reconnectionDelay = v;
- this.backoff && this.backoff.setMin(v);
- return this;
- };
-
- Manager.prototype.randomizationFactor = function (v) {
- if (!arguments.length) return this._randomizationFactor;
- this._randomizationFactor = v;
- this.backoff && this.backoff.setJitter(v);
- return this;
- };
-
- /**
- * Sets the maximum delay between reconnections.
- *
- * @param {Number} delay
- * @return {Manager} self or value
- * @api public
- */
-
- Manager.prototype.reconnectionDelayMax = function (v) {
- if (!arguments.length) return this._reconnectionDelayMax;
- this._reconnectionDelayMax = v;
- this.backoff && this.backoff.setMax(v);
- return this;
- };
-
- /**
- * Sets the connection timeout. `false` to disable
- *
- * @return {Manager} self or value
- * @api public
- */
-
- Manager.prototype.timeout = function (v) {
- if (!arguments.length) return this._timeout;
- this._timeout = v;
- return this;
- };
-
- /**
- * Starts trying to reconnect if reconnection is enabled and we have not
- * started reconnecting yet
- *
- * @api private
- */
-
- Manager.prototype.maybeReconnectOnOpen = function () {
- // Only try to reconnect if it's the first time we're connecting
- if (!this.reconnecting && this._reconnection && this.backoff.attempts === 0) {
- // keeps reconnection from firing twice for the same reconnection loop
- this.reconnect();
- }
- };
-
- /**
- * Sets the current transport `socket`.
- *
- * @param {Function} optional, callback
- * @return {Manager} self
- * @api public
- */
-
- Manager.prototype.open =
- Manager.prototype.connect = function (fn, opts) {
- debug('readyState %s', this.readyState);
- if (~this.readyState.indexOf('open')) return this;
-
- debug('opening %s', this.uri);
- this.engine = eio(this.uri, this.opts);
- var socket = this.engine;
- var self = this;
- this.readyState = 'opening';
- this.skipReconnect = false;
-
- // emit `open`
- var openSub = on(socket, 'open', function () {
- self.onopen();
- fn && fn();
- });
-
- // emit `connect_error`
- var errorSub = on(socket, 'error', function (data) {
- debug('connect_error');
- self.cleanup();
- self.readyState = 'closed';
- self.emitAll('connect_error', data);
- if (fn) {
- var err = new Error('Connection error');
- err.data = data;
- fn(err);
- } else {
- // Only do this if there is no fn to handle the error
- self.maybeReconnectOnOpen();
- }
- });
-
- // emit `connect_timeout`
- if (false !== this._timeout) {
- var timeout = this._timeout;
- debug('connect attempt will timeout after %d', timeout);
-
- // set timer
- var timer = setTimeout(function () {
- debug('connect attempt timed out after %d', timeout);
- openSub.destroy();
- socket.close();
- socket.emit('error', 'timeout');
- self.emitAll('connect_timeout', timeout);
- }, timeout);
-
- this.subs.push({
- destroy: function () {
- clearTimeout(timer);
- }
- });
- }
-
- this.subs.push(openSub);
- this.subs.push(errorSub);
-
- return this;
- };
-
- /**
- * Called upon transport open.
- *
- * @api private
- */
-
- Manager.prototype.onopen = function () {
- debug('open');
-
- // clear old subs
- this.cleanup();
-
- // mark as open
- this.readyState = 'open';
- this.emit('open');
-
- // add new subs
- var socket = this.engine;
- this.subs.push(on(socket, 'data', bind(this, 'ondata')));
- this.subs.push(on(socket, 'ping', bind(this, 'onping')));
- this.subs.push(on(socket, 'pong', bind(this, 'onpong')));
- this.subs.push(on(socket, 'error', bind(this, 'onerror')));
- this.subs.push(on(socket, 'close', bind(this, 'onclose')));
- this.subs.push(on(this.decoder, 'decoded', bind(this, 'ondecoded')));
- };
-
- /**
- * Called upon a ping.
- *
- * @api private
- */
-
- Manager.prototype.onping = function () {
- this.lastPing = new Date();
- this.emitAll('ping');
- };
-
- /**
- * Called upon a packet.
- *
- * @api private
- */
-
- Manager.prototype.onpong = function () {
- this.emitAll('pong', new Date() - this.lastPing);
- };
-
- /**
- * Called with data.
- *
- * @api private
- */
-
- Manager.prototype.ondata = function (data) {
- this.decoder.add(data);
- };
-
- /**
- * Called when parser fully decodes a packet.
- *
- * @api private
- */
-
- Manager.prototype.ondecoded = function (packet) {
- this.emit('packet', packet);
- };
-
- /**
- * Called upon socket error.
- *
- * @api private
- */
-
- Manager.prototype.onerror = function (err) {
- debug('error', err);
- this.emitAll('error', err);
- };
-
- /**
- * Creates a new socket for the given `nsp`.
- *
- * @return {Socket}
- * @api public
- */
-
- Manager.prototype.socket = function (nsp, opts) {
- var socket = this.nsps[nsp];
- if (!socket) {
- socket = new Socket(this, nsp, opts);
- this.nsps[nsp] = socket;
- var self = this;
- socket.on('connecting', onConnecting);
- socket.on('connect', function () {
- socket.id = self.generateId(nsp);
- });
-
- if (this.autoConnect) {
- // manually call here since connecting event is fired before listening
- onConnecting();
- }
- }
-
- function onConnecting () {
- if (!~indexOf(self.connecting, socket)) {
- self.connecting.push(socket);
- }
- }
-
- return socket;
- };
-
- /**
- * Called upon a socket close.
- *
- * @param {Socket} socket
- */
-
- Manager.prototype.destroy = function (socket) {
- var index = indexOf(this.connecting, socket);
- if (~index) this.connecting.splice(index, 1);
- if (this.connecting.length) return;
-
- this.close();
- };
-
- /**
- * Writes a packet.
- *
- * @param {Object} packet
- * @api private
- */
-
- Manager.prototype.packet = function (packet) {
- debug('writing packet %j', packet);
- var self = this;
- if (packet.query && packet.type === 0) packet.nsp += '?' + packet.query;
-
- if (!self.encoding) {
- // encode, then write to engine with result
- self.encoding = true;
- this.encoder.encode(packet, function (encodedPackets) {
- for (var i = 0; i < encodedPackets.length; i++) {
- self.engine.write(encodedPackets[i], packet.options);
- }
- self.encoding = false;
- self.processPacketQueue();
- });
- } else { // add packet to the queue
- self.packetBuffer.push(packet);
- }
- };
-
- /**
- * If packet buffer is non-empty, begins encoding the
- * next packet in line.
- *
- * @api private
- */
-
- Manager.prototype.processPacketQueue = function () {
- if (this.packetBuffer.length > 0 && !this.encoding) {
- var pack = this.packetBuffer.shift();
- this.packet(pack);
- }
- };
-
- /**
- * Clean up transport subscriptions and packet buffer.
- *
- * @api private
- */
-
- Manager.prototype.cleanup = function () {
- debug('cleanup');
-
- var subsLength = this.subs.length;
- for (var i = 0; i < subsLength; i++) {
- var sub = this.subs.shift();
- sub.destroy();
- }
-
- this.packetBuffer = [];
- this.encoding = false;
- this.lastPing = null;
-
- this.decoder.destroy();
- };
-
- /**
- * Close the current socket.
- *
- * @api private
- */
-
- Manager.prototype.close =
- Manager.prototype.disconnect = function () {
- debug('disconnect');
- this.skipReconnect = true;
- this.reconnecting = false;
- if ('opening' === this.readyState) {
- // `onclose` will not fire because
- // an open event never happened
- this.cleanup();
- }
- this.backoff.reset();
- this.readyState = 'closed';
- if (this.engine) this.engine.close();
- };
-
- /**
- * Called upon engine close.
- *
- * @api private
- */
-
- Manager.prototype.onclose = function (reason) {
- debug('onclose');
-
- this.cleanup();
- this.backoff.reset();
- this.readyState = 'closed';
- this.emit('close', reason);
-
- if (this._reconnection && !this.skipReconnect) {
- this.reconnect();
- }
- };
-
- /**
- * Attempt a reconnection.
- *
- * @api private
- */
-
- Manager.prototype.reconnect = function () {
- if (this.reconnecting || this.skipReconnect) return this;
-
- var self = this;
-
- if (this.backoff.attempts >= this._reconnectionAttempts) {
- debug('reconnect failed');
- this.backoff.reset();
- this.emitAll('reconnect_failed');
- this.reconnecting = false;
- } else {
- var delay = this.backoff.duration();
- debug('will wait %dms before reconnect attempt', delay);
-
- this.reconnecting = true;
- var timer = setTimeout(function () {
- if (self.skipReconnect) return;
-
- debug('attempting reconnect');
- self.emitAll('reconnect_attempt', self.backoff.attempts);
- self.emitAll('reconnecting', self.backoff.attempts);
-
- // check again for the case socket closed in above events
- if (self.skipReconnect) return;
-
- self.open(function (err) {
- if (err) {
- debug('reconnect attempt error');
- self.reconnecting = false;
- self.reconnect();
- self.emitAll('reconnect_error', err.data);
- } else {
- debug('reconnect success');
- self.onreconnect();
- }
- });
- }, delay);
-
- this.subs.push({
- destroy: function () {
- clearTimeout(timer);
- }
- });
- }
- };
-
- /**
- * Called upon successful reconnect.
- *
- * @api private
- */
-
- Manager.prototype.onreconnect = function () {
- var attempt = this.backoff.attempts;
- this.reconnecting = false;
- this.backoff.reset();
- this.updateSocketIds();
- this.emitAll('reconnect', attempt);
- };
-
-
- /***/ }),
- /* 65 */
- /***/ (function(module, exports, __webpack_require__) {
-
- /**
- * Module dependencies
- */
-
- var XMLHttpRequest = __webpack_require__(50);
- var XHR = __webpack_require__(120);
- var JSONP = __webpack_require__(129);
- var websocket = __webpack_require__(130);
-
- /**
- * Export transports.
- */
-
- exports.polling = polling;
- exports.websocket = websocket;
-
- /**
- * Polling transport polymorphic constructor.
- * Decides on xhr vs jsonp based on feature detection.
- *
- * @api private
- */
-
- function polling (opts) {
- var xhr;
- var xd = false;
- var xs = false;
- var jsonp = false !== opts.jsonp;
-
- if (typeof location !== 'undefined') {
- var isSSL = 'https:' === location.protocol;
- var port = location.port;
-
- // some user agents have empty `location.port`
- if (!port) {
- port = isSSL ? 443 : 80;
- }
-
- xd = opts.hostname !== location.hostname || port !== opts.port;
- xs = opts.secure !== isSSL;
- }
-
- opts.xdomain = xd;
- opts.xscheme = xs;
- xhr = new XMLHttpRequest(opts);
-
- if ('open' in xhr && !opts.forceJSONP) {
- return new XHR(opts);
- } else {
- if (!jsonp) throw new Error('JSONP disabled');
- return new JSONP(opts);
- }
- }
-
-
- /***/ }),
- /* 66 */
- /***/ (function(module, exports, __webpack_require__) {
-
- /**
- * Module dependencies.
- */
-
- var Transport = __webpack_require__(51);
- var parseqs = __webpack_require__(34);
- var parser = __webpack_require__(18);
- var inherit = __webpack_require__(35);
- var yeast = __webpack_require__(68);
- var debug = __webpack_require__(36)('engine.io-client:polling');
-
- /**
- * Module exports.
- */
-
- module.exports = Polling;
-
- /**
- * Is XHR2 supported?
- */
-
- var hasXHR2 = (function () {
- var XMLHttpRequest = __webpack_require__(50);
- var xhr = new XMLHttpRequest({ xdomain: false });
- return null != xhr.responseType;
- })();
-
- /**
- * Polling interface.
- *
- * @param {Object} opts
- * @api private
- */
-
- function Polling (opts) {
- var forceBase64 = (opts && opts.forceBase64);
- if (!hasXHR2 || forceBase64) {
- this.supportsBinary = false;
- }
- Transport.call(this, opts);
- }
-
- /**
- * Inherits from Transport.
- */
-
- inherit(Polling, Transport);
-
- /**
- * Transport name.
- */
-
- Polling.prototype.name = 'polling';
-
- /**
- * Opens the socket (triggers polling). We write a PING message to determine
- * when the transport is open.
- *
- * @api private
- */
-
- Polling.prototype.doOpen = function () {
- this.poll();
- };
-
- /**
- * Pauses polling.
- *
- * @param {Function} callback upon buffers are flushed and transport is paused
- * @api private
- */
-
- Polling.prototype.pause = function (onPause) {
- var self = this;
-
- this.readyState = 'pausing';
-
- function pause () {
- debug('paused');
- self.readyState = 'paused';
- onPause();
- }
-
- if (this.polling || !this.writable) {
- var total = 0;
-
- if (this.polling) {
- debug('we are currently polling - waiting to pause');
- total++;
- this.once('pollComplete', function () {
- debug('pre-pause polling complete');
- --total || pause();
- });
- }
-
- if (!this.writable) {
- debug('we are currently writing - waiting to pause');
- total++;
- this.once('drain', function () {
- debug('pre-pause writing complete');
- --total || pause();
- });
- }
- } else {
- pause();
- }
- };
-
- /**
- * Starts polling cycle.
- *
- * @api public
- */
-
- Polling.prototype.poll = function () {
- debug('polling');
- this.polling = true;
- this.doPoll();
- this.emit('poll');
- };
-
- /**
- * Overloads onData to detect payloads.
- *
- * @api private
- */
-
- Polling.prototype.onData = function (data) {
- var self = this;
- debug('polling got data %s', data);
- var callback = function (packet, index, total) {
- // if its the first message we consider the transport open
- if ('opening' === self.readyState) {
- self.onOpen();
- }
-
- // if its a close packet, we close the ongoing requests
- if ('close' === packet.type) {
- self.onClose();
- return false;
- }
-
- // otherwise bypass onData and handle the message
- self.onPacket(packet);
- };
-
- // decode payload
- parser.decodePayload(data, this.socket.binaryType, callback);
-
- // if an event did not trigger closing
- if ('closed' !== this.readyState) {
- // if we got data we're not polling
- this.polling = false;
- this.emit('pollComplete');
-
- if ('open' === this.readyState) {
- this.poll();
- } else {
- debug('ignoring poll - transport state "%s"', this.readyState);
- }
- }
- };
-
- /**
- * For polling, send a close packet.
- *
- * @api private
- */
-
- Polling.prototype.doClose = function () {
- var self = this;
-
- function close () {
- debug('writing close packet');
- self.write([{ type: 'close' }]);
- }
-
- if ('open' === this.readyState) {
- debug('transport open - closing');
- close();
- } else {
- // in case we're trying to close while
- // handshaking is in progress (GH-164)
- debug('transport not open - deferring close');
- this.once('open', close);
- }
- };
-
- /**
- * Writes a packets payload.
- *
- * @param {Array} data packets
- * @param {Function} drain callback
- * @api private
- */
-
- Polling.prototype.write = function (packets) {
- var self = this;
- this.writable = false;
- var callbackfn = function () {
- self.writable = true;
- self.emit('drain');
- };
-
- parser.encodePayload(packets, this.supportsBinary, function (data) {
- self.doWrite(data, callbackfn);
- });
- };
-
- /**
- * Generates uri for connection.
- *
- * @api private
- */
-
- Polling.prototype.uri = function () {
- var query = this.query || {};
- var schema = this.secure ? 'https' : 'http';
- var port = '';
-
- // cache busting is forced
- if (false !== this.timestampRequests) {
- query[this.timestampParam] = yeast();
- }
-
- if (!this.supportsBinary && !query.sid) {
- query.b64 = 1;
- }
-
- query = parseqs.encode(query);
-
- // avoid port if default for schema
- if (this.port && (('https' === schema && Number(this.port) !== 443) ||
- ('http' === schema && Number(this.port) !== 80))) {
- port = ':' + this.port;
- }
-
- // prepend ? to query
- if (query.length) {
- query = '?' + query;
- }
-
- var ipv6 = this.hostname.indexOf(':') !== -1;
- return schema + '://' + (ipv6 ? '[' + this.hostname + ']' : this.hostname) + port + this.path + query;
- };
-
-
- /***/ }),
- /* 67 */
- /***/ (function(module, exports, __webpack_require__) {
-
- /* WEBPACK VAR INJECTION */(function(Buffer) {/* global Blob File */
-
- /*
- * Module requirements.
- */
-
- var isArray = __webpack_require__(122);
-
- var toString = Object.prototype.toString;
- var withNativeBlob = typeof Blob === 'function' ||
- typeof Blob !== 'undefined' && toString.call(Blob) === '[object BlobConstructor]';
- var withNativeFile = typeof File === 'function' ||
- typeof File !== 'undefined' && toString.call(File) === '[object FileConstructor]';
-
- /**
- * Module exports.
- */
-
- module.exports = hasBinary;
-
- /**
- * Checks for binary data.
- *
- * Supports Buffer, ArrayBuffer, Blob and File.
- *
- * @param {Object} anything
- * @api public
- */
-
- function hasBinary (obj) {
- if (!obj || typeof obj !== 'object') {
- return false;
- }
-
- if (isArray(obj)) {
- for (var i = 0, l = obj.length; i < l; i++) {
- if (hasBinary(obj[i])) {
- return true;
- }
- }
- return false;
- }
-
- if ((typeof Buffer === 'function' && Buffer.isBuffer && Buffer.isBuffer(obj)) ||
- (typeof ArrayBuffer === 'function' && obj instanceof ArrayBuffer) ||
- (withNativeBlob && obj instanceof Blob) ||
- (withNativeFile && obj instanceof File)
- ) {
- return true;
- }
-
- // see: https://github.com/Automattic/has-binary/pull/4
- if (obj.toJSON && typeof obj.toJSON === 'function' && arguments.length === 1) {
- return hasBinary(obj.toJSON(), true);
- }
-
- for (var key in obj) {
- if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {
- return true;
- }
- }
-
- return false;
- }
-
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(49).Buffer))
-
- /***/ }),
- /* 68 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
-
- var alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split('')
- , length = 64
- , map = {}
- , seed = 0
- , i = 0
- , prev;
-
- /**
- * Return a string representing the specified number.
- *
- * @param {Number} num The number to convert.
- * @returns {String} The string representation of the number.
- * @api public
- */
- function encode(num) {
- var encoded = '';
-
- do {
- encoded = alphabet[num % length] + encoded;
- num = Math.floor(num / length);
- } while (num > 0);
-
- return encoded;
- }
-
- /**
- * Return the integer value specified by the given string.
- *
- * @param {String} str The string to convert.
- * @returns {Number} The integer value represented by the string.
- * @api public
- */
- function decode(str) {
- var decoded = 0;
-
- for (i = 0; i < str.length; i++) {
- decoded = decoded * length + map[str.charAt(i)];
- }
-
- return decoded;
- }
-
- /**
- * Yeast: A tiny growing id generator.
- *
- * @returns {String} A unique id.
- * @api public
- */
- function yeast() {
- var now = encode(+new Date());
-
- if (now !== prev) return seed = 0, prev = now;
- return now +'.'+ encode(seed++);
- }
-
- //
- // Map each character to its index.
- //
- for (; i < length; i++) map[alphabet[i]] = i;
-
- //
- // Expose the `yeast`, `encode` and `decode` functions.
- //
- yeast.encode = encode;
- yeast.decode = decode;
- module.exports = yeast;
-
-
- /***/ }),
- /* 69 */
- /***/ (function(module, exports) {
-
-
- var indexOf = [].indexOf;
-
- module.exports = function(arr, obj){
- if (indexOf) return arr.indexOf(obj);
- for (var i = 0; i < arr.length; ++i) {
- if (arr[i] === obj) return i;
- }
- return -1;
- };
-
- /***/ }),
- /* 70 */
- /***/ (function(module, exports, __webpack_require__) {
-
-
- /**
- * Module dependencies.
- */
-
- var parser = __webpack_require__(48);
- var Emitter = __webpack_require__(17);
- var toArray = __webpack_require__(132);
- var on = __webpack_require__(71);
- var bind = __webpack_require__(72);
- var debug = __webpack_require__(32)('socket.io-client:socket');
- var parseqs = __webpack_require__(34);
- var hasBin = __webpack_require__(67);
-
- /**
- * Module exports.
- */
-
- module.exports = exports = Socket;
-
- /**
- * Internal events (blacklisted).
- * These events can't be emitted by the user.
- *
- * @api private
- */
-
- var events = {
- connect: 1,
- connect_error: 1,
- connect_timeout: 1,
- connecting: 1,
- disconnect: 1,
- error: 1,
- reconnect: 1,
- reconnect_attempt: 1,
- reconnect_failed: 1,
- reconnect_error: 1,
- reconnecting: 1,
- ping: 1,
- pong: 1
- };
-
- /**
- * Shortcut to `Emitter#emit`.
- */
-
- var emit = Emitter.prototype.emit;
-
- /**
- * `Socket` constructor.
- *
- * @api public
- */
-
- function Socket (io, nsp, opts) {
- this.io = io;
- this.nsp = nsp;
- this.json = this; // compat
- this.ids = 0;
- this.acks = {};
- this.receiveBuffer = [];
- this.sendBuffer = [];
- this.connected = false;
- this.disconnected = true;
- this.flags = {};
- if (opts && opts.query) {
- this.query = opts.query;
- }
- if (this.io.autoConnect) this.open();
- }
-
- /**
- * Mix in `Emitter`.
- */
-
- Emitter(Socket.prototype);
-
- /**
- * Subscribe to open, close and packet events
- *
- * @api private
- */
-
- Socket.prototype.subEvents = function () {
- if (this.subs) return;
-
- var io = this.io;
- this.subs = [
- on(io, 'open', bind(this, 'onopen')),
- on(io, 'packet', bind(this, 'onpacket')),
- on(io, 'close', bind(this, 'onclose'))
- ];
- };
-
- /**
- * "Opens" the socket.
- *
- * @api public
- */
-
- Socket.prototype.open =
- Socket.prototype.connect = function () {
- if (this.connected) return this;
-
- this.subEvents();
- this.io.open(); // ensure open
- if ('open' === this.io.readyState) this.onopen();
- this.emit('connecting');
- return this;
- };
-
- /**
- * Sends a `message` event.
- *
- * @return {Socket} self
- * @api public
- */
-
- Socket.prototype.send = function () {
- var args = toArray(arguments);
- args.unshift('message');
- this.emit.apply(this, args);
- return this;
- };
-
- /**
- * Override `emit`.
- * If the event is in `events`, it's emitted normally.
- *
- * @param {String} event name
- * @return {Socket} self
- * @api public
- */
-
- Socket.prototype.emit = function (ev) {
- if (events.hasOwnProperty(ev)) {
- emit.apply(this, arguments);
- return this;
- }
-
- var args = toArray(arguments);
- var packet = {
- type: (this.flags.binary !== undefined ? this.flags.binary : hasBin(args)) ? parser.BINARY_EVENT : parser.EVENT,
- data: args
- };
-
- packet.options = {};
- packet.options.compress = !this.flags || false !== this.flags.compress;
-
- // event ack callback
- if ('function' === typeof args[args.length - 1]) {
- debug('emitting packet with ack id %d', this.ids);
- this.acks[this.ids] = args.pop();
- packet.id = this.ids++;
- }
-
- if (this.connected) {
- this.packet(packet);
- } else {
- this.sendBuffer.push(packet);
- }
-
- this.flags = {};
-
- return this;
- };
-
- /**
- * Sends a packet.
- *
- * @param {Object} packet
- * @api private
- */
-
- Socket.prototype.packet = function (packet) {
- packet.nsp = this.nsp;
- this.io.packet(packet);
- };
-
- /**
- * Called upon engine `open`.
- *
- * @api private
- */
-
- Socket.prototype.onopen = function () {
- debug('transport is open - connecting');
-
- // write connect packet if necessary
- if ('/' !== this.nsp) {
- if (this.query) {
- var query = typeof this.query === 'object' ? parseqs.encode(this.query) : this.query;
- debug('sending connect packet with query %s', query);
- this.packet({type: parser.CONNECT, query: query});
- } else {
- this.packet({type: parser.CONNECT});
- }
- }
- };
-
- /**
- * Called upon engine `close`.
- *
- * @param {String} reason
- * @api private
- */
-
- Socket.prototype.onclose = function (reason) {
- debug('close (%s)', reason);
- this.connected = false;
- this.disconnected = true;
- delete this.id;
- this.emit('disconnect', reason);
- };
-
- /**
- * Called with socket packet.
- *
- * @param {Object} packet
- * @api private
- */
-
- Socket.prototype.onpacket = function (packet) {
- var sameNamespace = packet.nsp === this.nsp;
- var rootNamespaceError = packet.type === parser.ERROR && packet.nsp === '/';
-
- if (!sameNamespace && !rootNamespaceError) return;
-
- switch (packet.type) {
- case parser.CONNECT:
- this.onconnect();
- break;
-
- case parser.EVENT:
- this.onevent(packet);
- break;
-
- case parser.BINARY_EVENT:
- this.onevent(packet);
- break;
-
- case parser.ACK:
- this.onack(packet);
- break;
-
- case parser.BINARY_ACK:
- this.onack(packet);
- break;
-
- case parser.DISCONNECT:
- this.ondisconnect();
- break;
-
- case parser.ERROR:
- this.emit('error', packet.data);
- break;
- }
- };
-
- /**
- * Called upon a server event.
- *
- * @param {Object} packet
- * @api private
- */
-
- Socket.prototype.onevent = function (packet) {
- var args = packet.data || [];
- debug('emitting event %j', args);
-
- if (null != packet.id) {
- debug('attaching ack callback to event');
- args.push(this.ack(packet.id));
- }
-
- if (this.connected) {
- emit.apply(this, args);
- } else {
- this.receiveBuffer.push(args);
- }
- };
-
- /**
- * Produces an ack callback to emit with an event.
- *
- * @api private
- */
-
- Socket.prototype.ack = function (id) {
- var self = this;
- var sent = false;
- return function () {
- // prevent double callbacks
- if (sent) return;
- sent = true;
- var args = toArray(arguments);
- debug('sending ack %j', args);
-
- self.packet({
- type: hasBin(args) ? parser.BINARY_ACK : parser.ACK,
- id: id,
- data: args
- });
- };
- };
-
- /**
- * Called upon a server acknowlegement.
- *
- * @param {Object} packet
- * @api private
- */
-
- Socket.prototype.onack = function (packet) {
- var ack = this.acks[packet.id];
- if ('function' === typeof ack) {
- debug('calling ack %s with %j', packet.id, packet.data);
- ack.apply(this, packet.data);
- delete this.acks[packet.id];
- } else {
- debug('bad ack %s', packet.id);
- }
- };
-
- /**
- * Called upon server connect.
- *
- * @api private
- */
-
- Socket.prototype.onconnect = function () {
- this.connected = true;
- this.disconnected = false;
- this.emit('connect');
- this.emitBuffered();
- };
-
- /**
- * Emit buffered events (received and emitted).
- *
- * @api private
- */
-
- Socket.prototype.emitBuffered = function () {
- var i;
- for (i = 0; i < this.receiveBuffer.length; i++) {
- emit.apply(this, this.receiveBuffer[i]);
- }
- this.receiveBuffer = [];
-
- for (i = 0; i < this.sendBuffer.length; i++) {
- this.packet(this.sendBuffer[i]);
- }
- this.sendBuffer = [];
- };
-
- /**
- * Called upon server disconnect.
- *
- * @api private
- */
-
- Socket.prototype.ondisconnect = function () {
- debug('server disconnect (%s)', this.nsp);
- this.destroy();
- this.onclose('io server disconnect');
- };
-
- /**
- * Called upon forced client/server side disconnections,
- * this method ensures the manager stops tracking us and
- * that reconnections don't get triggered for this.
- *
- * @api private.
- */
-
- Socket.prototype.destroy = function () {
- if (this.subs) {
- // clean subscriptions to avoid reconnections
- for (var i = 0; i < this.subs.length; i++) {
- this.subs[i].destroy();
- }
- this.subs = null;
- }
-
- this.io.destroy(this);
- };
-
- /**
- * Disconnects the socket manually.
- *
- * @return {Socket} self
- * @api public
- */
-
- Socket.prototype.close =
- Socket.prototype.disconnect = function () {
- if (this.connected) {
- debug('performing disconnect (%s)', this.nsp);
- this.packet({ type: parser.DISCONNECT });
- }
-
- // remove socket from pool
- this.destroy();
-
- if (this.connected) {
- // fire events
- this.onclose('io client disconnect');
- }
- return this;
- };
-
- /**
- * Sets the compress flag.
- *
- * @param {Boolean} if `true`, compresses the sending data
- * @return {Socket} self
- * @api public
- */
-
- Socket.prototype.compress = function (compress) {
- this.flags.compress = compress;
- return this;
- };
-
- /**
- * Sets the binary flag
- *
- * @param {Boolean} whether the emitted data contains binary
- * @return {Socket} self
- * @api public
- */
-
- Socket.prototype.binary = function (binary) {
- this.flags.binary = binary;
- return this;
- };
-
-
- /***/ }),
- /* 71 */
- /***/ (function(module, exports) {
-
-
- /**
- * Module exports.
- */
-
- module.exports = on;
-
- /**
- * Helper for subscriptions.
- *
- * @param {Object|EventEmitter} obj with `Emitter` mixin or `EventEmitter`
- * @param {String} event name
- * @param {Function} callback
- * @api public
- */
-
- function on (obj, ev, fn) {
- obj.on(ev, fn);
- return {
- destroy: function () {
- obj.removeListener(ev, fn);
- }
- };
- }
-
-
- /***/ }),
- /* 72 */
- /***/ (function(module, exports) {
-
- /**
- * Slice reference.
- */
-
- var slice = [].slice;
-
- /**
- * Bind `obj` to `fn`.
- *
- * @param {Object} obj
- * @param {Function|String} fn or string
- * @return {Function}
- * @api public
- */
-
- module.exports = function(obj, fn){
- if ('string' == typeof fn) fn = obj[fn];
- if ('function' != typeof fn) throw new Error('bind() requires a function');
- var args = slice.call(arguments, 2);
- return function(){
- return fn.apply(obj, args.concat(slice.call(arguments)));
- }
- };
-
-
- /***/ }),
- /* 73 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- /**
- * An error thrown when an action is invalid because the object has been
- * unsubscribed.
- *
- * @see {@link Subject}
- * @see {@link BehaviorSubject}
- *
- * @class ObjectUnsubscribedError
- */
- var ObjectUnsubscribedError = (function (_super) {
- __extends(ObjectUnsubscribedError, _super);
- function ObjectUnsubscribedError() {
- var err = _super.call(this, 'object unsubscribed');
- this.name = err.name = 'ObjectUnsubscribedError';
- this.stack = err.stack;
- this.message = err.message;
- }
- return ObjectUnsubscribedError;
- }(Error));
- exports.ObjectUnsubscribedError = ObjectUnsubscribedError;
- //# sourceMappingURL=ObjectUnsubscribedError.js.map
-
- /***/ }),
- /* 74 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var multicast_1 = __webpack_require__(135);
- var refCount_1 = __webpack_require__(75);
- var Subject_1 = __webpack_require__(37);
- function shareSubjectFactory() {
- return new Subject_1.Subject();
- }
- /**
- * Returns a new Observable that multicasts (shares) the original Observable. As long as there is at least one
- * Subscriber this Observable will be subscribed and emitting data. When all subscribers have unsubscribed it will
- * unsubscribe from the source Observable. Because the Observable is multicasting it makes the stream `hot`.
- * This is an alias for .multicast(() => new Subject()).refCount().
- *
- * <img src="./img/share.png" width="100%">
- *
- * @return {Observable<T>} An Observable that upon connection causes the source Observable to emit items to its Observers.
- * @method share
- * @owner Observable
- */
- function share() {
- return function (source) { return refCount_1.refCount()(multicast_1.multicast(shareSubjectFactory)(source)); };
- }
- exports.share = share;
- ;
- //# sourceMappingURL=share.js.map
-
- /***/ }),
- /* 75 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var Subscriber_1 = __webpack_require__(3);
- function refCount() {
- return function refCountOperatorFunction(source) {
- return source.lift(new RefCountOperator(source));
- };
- }
- exports.refCount = refCount;
- var RefCountOperator = (function () {
- function RefCountOperator(connectable) {
- this.connectable = connectable;
- }
- RefCountOperator.prototype.call = function (subscriber, source) {
- var connectable = this.connectable;
- connectable._refCount++;
- var refCounter = new RefCountSubscriber(subscriber, connectable);
- var subscription = source.subscribe(refCounter);
- if (!refCounter.closed) {
- refCounter.connection = connectable.connect();
- }
- return subscription;
- };
- return RefCountOperator;
- }());
- var RefCountSubscriber = (function (_super) {
- __extends(RefCountSubscriber, _super);
- function RefCountSubscriber(destination, connectable) {
- _super.call(this, destination);
- this.connectable = connectable;
- }
- /** @deprecated internal use only */ RefCountSubscriber.prototype._unsubscribe = function () {
- var connectable = this.connectable;
- if (!connectable) {
- this.connection = null;
- return;
- }
- this.connectable = null;
- var refCount = connectable._refCount;
- if (refCount <= 0) {
- this.connection = null;
- return;
- }
- connectable._refCount = refCount - 1;
- if (refCount > 1) {
- this.connection = null;
- return;
- }
- ///
- // Compare the local RefCountSubscriber's connection Subscription to the
- // connection Subscription on the shared ConnectableObservable. In cases
- // where the ConnectableObservable source synchronously emits values, and
- // the RefCountSubscriber's downstream Observers synchronously unsubscribe,
- // execution continues to here before the RefCountOperator has a chance to
- // supply the RefCountSubscriber with the shared connection Subscription.
- // For example:
- // ```
- // Observable.range(0, 10)
- // .publish()
- // .refCount()
- // .take(5)
- // .subscribe();
- // ```
- // In order to account for this case, RefCountSubscriber should only dispose
- // the ConnectableObservable's shared connection Subscription if the
- // connection Subscription exists, *and* either:
- // a. RefCountSubscriber doesn't have a reference to the shared connection
- // Subscription yet, or,
- // b. RefCountSubscriber's connection Subscription reference is identical
- // to the shared connection Subscription
- ///
- var connection = this.connection;
- var sharedConnection = connectable._connection;
- this.connection = null;
- if (sharedConnection && (!connection || sharedConnection === connection)) {
- sharedConnection.unsubscribe();
- }
- };
- return RefCountSubscriber;
- }(Subscriber_1.Subscriber));
- //# sourceMappingURL=refCount.js.map
-
- /***/ }),
- /* 76 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var map_1 = __webpack_require__(2);
- var tap_1 = __webpack_require__(5);
- var dom_effects_1 = __webpack_require__(19);
- var Log = __webpack_require__(14);
- function propSetDomEffect(xs) {
- return xs.pipe(tap_1.tap(function (event) {
- var target = event.target, prop = event.prop, value = event.value;
- target[prop] = value;
- }), map_1.map(function (e) {
- return Log.consoleInfo("[PropSet]", e.target, e.prop + " = " + e.pathname);
- }));
- }
- exports.propSetDomEffect = propSetDomEffect;
- function propSet(incoming) {
- return [dom_effects_1.Events.PropSet, incoming];
- }
- exports.propSet = propSet;
-
-
- /***/ }),
- /* 77 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var isArray_1 = __webpack_require__(26);
- function isNumeric(val) {
- // parseFloat NaNs numeric-cast false positives (null|true|false|"")
- // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
- // subtraction forces infinities to NaN
- // adding 1 corrects loss of precision from parseFloat (#15100)
- return !isArray_1.isArray(val) && (val - parseFloat(val) + 1) >= 0;
- }
- exports.isNumeric = isNumeric;
- ;
- //# sourceMappingURL=isNumeric.js.map
-
- /***/ }),
- /* 78 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var AsyncAction_1 = __webpack_require__(79);
- var AsyncScheduler_1 = __webpack_require__(80);
- /**
- *
- * Async Scheduler
- *
- * <span class="informal">Schedule task as if you used setTimeout(task, duration)</span>
- *
- * `async` scheduler schedules tasks asynchronously, by putting them on the JavaScript
- * event loop queue. It is best used to delay tasks in time or to schedule tasks repeating
- * in intervals.
- *
- * If you just want to "defer" task, that is to perform it right after currently
- * executing synchronous code ends (commonly achieved by `setTimeout(deferredTask, 0)`),
- * better choice will be the {@link asap} scheduler.
- *
- * @example <caption>Use async scheduler to delay task</caption>
- * const task = () => console.log('it works!');
- *
- * Rx.Scheduler.async.schedule(task, 2000);
- *
- * // After 2 seconds logs:
- * // "it works!"
- *
- *
- * @example <caption>Use async scheduler to repeat task in intervals</caption>
- * function task(state) {
- * console.log(state);
- * this.schedule(state + 1, 1000); // `this` references currently executing Action,
- * // which we reschedule with new state and delay
- * }
- *
- * Rx.Scheduler.async.schedule(task, 3000, 0);
- *
- * // Logs:
- * // 0 after 3s
- * // 1 after 4s
- * // 2 after 5s
- * // 3 after 6s
- *
- * @static true
- * @name async
- * @owner Scheduler
- */
- exports.async = new AsyncScheduler_1.AsyncScheduler(AsyncAction_1.AsyncAction);
- //# sourceMappingURL=async.js.map
-
- /***/ }),
- /* 79 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var root_1 = __webpack_require__(7);
- var Action_1 = __webpack_require__(139);
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @ignore
- * @extends {Ignored}
- */
- var AsyncAction = (function (_super) {
- __extends(AsyncAction, _super);
- function AsyncAction(scheduler, work) {
- _super.call(this, scheduler, work);
- this.scheduler = scheduler;
- this.pending = false;
- this.work = work;
- }
- AsyncAction.prototype.schedule = function (state, delay) {
- if (delay === void 0) { delay = 0; }
- if (this.closed) {
- return this;
- }
- // Always replace the current state with the new state.
- this.state = state;
- // Set the pending flag indicating that this action has been scheduled, or
- // has recursively rescheduled itself.
- this.pending = true;
- var id = this.id;
- var scheduler = this.scheduler;
- //
- // Important implementation note:
- //
- // Actions only execute once by default, unless rescheduled from within the
- // scheduled callback. This allows us to implement single and repeat
- // actions via the same code path, without adding API surface area, as well
- // as mimic traditional recursion but across asynchronous boundaries.
- //
- // However, JS runtimes and timers distinguish between intervals achieved by
- // serial `setTimeout` calls vs. a single `setInterval` call. An interval of
- // serial `setTimeout` calls can be individually delayed, which delays
- // scheduling the next `setTimeout`, and so on. `setInterval` attempts to
- // guarantee the interval callback will be invoked more precisely to the
- // interval period, regardless of load.
- //
- // Therefore, we use `setInterval` to schedule single and repeat actions.
- // If the action reschedules itself with the same delay, the interval is not
- // canceled. If the action doesn't reschedule, or reschedules with a
- // different delay, the interval will be canceled after scheduled callback
- // execution.
- //
- if (id != null) {
- this.id = this.recycleAsyncId(scheduler, id, delay);
- }
- this.delay = delay;
- // If this action has already an async Id, don't request a new one.
- this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);
- return this;
- };
- AsyncAction.prototype.requestAsyncId = function (scheduler, id, delay) {
- if (delay === void 0) { delay = 0; }
- return root_1.root.setInterval(scheduler.flush.bind(scheduler, this), delay);
- };
- AsyncAction.prototype.recycleAsyncId = function (scheduler, id, delay) {
- if (delay === void 0) { delay = 0; }
- // If this action is rescheduled with the same delay time, don't clear the interval id.
- if (delay !== null && this.delay === delay && this.pending === false) {
- return id;
- }
- // Otherwise, if the action's delay time is different from the current delay,
- // or the action has been rescheduled before it's executed, clear the interval id
- return root_1.root.clearInterval(id) && undefined || undefined;
- };
- /**
- * Immediately executes this action and the `work` it contains.
- * @return {any}
- */
- AsyncAction.prototype.execute = function (state, delay) {
- if (this.closed) {
- return new Error('executing a cancelled action');
- }
- this.pending = false;
- var error = this._execute(state, delay);
- if (error) {
- return error;
- }
- else if (this.pending === false && this.id != null) {
- // Dequeue if the action didn't reschedule itself. Don't call
- // unsubscribe(), because the action could reschedule later.
- // For example:
- // ```
- // scheduler.schedule(function doWork(counter) {
- // /* ... I'm a busy worker bee ... */
- // var originalAction = this;
- // /* wait 100ms before rescheduling the action */
- // setTimeout(function () {
- // originalAction.schedule(counter + 1);
- // }, 100);
- // }, 1000);
- // ```
- this.id = this.recycleAsyncId(this.scheduler, this.id, null);
- }
- };
- AsyncAction.prototype._execute = function (state, delay) {
- var errored = false;
- var errorValue = undefined;
- try {
- this.work(state);
- }
- catch (e) {
- errored = true;
- errorValue = !!e && e || new Error(e);
- }
- if (errored) {
- this.unsubscribe();
- return errorValue;
- }
- };
- /** @deprecated internal use only */ AsyncAction.prototype._unsubscribe = function () {
- var id = this.id;
- var scheduler = this.scheduler;
- var actions = scheduler.actions;
- var index = actions.indexOf(this);
- this.work = null;
- this.state = null;
- this.pending = false;
- this.scheduler = null;
- if (index !== -1) {
- actions.splice(index, 1);
- }
- if (id != null) {
- this.id = this.recycleAsyncId(scheduler, id, null);
- }
- this.delay = null;
- };
- return AsyncAction;
- }(Action_1.Action));
- exports.AsyncAction = AsyncAction;
- //# sourceMappingURL=AsyncAction.js.map
-
- /***/ }),
- /* 80 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var Scheduler_1 = __webpack_require__(140);
- var AsyncScheduler = (function (_super) {
- __extends(AsyncScheduler, _super);
- function AsyncScheduler() {
- _super.apply(this, arguments);
- this.actions = [];
- /**
- * A flag to indicate whether the Scheduler is currently executing a batch of
- * queued actions.
- * @type {boolean}
- */
- this.active = false;
- /**
- * An internal ID used to track the latest asynchronous task such as those
- * coming from `setTimeout`, `setInterval`, `requestAnimationFrame`, and
- * others.
- * @type {any}
- */
- this.scheduled = undefined;
- }
- AsyncScheduler.prototype.flush = function (action) {
- var actions = this.actions;
- if (this.active) {
- actions.push(action);
- return;
- }
- var error;
- this.active = true;
- do {
- if (error = action.execute(action.state, action.delay)) {
- break;
- }
- } while (action = actions.shift()); // exhaust the scheduler queue
- this.active = false;
- if (error) {
- while (action = actions.shift()) {
- action.unsubscribe();
- }
- throw error;
- }
- };
- return AsyncScheduler;
- }(Scheduler_1.Scheduler));
- exports.AsyncScheduler = AsyncScheduler;
- //# sourceMappingURL=AsyncScheduler.js.map
-
- /***/ }),
- /* 81 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var map_1 = __webpack_require__(2);
- var dom_effects_1 = __webpack_require__(19);
- var tap_1 = __webpack_require__(5);
- var Log = __webpack_require__(14);
- function styleSetDomEffect(xs) {
- return xs.pipe(tap_1.tap(function (event) {
- var style = event.style, styleName = event.styleName, newValue = event.newValue;
- style[styleName] = newValue;
- }), map_1.map(function (e) { return Log.consoleInfo("[StyleSet] " + e.styleName + " = " + e.pathName); }));
- }
- exports.styleSetDomEffect = styleSetDomEffect;
- function styleSet(incoming) {
- return [dom_effects_1.Events.StyleSet, incoming];
- }
- exports.styleSet = styleSet;
-
-
- /***/ }),
- /* 82 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var map_1 = __webpack_require__(2);
- var filter_1 = __webpack_require__(4);
- var withLatestFrom_1 = __webpack_require__(0);
- var Log = __webpack_require__(14);
- var pluck_1 = __webpack_require__(6);
- var dom_effects_1 = __webpack_require__(19);
- function linkReplaceDomEffect(xs, inputs) {
- return xs.pipe(withLatestFrom_1.withLatestFrom(inputs.option$.pipe(pluck_1.pluck("injectNotification"))), filter_1.filter(function (_a) {
- var inject = _a[1];
- return inject;
- }), map_1.map(function (_a) {
- var incoming = _a[0], inject = _a[1];
- var message = "[LinkReplace] " + incoming.basename;
- if (inject === "overlay") {
- return Log.overlayInfo(message);
- }
- return Log.consoleInfo(message);
- }));
- }
- exports.linkReplaceDomEffect = linkReplaceDomEffect;
- function linkReplace(incoming) {
- return [dom_effects_1.Events.LinkReplace, incoming];
- }
- exports.linkReplace = linkReplace;
-
-
- /***/ }),
- /* 83 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var ignoreElements_1 = __webpack_require__(11);
- var withLatestFrom_1 = __webpack_require__(0);
- var tap_1 = __webpack_require__(5);
- var dom_effects_1 = __webpack_require__(19);
- function setScroll(x, y) {
- return [dom_effects_1.Events.SetScroll, { x: x, y: y }];
- }
- exports.setScroll = setScroll;
- function setScrollDomEffect(xs, inputs) {
- return xs.pipe(withLatestFrom_1.withLatestFrom(inputs.window$), tap_1.tap(function (_a) {
- var event = _a[0], window = _a[1];
- return window.scrollTo(event.x, event.y);
- }), ignoreElements_1.ignoreElements());
- }
- exports.setScrollDomEffect = setScrollDomEffect;
-
-
- /***/ }),
- /* 84 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var ignoreElements_1 = __webpack_require__(11);
- var withLatestFrom_1 = __webpack_require__(0);
- var tap_1 = __webpack_require__(5);
- var dom_effects_1 = __webpack_require__(19);
- function setWindowNameDomEffect(xs, inputs) {
- return xs.pipe(withLatestFrom_1.withLatestFrom(inputs.window$), tap_1.tap(function (_a) {
- var value = _a[0], window = _a[1];
- return (window.name = value);
- }), ignoreElements_1.ignoreElements());
- }
- exports.setWindowNameDomEffect = setWindowNameDomEffect;
- function setWindowName(incoming) {
- return [dom_effects_1.Events.SetWindowName, incoming];
- }
- exports.setWindowName = setWindowName;
-
-
- /***/ }),
- /* 85 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var socket_messages_1 = __webpack_require__(10);
- var pluck_1 = __webpack_require__(6);
- var filter_1 = __webpack_require__(4);
- var map_1 = __webpack_require__(2);
- var withLatestFrom_1 = __webpack_require__(0);
- var effects_1 = __webpack_require__(8);
- function outgoing(data, tagName, index, mappingIndex) {
- if (mappingIndex === void 0) { mappingIndex = -1; }
- return [
- socket_messages_1.OutgoingSocketEvents.Scroll,
- { position: data, tagName: tagName, index: index, mappingIndex: mappingIndex }
- ];
- }
- exports.outgoing = outgoing;
- function incomingScrollHandler(xs, inputs) {
- return xs.pipe(withLatestFrom_1.withLatestFrom(inputs.option$.pipe(pluck_1.pluck("ghostMode", "scroll")), inputs.window$.pipe(pluck_1.pluck("location", "pathname"))), filter_1.filter(function (_a) {
- var event = _a[0], canScroll = _a[1], pathname = _a[2];
- return canScroll && event.pathname === pathname;
- }), map_1.map(function (_a) {
- var event = _a[0];
- return [effects_1.EffectNames.BrowserSetScroll, event];
- }));
- }
- exports.incomingScrollHandler = incomingScrollHandler;
-
-
- /***/ }),
- /* 86 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var effects_1 = __webpack_require__(8);
- var Reloader_1 = __webpack_require__(143);
- var withLatestFrom_1 = __webpack_require__(0);
- var mergeMap_1 = __webpack_require__(15);
- function fileReload(event) {
- return [effects_1.EffectNames.FileReload, event];
- }
- exports.fileReload = fileReload;
- /**
- * Attempt to reload files in place
- * @param xs
- * @param inputs
- */
- function fileReloadEffect(xs, inputs) {
- return xs.pipe(withLatestFrom_1.withLatestFrom(inputs.option$, inputs.document$, inputs.navigator$), mergeMap_1.mergeMap(function (_a) {
- var event = _a[0], options = _a[1], document = _a[2], navigator = _a[3];
- return Reloader_1.reload(document, navigator)(event, {
- tagNames: options.tagNames,
- liveCSS: true,
- liveImg: true
- });
- }));
- }
- exports.fileReloadEffect = fileReloadEffect;
-
-
- /***/ }),
- /* 87 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var FromObservable_1 = __webpack_require__(144);
- exports.from = FromObservable_1.FromObservable.create;
- //# sourceMappingURL=from.js.map
-
- /***/ }),
- /* 88 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var Subscriber_1 = __webpack_require__(3);
- /**
- * Emits the given constant value on the output Observable every time the source
- * Observable emits a value.
- *
- * <span class="informal">Like {@link map}, but it maps every source value to
- * the same output value every time.</span>
- *
- * <img src="./img/mapTo.png" width="100%">
- *
- * Takes a constant `value` as argument, and emits that whenever the source
- * Observable emits a value. In other words, ignores the actual source value,
- * and simply uses the emission moment to know when to emit the given `value`.
- *
- * @example <caption>Map every click to the string 'Hi'</caption>
- * var clicks = Rx.Observable.fromEvent(document, 'click');
- * var greetings = clicks.mapTo('Hi');
- * greetings.subscribe(x => console.log(x));
- *
- * @see {@link map}
- *
- * @param {any} value The value to map each source value to.
- * @return {Observable} An Observable that emits the given `value` every time
- * the source Observable emits something.
- * @method mapTo
- * @owner Observable
- */
- function mapTo(value) {
- return function (source) { return source.lift(new MapToOperator(value)); };
- }
- exports.mapTo = mapTo;
- var MapToOperator = (function () {
- function MapToOperator(value) {
- this.value = value;
- }
- MapToOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new MapToSubscriber(subscriber, this.value));
- };
- return MapToOperator;
- }());
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @ignore
- * @extends {Ignored}
- */
- var MapToSubscriber = (function (_super) {
- __extends(MapToSubscriber, _super);
- function MapToSubscriber(destination, value) {
- _super.call(this, destination);
- this.value = value;
- }
- MapToSubscriber.prototype._next = function (x) {
- this.destination.next(this.value);
- };
- return MapToSubscriber;
- }(Subscriber_1.Subscriber));
- //# sourceMappingURL=mapTo.js.map
-
- /***/ }),
- /* 89 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var ignoreElements_1 = __webpack_require__(11);
- var tap_1 = __webpack_require__(5);
- var withLatestFrom_1 = __webpack_require__(0);
- var effects_1 = __webpack_require__(8);
- function browserSetLocationEffect(xs, inputs) {
- return xs.pipe(withLatestFrom_1.withLatestFrom(inputs.window$), tap_1.tap(function (_a) {
- var event = _a[0], window = _a[1];
- if (event.path) {
- return (window.location =
- window.location.protocol +
- "//" +
- window.location.host +
- event.path);
- }
- if (event.url) {
- return (window.location = event.url);
- }
- }), ignoreElements_1.ignoreElements());
- }
- exports.browserSetLocationEffect = browserSetLocationEffect;
- function browserSetLocation(input) {
- return [effects_1.EffectNames.BrowserSetLocation, input];
- }
- exports.browserSetLocation = browserSetLocation;
-
-
- /***/ }),
- /* 90 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var ignoreElements_1 = __webpack_require__(11);
- var tap_1 = __webpack_require__(5);
- var withLatestFrom_1 = __webpack_require__(0);
- var effects_1 = __webpack_require__(8);
- function simulateClickEffect(xs, inputs) {
- return xs.pipe(withLatestFrom_1.withLatestFrom(inputs.window$, inputs.document$), tap_1.tap(function (_a) {
- var event = _a[0], window = _a[1], document = _a[2];
- var elems = document.getElementsByTagName(event.tagName);
- var match = elems[event.index];
- if (match) {
- if (document.createEvent) {
- window.setTimeout(function () {
- var evObj = document.createEvent("MouseEvents");
- evObj.initEvent("click", true, true);
- match.dispatchEvent(evObj);
- }, 0);
- }
- else {
- window.setTimeout(function () {
- if (document.createEventObject) {
- var evObj = document.createEventObject();
- evObj.cancelBubble = true;
- match.fireEvent("on" + "click", evObj);
- }
- }, 0);
- }
- }
- }), ignoreElements_1.ignoreElements());
- }
- exports.simulateClickEffect = simulateClickEffect;
- function simulateClick(event) {
- return [effects_1.EffectNames.SimulateClick, event];
- }
- exports.simulateClick = simulateClick;
-
-
- /***/ }),
- /* 91 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var tap_1 = __webpack_require__(5);
- var withLatestFrom_1 = __webpack_require__(0);
- var effects_1 = __webpack_require__(8);
- function setElementValueEffect(xs, inputs) {
- return xs.pipe(withLatestFrom_1.withLatestFrom(inputs.document$), tap_1.tap(function (_a) {
- var event = _a[0], document = _a[1];
- var elems = document.getElementsByTagName(event.tagName);
- var match = elems[event.index];
- if (match) {
- match.value = event.value;
- }
- }));
- }
- exports.setElementValueEffect = setElementValueEffect;
- function setElementValue(event) {
- return [effects_1.EffectNames.SetElementValue, event];
- }
- exports.setElementValue = setElementValue;
-
-
- /***/ }),
- /* 92 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var tap_1 = __webpack_require__(5);
- var withLatestFrom_1 = __webpack_require__(0);
- var effects_1 = __webpack_require__(8);
- function setElementToggleValueEffect(xs, inputs) {
- return xs.pipe(withLatestFrom_1.withLatestFrom(inputs.document$), tap_1.tap(function (_a) {
- var event = _a[0], document = _a[1];
- var elems = document.getElementsByTagName(event.tagName);
- var match = elems[event.index];
- if (match) {
- if (event.type === "radio") {
- match.checked = true;
- }
- if (event.type === "checkbox") {
- match.checked = event.checked;
- }
- if (event.tagName === "SELECT") {
- match.value = event.value;
- }
- }
- }));
- }
- exports.setElementToggleValueEffect = setElementToggleValueEffect;
- function setElementToggleValue(event) {
- return [effects_1.EffectNames.SetElementToggleValue, event];
- }
- exports.setElementToggleValue = setElementToggleValue;
-
-
- /***/ }),
- /* 93 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var effects_1 = __webpack_require__(8);
- var tap_1 = __webpack_require__(5);
- var withLatestFrom_1 = __webpack_require__(0);
- function browserReload() {
- return [effects_1.EffectNames.BrowserReload];
- }
- exports.browserReload = browserReload;
- function preBrowserReload() {
- return [effects_1.EffectNames.PreBrowserReload];
- }
- exports.preBrowserReload = preBrowserReload;
- function browserReloadEffect(xs, inputs) {
- return xs.pipe(withLatestFrom_1.withLatestFrom(inputs.window$), tap_1.tap(function (_a) {
- var window = _a[1];
- return window.location.reload(true);
- }));
- }
- exports.browserReloadEffect = browserReloadEffect;
-
-
- /***/ }),
- /* 94 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var socket_messages_1 = __webpack_require__(10);
- var pluck_1 = __webpack_require__(6);
- var filter_1 = __webpack_require__(4);
- var map_1 = __webpack_require__(2);
- var withLatestFrom_1 = __webpack_require__(0);
- var simulate_click_effect_1 = __webpack_require__(90);
- function outgoing(data) {
- return [socket_messages_1.OutgoingSocketEvents.Click, data];
- }
- exports.outgoing = outgoing;
- function incomingHandler$(xs, inputs) {
- return xs.pipe(withLatestFrom_1.withLatestFrom(inputs.option$.pipe(pluck_1.pluck("ghostMode", "clicks")), inputs.window$.pipe(pluck_1.pluck("location", "pathname"))), filter_1.filter(function (_a) {
- var event = _a[0], canClick = _a[1], pathname = _a[2];
- return canClick && event.pathname === pathname;
- }), map_1.map(function (_a) {
- var event = _a[0];
- return simulate_click_effect_1.simulateClick(event);
- }));
- }
- exports.incomingHandler$ = incomingHandler$;
-
-
- /***/ }),
- /* 95 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- var socket_messages_1 = __webpack_require__(10);
- var pluck_1 = __webpack_require__(6);
- var filter_1 = __webpack_require__(4);
- var map_1 = __webpack_require__(2);
- var withLatestFrom_1 = __webpack_require__(0);
- var set_element_value_effect_1 = __webpack_require__(91);
- function outgoing(element, value) {
- return [
- socket_messages_1.OutgoingSocketEvents.Keyup,
- __assign({}, element, { value: value })
- ];
- }
- exports.outgoing = outgoing;
- function incomingKeyupHandler(xs, inputs) {
- return xs.pipe(withLatestFrom_1.withLatestFrom(inputs.option$.pipe(pluck_1.pluck("ghostMode", "forms", "inputs")), inputs.window$.pipe(pluck_1.pluck("location", "pathname"))), filter_1.filter(function (_a) {
- var event = _a[0], canKeyup = _a[1], pathname = _a[2];
- return canKeyup && event.pathname === pathname;
- }), map_1.map(function (_a) {
- var event = _a[0];
- return set_element_value_effect_1.setElementValue(event);
- }));
- }
- exports.incomingKeyupHandler = incomingKeyupHandler;
-
-
- /***/ }),
- /* 96 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var filter_1 = __webpack_require__(4);
- var withLatestFrom_1 = __webpack_require__(0);
- var mergeMap_1 = __webpack_require__(15);
- var concat_1 = __webpack_require__(54);
- var of_1 = __webpack_require__(9);
- var browser_reload_effect_1 = __webpack_require__(93);
- var subscribeOn_1 = __webpack_require__(158);
- var async_1 = __webpack_require__(78);
- function incomingBrowserReload(xs, inputs) {
- return xs.pipe(withLatestFrom_1.withLatestFrom(inputs.option$), filter_1.filter(function (_a) {
- var event = _a[0], options = _a[1];
- return options.codeSync;
- }), mergeMap_1.mergeMap(reloadBrowserSafe));
- }
- exports.incomingBrowserReload = incomingBrowserReload;
- function reloadBrowserSafe() {
- return concat_1.concat(
- /**
- * Emit a warning message allowing others to do some work
- */
- of_1.of(browser_reload_effect_1.preBrowserReload()),
- /**
- * On the next tick, perform the reload
- */
- of_1.of(browser_reload_effect_1.browserReload()).pipe(subscribeOn_1.subscribeOn(async_1.async)));
- }
- exports.reloadBrowserSafe = reloadBrowserSafe;
-
-
- /***/ }),
- /* 97 */
- /***/ (function(module, exports, __webpack_require__) {
-
- /* WEBPACK VAR INJECTION */(function(global) {var scope = (typeof global !== "undefined" && global) ||
- (typeof self !== "undefined" && self) ||
- window;
- var apply = Function.prototype.apply;
-
- // DOM APIs, for completeness
-
- exports.setTimeout = function() {
- return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);
- };
- exports.setInterval = function() {
- return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);
- };
- exports.clearTimeout =
- exports.clearInterval = function(timeout) {
- if (timeout) {
- timeout.close();
- }
- };
-
- function Timeout(id, clearFn) {
- this._id = id;
- this._clearFn = clearFn;
- }
- Timeout.prototype.unref = Timeout.prototype.ref = function() {};
- Timeout.prototype.close = function() {
- this._clearFn.call(scope, this._id);
- };
-
- // Does not start the time, just sets up the members needed.
- exports.enroll = function(item, msecs) {
- clearTimeout(item._idleTimeoutId);
- item._idleTimeout = msecs;
- };
-
- exports.unenroll = function(item) {
- clearTimeout(item._idleTimeoutId);
- item._idleTimeout = -1;
- };
-
- exports._unrefActive = exports.active = function(item) {
- clearTimeout(item._idleTimeoutId);
-
- var msecs = item._idleTimeout;
- if (msecs >= 0) {
- item._idleTimeoutId = setTimeout(function onTimeout() {
- if (item._onTimeout)
- item._onTimeout();
- }, msecs);
- }
- };
-
- // setimmediate attaches itself to the global object
- __webpack_require__(163);
- // On some exotic environments, it's not clear which object `setimmediate` was
- // able to install onto. Search each possibility in the same order as the
- // `setimmediate` library.
- exports.setImmediate = (typeof self !== "undefined" && self.setImmediate) ||
- (typeof global !== "undefined" && global.setImmediate) ||
- (this && this.setImmediate);
- exports.clearImmediate = (typeof self !== "undefined" && self.clearImmediate) ||
- (typeof global !== "undefined" && global.clearImmediate) ||
- (this && this.clearImmediate);
-
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(24)))
-
- /***/ }),
- /* 98 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- var socket_messages_1 = __webpack_require__(10);
- var pluck_1 = __webpack_require__(6);
- var filter_1 = __webpack_require__(4);
- var map_1 = __webpack_require__(2);
- var withLatestFrom_1 = __webpack_require__(0);
- var set_element_toggle_value_effect_1 = __webpack_require__(92);
- function outgoing(element, props) {
- return [
- socket_messages_1.OutgoingSocketEvents.InputToggle,
- __assign({}, element, props)
- ];
- }
- exports.outgoing = outgoing;
- function incomingInputsToggles(xs, inputs) {
- return xs.pipe(withLatestFrom_1.withLatestFrom(inputs.option$.pipe(pluck_1.pluck("ghostMode", "forms", "toggles")), inputs.window$.pipe(pluck_1.pluck("location", "pathname"))), filter_1.filter(function (_a) {
- var toggles = _a[1];
- return toggles === true;
- }), map_1.map(function (_a) {
- var event = _a[0];
- return set_element_toggle_value_effect_1.setElementToggleValue(event);
- }));
- }
- exports.incomingInputsToggles = incomingInputsToggles;
-
-
- /***/ }),
- /* 99 */
- /***/ (function(module, exports, __webpack_require__) {
-
- module.exports = __webpack_require__(100);
-
-
- /***/ }),
- /* 100 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- var zip_1 = __webpack_require__(101);
- var socket_1 = __webpack_require__(107);
- var notify_1 = __webpack_require__(137);
- var dom_effects_1 = __webpack_require__(19);
- var socket_messages_1 = __webpack_require__(10);
- var merge_1 = __webpack_require__(38);
- var log_1 = __webpack_require__(14);
- var effects_1 = __webpack_require__(8);
- var scroll_restore_1 = __webpack_require__(169);
- var listeners_1 = __webpack_require__(170);
- var groupBy_1 = __webpack_require__(176);
- var withLatestFrom_1 = __webpack_require__(0);
- var mergeMap_1 = __webpack_require__(15);
- var share_1 = __webpack_require__(74);
- var filter_1 = __webpack_require__(4);
- var pluck_1 = __webpack_require__(6);
- var of_1 = __webpack_require__(9);
- var window$ = socket_1.initWindow();
- var document$ = socket_1.initDocument();
- var names$ = scroll_restore_1.initWindowName(window);
- var _a = socket_1.initSocket(), socket$ = _a.socket$, io$ = _a.io$;
- var option$ = socket_1.initOptions();
- var navigator$ = of_1.of(navigator);
- var notifyElement$ = notify_1.initNotify(option$.getValue());
- var logInstance$ = log_1.initLogger(option$.getValue());
- var outgoing$ = listeners_1.initListeners(window, document, socket$, option$);
- var inputs = {
- window$: window$,
- document$: document$,
- socket$: socket$,
- option$: option$,
- navigator$: navigator$,
- notifyElement$: notifyElement$,
- logInstance$: logInstance$,
- io$: io$,
- outgoing$: outgoing$
- };
- function getStream(name, inputs) {
- return function (handlers$, inputStream$) {
- return inputStream$.pipe(groupBy_1.groupBy(function (_a) {
- var keyName = _a[0];
- return keyName;
- }), withLatestFrom_1.withLatestFrom(handlers$), filter_1.filter(function (_a) {
- var x = _a[0], handlers = _a[1];
- return typeof handlers[x.key] === "function";
- }), mergeMap_1.mergeMap(function (_a) {
- var x = _a[0], handlers = _a[1];
- return handlers[x.key](x.pipe(pluck_1.pluck(String(1))), inputs);
- }), share_1.share());
- };
- }
- var combinedEffectHandler$ = zip_1.zip(effects_1.effectOutputHandlers$, scroll_restore_1.scrollRestoreHandlers$, function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- return args.reduce(function (acc, item) { return (__assign({}, acc, item)); }, {});
- });
- var output$ = getStream("[socket]", inputs)(socket_messages_1.socketHandlers$, merge_1.merge(inputs.socket$, outgoing$));
- var effect$ = getStream("[effect]", inputs)(combinedEffectHandler$, output$);
- var dom$ = getStream("[dom-effect]", inputs)(dom_effects_1.domHandlers$, merge_1.merge(effect$, names$));
- var merged$ = merge_1.merge(output$, effect$, dom$);
- var log$ = getStream("[log]", inputs)(log_1.logHandler$, merged$);
- log$.subscribe();
- // resume$.next(true);
- // var socket = require("./socket");
- // var shims = require("./client-shims");
- // var notify = require("./notify");
- // // var codeSync = require("./code-sync");
- // const { BrowserSync } = require("./browser-sync");
- // var ghostMode = require("./ghostmode");
- // var events = require("./events");
- // var utils = require("./browser.utils");
- //
- // const mitt = require("mitt").default;
- //
- // var shouldReload = false;
- // var initialised = false;
- //
- // /**
- // * @param options
- // */
- // function init(options: bs.InitOptions) {
- // if (shouldReload && options.reloadOnRestart) {
- // utils.reloadBrowser();
- // }
- //
- // var BS = window.___browserSync___ || {};
- // var emitter = mitt();
- //
- // if (!BS.client) {
- // BS.client = true;
- //
- // var browserSync = new BrowserSync({ options, emitter, socket });
- //
- // // codeSync.init(browserSync);
- //
- // // // Always init on page load
- // // ghostMode.init(browserSync);
- // //
- // // notify.init(browserSync);
- // //
- // // if (options.notify) {
- // // notify.flash("Connected to BrowserSync");
- // // }
- // }
- //
- // // if (!initialised) {
- // // socket.on("disconnect", function() {
- // // if (options.notify) {
- // // notify.flash("Disconnected from BrowserSync");
- // // }
- // // shouldReload = true;
- // // });
- // // initialised = true;
- // // }
- // }
- //
- // /**
- // * Handle individual socket connections
- // */
- // socket.on("connection", init);
-
-
- /***/ }),
- /* 101 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var zip_1 = __webpack_require__(102);
- exports.zip = zip_1.zipStatic;
- //# sourceMappingURL=zip.js.map
-
- /***/ }),
- /* 102 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var ArrayObservable_1 = __webpack_require__(23);
- var isArray_1 = __webpack_require__(26);
- var Subscriber_1 = __webpack_require__(3);
- var OuterSubscriber_1 = __webpack_require__(29);
- var subscribeToResult_1 = __webpack_require__(30);
- var iterator_1 = __webpack_require__(31);
- /* tslint:enable:max-line-length */
- /**
- * @param observables
- * @return {Observable<R>}
- * @method zip
- * @owner Observable
- */
- function zip() {
- var observables = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- observables[_i - 0] = arguments[_i];
- }
- return function zipOperatorFunction(source) {
- return source.lift.call(zipStatic.apply(void 0, [source].concat(observables)));
- };
- }
- exports.zip = zip;
- /* tslint:enable:max-line-length */
- /**
- * Combines multiple Observables to create an Observable whose values are calculated from the values, in order, of each
- * of its input Observables.
- *
- * If the latest parameter is a function, this function is used to compute the created value from the input values.
- * Otherwise, an array of the input values is returned.
- *
- * @example <caption>Combine age and name from different sources</caption>
- *
- * let age$ = Observable.of<number>(27, 25, 29);
- * let name$ = Observable.of<string>('Foo', 'Bar', 'Beer');
- * let isDev$ = Observable.of<boolean>(true, true, false);
- *
- * Observable
- * .zip(age$,
- * name$,
- * isDev$,
- * (age: number, name: string, isDev: boolean) => ({ age, name, isDev }))
- * .subscribe(x => console.log(x));
- *
- * // outputs
- * // { age: 27, name: 'Foo', isDev: true }
- * // { age: 25, name: 'Bar', isDev: true }
- * // { age: 29, name: 'Beer', isDev: false }
- *
- * @param observables
- * @return {Observable<R>}
- * @static true
- * @name zip
- * @owner Observable
- */
- function zipStatic() {
- var observables = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- observables[_i - 0] = arguments[_i];
- }
- var project = observables[observables.length - 1];
- if (typeof project === 'function') {
- observables.pop();
- }
- return new ArrayObservable_1.ArrayObservable(observables).lift(new ZipOperator(project));
- }
- exports.zipStatic = zipStatic;
- var ZipOperator = (function () {
- function ZipOperator(project) {
- this.project = project;
- }
- ZipOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new ZipSubscriber(subscriber, this.project));
- };
- return ZipOperator;
- }());
- exports.ZipOperator = ZipOperator;
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @ignore
- * @extends {Ignored}
- */
- var ZipSubscriber = (function (_super) {
- __extends(ZipSubscriber, _super);
- function ZipSubscriber(destination, project, values) {
- if (values === void 0) { values = Object.create(null); }
- _super.call(this, destination);
- this.iterators = [];
- this.active = 0;
- this.project = (typeof project === 'function') ? project : null;
- this.values = values;
- }
- ZipSubscriber.prototype._next = function (value) {
- var iterators = this.iterators;
- if (isArray_1.isArray(value)) {
- iterators.push(new StaticArrayIterator(value));
- }
- else if (typeof value[iterator_1.iterator] === 'function') {
- iterators.push(new StaticIterator(value[iterator_1.iterator]()));
- }
- else {
- iterators.push(new ZipBufferIterator(this.destination, this, value));
- }
- };
- ZipSubscriber.prototype._complete = function () {
- var iterators = this.iterators;
- var len = iterators.length;
- if (len === 0) {
- this.destination.complete();
- return;
- }
- this.active = len;
- for (var i = 0; i < len; i++) {
- var iterator = iterators[i];
- if (iterator.stillUnsubscribed) {
- this.add(iterator.subscribe(iterator, i));
- }
- else {
- this.active--; // not an observable
- }
- }
- };
- ZipSubscriber.prototype.notifyInactive = function () {
- this.active--;
- if (this.active === 0) {
- this.destination.complete();
- }
- };
- ZipSubscriber.prototype.checkIterators = function () {
- var iterators = this.iterators;
- var len = iterators.length;
- var destination = this.destination;
- // abort if not all of them have values
- for (var i = 0; i < len; i++) {
- var iterator = iterators[i];
- if (typeof iterator.hasValue === 'function' && !iterator.hasValue()) {
- return;
- }
- }
- var shouldComplete = false;
- var args = [];
- for (var i = 0; i < len; i++) {
- var iterator = iterators[i];
- var result = iterator.next();
- // check to see if it's completed now that you've gotten
- // the next value.
- if (iterator.hasCompleted()) {
- shouldComplete = true;
- }
- if (result.done) {
- destination.complete();
- return;
- }
- args.push(result.value);
- }
- if (this.project) {
- this._tryProject(args);
- }
- else {
- destination.next(args);
- }
- if (shouldComplete) {
- destination.complete();
- }
- };
- ZipSubscriber.prototype._tryProject = function (args) {
- var result;
- try {
- result = this.project.apply(this, args);
- }
- catch (err) {
- this.destination.error(err);
- return;
- }
- this.destination.next(result);
- };
- return ZipSubscriber;
- }(Subscriber_1.Subscriber));
- exports.ZipSubscriber = ZipSubscriber;
- var StaticIterator = (function () {
- function StaticIterator(iterator) {
- this.iterator = iterator;
- this.nextResult = iterator.next();
- }
- StaticIterator.prototype.hasValue = function () {
- return true;
- };
- StaticIterator.prototype.next = function () {
- var result = this.nextResult;
- this.nextResult = this.iterator.next();
- return result;
- };
- StaticIterator.prototype.hasCompleted = function () {
- var nextResult = this.nextResult;
- return nextResult && nextResult.done;
- };
- return StaticIterator;
- }());
- var StaticArrayIterator = (function () {
- function StaticArrayIterator(array) {
- this.array = array;
- this.index = 0;
- this.length = 0;
- this.length = array.length;
- }
- StaticArrayIterator.prototype[iterator_1.iterator] = function () {
- return this;
- };
- StaticArrayIterator.prototype.next = function (value) {
- var i = this.index++;
- var array = this.array;
- return i < this.length ? { value: array[i], done: false } : { value: null, done: true };
- };
- StaticArrayIterator.prototype.hasValue = function () {
- return this.array.length > this.index;
- };
- StaticArrayIterator.prototype.hasCompleted = function () {
- return this.array.length === this.index;
- };
- return StaticArrayIterator;
- }());
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @ignore
- * @extends {Ignored}
- */
- var ZipBufferIterator = (function (_super) {
- __extends(ZipBufferIterator, _super);
- function ZipBufferIterator(destination, parent, observable) {
- _super.call(this, destination);
- this.parent = parent;
- this.observable = observable;
- this.stillUnsubscribed = true;
- this.buffer = [];
- this.isComplete = false;
- }
- ZipBufferIterator.prototype[iterator_1.iterator] = function () {
- return this;
- };
- // NOTE: there is actually a name collision here with Subscriber.next and Iterator.next
- // this is legit because `next()` will never be called by a subscription in this case.
- ZipBufferIterator.prototype.next = function () {
- var buffer = this.buffer;
- if (buffer.length === 0 && this.isComplete) {
- return { value: null, done: true };
- }
- else {
- return { value: buffer.shift(), done: false };
- }
- };
- ZipBufferIterator.prototype.hasValue = function () {
- return this.buffer.length > 0;
- };
- ZipBufferIterator.prototype.hasCompleted = function () {
- return this.buffer.length === 0 && this.isComplete;
- };
- ZipBufferIterator.prototype.notifyComplete = function () {
- if (this.buffer.length > 0) {
- this.isComplete = true;
- this.parent.notifyInactive();
- }
- else {
- this.destination.complete();
- }
- };
- ZipBufferIterator.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {
- this.buffer.push(innerValue);
- this.parent.checkIterators();
- };
- ZipBufferIterator.prototype.subscribe = function (value, index) {
- return subscribeToResult_1.subscribeToResult(this, this.observable, this, index);
- };
- return ZipBufferIterator;
- }(OuterSubscriber_1.OuterSubscriber));
- //# sourceMappingURL=zip.js.map
-
- /***/ }),
- /* 103 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var Subscriber_1 = __webpack_require__(3);
- var rxSubscriber_1 = __webpack_require__(44);
- var Observer_1 = __webpack_require__(57);
- function toSubscriber(nextOrObserver, error, complete) {
- if (nextOrObserver) {
- if (nextOrObserver instanceof Subscriber_1.Subscriber) {
- return nextOrObserver;
- }
- if (nextOrObserver[rxSubscriber_1.rxSubscriber]) {
- return nextOrObserver[rxSubscriber_1.rxSubscriber]();
- }
- }
- if (!nextOrObserver && !error && !complete) {
- return new Subscriber_1.Subscriber(Observer_1.empty);
- }
- return new Subscriber_1.Subscriber(nextOrObserver, error, complete);
- }
- exports.toSubscriber = toSubscriber;
- //# sourceMappingURL=toSubscriber.js.map
-
- /***/ }),
- /* 104 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- /**
- * An error thrown when one or more errors have occurred during the
- * `unsubscribe` of a {@link Subscription}.
- */
- var UnsubscriptionError = (function (_super) {
- __extends(UnsubscriptionError, _super);
- function UnsubscriptionError(errors) {
- _super.call(this);
- this.errors = errors;
- var err = Error.call(this, errors ?
- errors.length + " errors occurred during unsubscription:\n " + errors.map(function (err, i) { return ((i + 1) + ") " + err.toString()); }).join('\n ') : '');
- this.name = err.name = 'UnsubscriptionError';
- this.stack = err.stack;
- this.message = err.message;
- }
- return UnsubscriptionError;
- }(Error));
- exports.UnsubscriptionError = UnsubscriptionError;
- //# sourceMappingURL=UnsubscriptionError.js.map
-
- /***/ }),
- /* 105 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var noop_1 = __webpack_require__(58);
- /* tslint:enable:max-line-length */
- function pipe() {
- var fns = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- fns[_i - 0] = arguments[_i];
- }
- return pipeFromArray(fns);
- }
- exports.pipe = pipe;
- /* @internal */
- function pipeFromArray(fns) {
- if (!fns) {
- return noop_1.noop;
- }
- if (fns.length === 1) {
- return fns[0];
- }
- return function piped(input) {
- return fns.reduce(function (prev, fn) { return fn(prev); }, input);
- };
- }
- exports.pipeFromArray = pipeFromArray;
- //# sourceMappingURL=pipe.js.map
-
- /***/ }),
- /* 106 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var Subscriber_1 = __webpack_require__(3);
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @ignore
- * @extends {Ignored}
- */
- var InnerSubscriber = (function (_super) {
- __extends(InnerSubscriber, _super);
- function InnerSubscriber(parent, outerValue, outerIndex) {
- _super.call(this);
- this.parent = parent;
- this.outerValue = outerValue;
- this.outerIndex = outerIndex;
- this.index = 0;
- }
- InnerSubscriber.prototype._next = function (value) {
- this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);
- };
- InnerSubscriber.prototype._error = function (error) {
- this.parent.notifyError(error, this);
- this.unsubscribe();
- };
- InnerSubscriber.prototype._complete = function () {
- this.parent.notifyComplete(this);
- this.unsubscribe();
- };
- return InnerSubscriber;
- }(Subscriber_1.Subscriber));
- exports.InnerSubscriber = InnerSubscriber;
- //# sourceMappingURL=InnerSubscriber.js.map
-
- /***/ }),
- /* 107 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var socket = __webpack_require__(108);
- var Observable_1 = __webpack_require__(1);
- var BehaviorSubject_1 = __webpack_require__(13);
- var of_1 = __webpack_require__(9);
- var share_1 = __webpack_require__(74);
- /**
- * Alias for socket.emit
- * @param name
- * @param data
- */
- // export function emit(name, data) {
- // if (io && io.emit) {
- // // send relative path of where the event is sent
- // data.url = window.location.pathname;
- // io.emit(name, data);
- // }
- // }
- //
- // /**
- // * Alias for socket.on
- // * @param name
- // * @param func
- // */
- // export function on(name, func) {
- // io.on(name, func);
- // }
- function initWindow() {
- return of_1.of(window);
- }
- exports.initWindow = initWindow;
- function initDocument() {
- return of_1.of(document);
- }
- exports.initDocument = initDocument;
- function initNavigator() {
- return of_1.of(navigator);
- }
- exports.initNavigator = initNavigator;
- function initOptions() {
- return new BehaviorSubject_1.BehaviorSubject(window.___browserSync___.options);
- }
- exports.initOptions = initOptions;
- function initSocket() {
- /**
- * @type {{emit: emit, on: on}}
- */
- var socketConfig = window.___browserSync___.socketConfig;
- var socketUrl = window.___browserSync___.socketUrl;
- var io = socket(socketUrl, socketConfig);
- var onevent = io.onevent;
- var socket$ = Observable_1.Observable.create(function (obs) {
- io.onevent = function (packet) {
- onevent.call(this, packet);
- obs.next(packet.data);
- };
- }).pipe(share_1.share());
- var io$ = new BehaviorSubject_1.BehaviorSubject(io);
- /**
- * *****BACK-COMPAT*******
- * Scripts that come after Browsersync may rely on the previous window.___browserSync___.socket
- */
- window.___browserSync___.socket = io;
- return { socket$: socket$, io$: io$ };
- }
- exports.initSocket = initSocket;
-
-
- /***/ }),
- /* 108 */
- /***/ (function(module, exports, __webpack_require__) {
-
-
- /**
- * Module dependencies.
- */
-
- var url = __webpack_require__(109);
- var parser = __webpack_require__(48);
- var Manager = __webpack_require__(64);
- var debug = __webpack_require__(32)('socket.io-client');
-
- /**
- * Module exports.
- */
-
- module.exports = exports = lookup;
-
- /**
- * Managers cache.
- */
-
- var cache = exports.managers = {};
-
- /**
- * Looks up an existing `Manager` for multiplexing.
- * If the user summons:
- *
- * `io('http://localhost/a');`
- * `io('http://localhost/b');`
- *
- * We reuse the existing instance based on same scheme/port/host,
- * and we initialize sockets for each namespace.
- *
- * @api public
- */
-
- function lookup (uri, opts) {
- if (typeof uri === 'object') {
- opts = uri;
- uri = undefined;
- }
-
- opts = opts || {};
-
- var parsed = url(uri);
- var source = parsed.source;
- var id = parsed.id;
- var path = parsed.path;
- var sameNamespace = cache[id] && path in cache[id].nsps;
- var newConnection = opts.forceNew || opts['force new connection'] ||
- false === opts.multiplex || sameNamespace;
-
- var io;
-
- if (newConnection) {
- debug('ignoring socket cache for %s', source);
- io = Manager(source, opts);
- } else {
- if (!cache[id]) {
- debug('new io instance for %s', source);
- cache[id] = Manager(source, opts);
- }
- io = cache[id];
- }
- if (parsed.query && !opts.query) {
- opts.query = parsed.query;
- }
- return io.socket(parsed.path, opts);
- }
-
- /**
- * Protocol version.
- *
- * @api public
- */
-
- exports.protocol = parser.protocol;
-
- /**
- * `connect`.
- *
- * @param {String} uri
- * @api public
- */
-
- exports.connect = lookup;
-
- /**
- * Expose constructors for standalone build.
- *
- * @api public
- */
-
- exports.Manager = __webpack_require__(64);
- exports.Socket = __webpack_require__(70);
-
-
- /***/ }),
- /* 109 */
- /***/ (function(module, exports, __webpack_require__) {
-
-
- /**
- * Module dependencies.
- */
-
- var parseuri = __webpack_require__(61);
- var debug = __webpack_require__(32)('socket.io-client:url');
-
- /**
- * Module exports.
- */
-
- module.exports = url;
-
- /**
- * URL parser.
- *
- * @param {String} url
- * @param {Object} An object meant to mimic window.location.
- * Defaults to window.location.
- * @api public
- */
-
- function url (uri, loc) {
- var obj = uri;
-
- // default to window.location
- loc = loc || (typeof location !== 'undefined' && location);
- if (null == uri) uri = loc.protocol + '//' + loc.host;
-
- // relative path support
- if ('string' === typeof uri) {
- if ('/' === uri.charAt(0)) {
- if ('/' === uri.charAt(1)) {
- uri = loc.protocol + uri;
- } else {
- uri = loc.host + uri;
- }
- }
-
- if (!/^(https?|wss?):\/\//.test(uri)) {
- debug('protocol-less url %s', uri);
- if ('undefined' !== typeof loc) {
- uri = loc.protocol + '//' + uri;
- } else {
- uri = 'https://' + uri;
- }
- }
-
- // parse
- debug('parse %s', uri);
- obj = parseuri(uri);
- }
-
- // make sure we treat `localhost:80` and `localhost` equally
- if (!obj.port) {
- if (/^(http|ws)$/.test(obj.protocol)) {
- obj.port = '80';
- } else if (/^(http|ws)s$/.test(obj.protocol)) {
- obj.port = '443';
- }
- }
-
- obj.path = obj.path || '/';
-
- var ipv6 = obj.host.indexOf(':') !== -1;
- var host = ipv6 ? '[' + obj.host + ']' : obj.host;
-
- // define unique id
- obj.id = obj.protocol + '://' + host + ':' + obj.port;
- // define href
- obj.href = obj.protocol + '://' + host + (loc && loc.port === obj.port ? '' : (':' + obj.port));
-
- return obj;
- }
-
-
- /***/ }),
- /* 110 */
- /***/ (function(module, exports, __webpack_require__) {
-
-
- /**
- * This is the common logic for both the Node.js and web browser
- * implementations of `debug()`.
- *
- * Expose `debug()` as the module.
- */
-
- exports = module.exports = createDebug.debug = createDebug['default'] = createDebug;
- exports.coerce = coerce;
- exports.disable = disable;
- exports.enable = enable;
- exports.enabled = enabled;
- exports.humanize = __webpack_require__(47);
-
- /**
- * Active `debug` instances.
- */
- exports.instances = [];
-
- /**
- * The currently active debug mode names, and names to skip.
- */
-
- exports.names = [];
- exports.skips = [];
-
- /**
- * Map of special "%n" handling functions, for the debug "format" argument.
- *
- * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N".
- */
-
- exports.formatters = {};
-
- /**
- * Select a color.
- * @param {String} namespace
- * @return {Number}
- * @api private
- */
-
- function selectColor(namespace) {
- var hash = 0, i;
-
- for (i in namespace) {
- hash = ((hash << 5) - hash) + namespace.charCodeAt(i);
- hash |= 0; // Convert to 32bit integer
- }
-
- return exports.colors[Math.abs(hash) % exports.colors.length];
- }
-
- /**
- * Create a debugger with the given `namespace`.
- *
- * @param {String} namespace
- * @return {Function}
- * @api public
- */
-
- function createDebug(namespace) {
-
- var prevTime;
-
- function debug() {
- // disabled?
- if (!debug.enabled) return;
-
- var self = debug;
-
- // set `diff` timestamp
- var curr = +new Date();
- var ms = curr - (prevTime || curr);
- self.diff = ms;
- self.prev = prevTime;
- self.curr = curr;
- prevTime = curr;
-
- // turn the `arguments` into a proper Array
- var args = new Array(arguments.length);
- for (var i = 0; i < args.length; i++) {
- args[i] = arguments[i];
- }
-
- args[0] = exports.coerce(args[0]);
-
- if ('string' !== typeof args[0]) {
- // anything else let's inspect with %O
- args.unshift('%O');
- }
-
- // apply any `formatters` transformations
- var index = 0;
- args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {
- // if we encounter an escaped % then don't increase the array index
- if (match === '%%') return match;
- index++;
- var formatter = exports.formatters[format];
- if ('function' === typeof formatter) {
- var val = args[index];
- match = formatter.call(self, val);
-
- // now we need to remove `args[index]` since it's inlined in the `format`
- args.splice(index, 1);
- index--;
- }
- return match;
- });
-
- // apply env-specific formatting (colors, etc.)
- exports.formatArgs.call(self, args);
-
- var logFn = debug.log || exports.log || console.log.bind(console);
- logFn.apply(self, args);
- }
-
- debug.namespace = namespace;
- debug.enabled = exports.enabled(namespace);
- debug.useColors = exports.useColors();
- debug.color = selectColor(namespace);
- debug.destroy = destroy;
-
- // env-specific initialization logic for debug instances
- if ('function' === typeof exports.init) {
- exports.init(debug);
- }
-
- exports.instances.push(debug);
-
- return debug;
- }
-
- function destroy () {
- var index = exports.instances.indexOf(this);
- if (index !== -1) {
- exports.instances.splice(index, 1);
- return true;
- } else {
- return false;
- }
- }
-
- /**
- * Enables a debug mode by namespaces. This can include modes
- * separated by a colon and wildcards.
- *
- * @param {String} namespaces
- * @api public
- */
-
- function enable(namespaces) {
- exports.save(namespaces);
-
- exports.names = [];
- exports.skips = [];
-
- var i;
- var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/);
- var len = split.length;
-
- for (i = 0; i < len; i++) {
- if (!split[i]) continue; // ignore empty strings
- namespaces = split[i].replace(/\*/g, '.*?');
- if (namespaces[0] === '-') {
- exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));
- } else {
- exports.names.push(new RegExp('^' + namespaces + '$'));
- }
- }
-
- for (i = 0; i < exports.instances.length; i++) {
- var instance = exports.instances[i];
- instance.enabled = exports.enabled(instance.namespace);
- }
- }
-
- /**
- * Disable debug output.
- *
- * @api public
- */
-
- function disable() {
- exports.enable('');
- }
-
- /**
- * Returns true if the given mode name is enabled, false otherwise.
- *
- * @param {String} name
- * @return {Boolean}
- * @api public
- */
-
- function enabled(name) {
- if (name[name.length - 1] === '*') {
- return true;
- }
- var i, len;
- for (i = 0, len = exports.skips.length; i < len; i++) {
- if (exports.skips[i].test(name)) {
- return false;
- }
- }
- for (i = 0, len = exports.names.length; i < len; i++) {
- if (exports.names[i].test(name)) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Coerce `val`.
- *
- * @param {Mixed} val
- * @return {Mixed}
- * @api private
- */
-
- function coerce(val) {
- if (val instanceof Error) return val.stack || val.message;
- return val;
- }
-
-
- /***/ }),
- /* 111 */
- /***/ (function(module, exports, __webpack_require__) {
-
- /* WEBPACK VAR INJECTION */(function(process) {/**
- * This is the web browser implementation of `debug()`.
- *
- * Expose `debug()` as the module.
- */
-
- exports = module.exports = __webpack_require__(112);
- exports.log = log;
- exports.formatArgs = formatArgs;
- exports.save = save;
- exports.load = load;
- exports.useColors = useColors;
- exports.storage = 'undefined' != typeof chrome
- && 'undefined' != typeof chrome.storage
- ? chrome.storage.local
- : localstorage();
-
- /**
- * Colors.
- */
-
- exports.colors = [
- '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC',
- '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF',
- '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC',
- '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF',
- '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC',
- '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033',
- '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366',
- '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933',
- '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC',
- '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF',
- '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'
- ];
-
- /**
- * Currently only WebKit-based Web Inspectors, Firefox >= v31,
- * and the Firebug extension (any Firefox version) are known
- * to support "%c" CSS customizations.
- *
- * TODO: add a `localStorage` variable to explicitly enable/disable colors
- */
-
- function useColors() {
- // NB: In an Electron preload script, document will be defined but not fully
- // initialized. Since we know we're in Chrome, we'll just detect this case
- // explicitly
- if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {
- return true;
- }
-
- // Internet Explorer and Edge do not support colors.
- if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
- return false;
- }
-
- // is webkit? http://stackoverflow.com/a/16459606/376773
- // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632
- return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||
- // is firebug? http://stackoverflow.com/a/398120/376773
- (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||
- // is firefox >= v31?
- // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
- (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||
- // double check webkit in userAgent just in case we are in a worker
- (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/));
- }
-
- /**
- * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.
- */
-
- exports.formatters.j = function(v) {
- try {
- return JSON.stringify(v);
- } catch (err) {
- return '[UnexpectedJSONParseError]: ' + err.message;
- }
- };
-
-
- /**
- * Colorize log arguments if enabled.
- *
- * @api public
- */
-
- function formatArgs(args) {
- var useColors = this.useColors;
-
- args[0] = (useColors ? '%c' : '')
- + this.namespace
- + (useColors ? ' %c' : ' ')
- + args[0]
- + (useColors ? '%c ' : ' ')
- + '+' + exports.humanize(this.diff);
-
- if (!useColors) return;
-
- var c = 'color: ' + this.color;
- args.splice(1, 0, c, 'color: inherit')
-
- // the final "%c" is somewhat tricky, because there could be other
- // arguments passed either before or after the %c, so we need to
- // figure out the correct index to insert the CSS into
- var index = 0;
- var lastC = 0;
- args[0].replace(/%[a-zA-Z%]/g, function(match) {
- if ('%%' === match) return;
- index++;
- if ('%c' === match) {
- // we only are interested in the *last* %c
- // (the user may have provided their own)
- lastC = index;
- }
- });
-
- args.splice(lastC, 0, c);
- }
-
- /**
- * Invokes `console.log()` when available.
- * No-op when `console.log` is not a "function".
- *
- * @api public
- */
-
- function log() {
- // this hackery is required for IE8/9, where
- // the `console.log` function doesn't have 'apply'
- return 'object' === typeof console
- && console.log
- && Function.prototype.apply.call(console.log, console, arguments);
- }
-
- /**
- * Save `namespaces`.
- *
- * @param {String} namespaces
- * @api private
- */
-
- function save(namespaces) {
- try {
- if (null == namespaces) {
- exports.storage.removeItem('debug');
- } else {
- exports.storage.debug = namespaces;
- }
- } catch(e) {}
- }
-
- /**
- * Load `namespaces`.
- *
- * @return {String} returns the previously persisted debug modes
- * @api private
- */
-
- function load() {
- var r;
- try {
- r = exports.storage.debug;
- } catch(e) {}
-
- // If debug isn't set in LS, and we're in Electron, try to load $DEBUG
- if (!r && typeof process !== 'undefined' && 'env' in process) {
- r = process.env.DEBUG;
- }
-
- return r;
- }
-
- /**
- * Enable namespaces listed in `localStorage.debug` initially.
- */
-
- exports.enable(load());
-
- /**
- * Localstorage attempts to return the localstorage.
- *
- * This is necessary because safari throws
- * when a user disables cookies/localstorage
- * and you attempt to access it.
- *
- * @return {LocalStorage}
- * @api private
- */
-
- function localstorage() {
- try {
- return window.localStorage;
- } catch (e) {}
- }
-
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(33)))
-
- /***/ }),
- /* 112 */
- /***/ (function(module, exports, __webpack_require__) {
-
-
- /**
- * This is the common logic for both the Node.js and web browser
- * implementations of `debug()`.
- *
- * Expose `debug()` as the module.
- */
-
- exports = module.exports = createDebug.debug = createDebug['default'] = createDebug;
- exports.coerce = coerce;
- exports.disable = disable;
- exports.enable = enable;
- exports.enabled = enabled;
- exports.humanize = __webpack_require__(47);
-
- /**
- * Active `debug` instances.
- */
- exports.instances = [];
-
- /**
- * The currently active debug mode names, and names to skip.
- */
-
- exports.names = [];
- exports.skips = [];
-
- /**
- * Map of special "%n" handling functions, for the debug "format" argument.
- *
- * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N".
- */
-
- exports.formatters = {};
-
- /**
- * Select a color.
- * @param {String} namespace
- * @return {Number}
- * @api private
- */
-
- function selectColor(namespace) {
- var hash = 0, i;
-
- for (i in namespace) {
- hash = ((hash << 5) - hash) + namespace.charCodeAt(i);
- hash |= 0; // Convert to 32bit integer
- }
-
- return exports.colors[Math.abs(hash) % exports.colors.length];
- }
-
- /**
- * Create a debugger with the given `namespace`.
- *
- * @param {String} namespace
- * @return {Function}
- * @api public
- */
-
- function createDebug(namespace) {
-
- var prevTime;
-
- function debug() {
- // disabled?
- if (!debug.enabled) return;
-
- var self = debug;
-
- // set `diff` timestamp
- var curr = +new Date();
- var ms = curr - (prevTime || curr);
- self.diff = ms;
- self.prev = prevTime;
- self.curr = curr;
- prevTime = curr;
-
- // turn the `arguments` into a proper Array
- var args = new Array(arguments.length);
- for (var i = 0; i < args.length; i++) {
- args[i] = arguments[i];
- }
-
- args[0] = exports.coerce(args[0]);
-
- if ('string' !== typeof args[0]) {
- // anything else let's inspect with %O
- args.unshift('%O');
- }
-
- // apply any `formatters` transformations
- var index = 0;
- args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {
- // if we encounter an escaped % then don't increase the array index
- if (match === '%%') return match;
- index++;
- var formatter = exports.formatters[format];
- if ('function' === typeof formatter) {
- var val = args[index];
- match = formatter.call(self, val);
-
- // now we need to remove `args[index]` since it's inlined in the `format`
- args.splice(index, 1);
- index--;
- }
- return match;
- });
-
- // apply env-specific formatting (colors, etc.)
- exports.formatArgs.call(self, args);
-
- var logFn = debug.log || exports.log || console.log.bind(console);
- logFn.apply(self, args);
- }
-
- debug.namespace = namespace;
- debug.enabled = exports.enabled(namespace);
- debug.useColors = exports.useColors();
- debug.color = selectColor(namespace);
- debug.destroy = destroy;
-
- // env-specific initialization logic for debug instances
- if ('function' === typeof exports.init) {
- exports.init(debug);
- }
-
- exports.instances.push(debug);
-
- return debug;
- }
-
- function destroy () {
- var index = exports.instances.indexOf(this);
- if (index !== -1) {
- exports.instances.splice(index, 1);
- return true;
- } else {
- return false;
- }
- }
-
- /**
- * Enables a debug mode by namespaces. This can include modes
- * separated by a colon and wildcards.
- *
- * @param {String} namespaces
- * @api public
- */
-
- function enable(namespaces) {
- exports.save(namespaces);
-
- exports.names = [];
- exports.skips = [];
-
- var i;
- var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/);
- var len = split.length;
-
- for (i = 0; i < len; i++) {
- if (!split[i]) continue; // ignore empty strings
- namespaces = split[i].replace(/\*/g, '.*?');
- if (namespaces[0] === '-') {
- exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));
- } else {
- exports.names.push(new RegExp('^' + namespaces + '$'));
- }
- }
-
- for (i = 0; i < exports.instances.length; i++) {
- var instance = exports.instances[i];
- instance.enabled = exports.enabled(instance.namespace);
- }
- }
-
- /**
- * Disable debug output.
- *
- * @api public
- */
-
- function disable() {
- exports.enable('');
- }
-
- /**
- * Returns true if the given mode name is enabled, false otherwise.
- *
- * @param {String} name
- * @return {Boolean}
- * @api public
- */
-
- function enabled(name) {
- if (name[name.length - 1] === '*') {
- return true;
- }
- var i, len;
- for (i = 0, len = exports.skips.length; i < len; i++) {
- if (exports.skips[i].test(name)) {
- return false;
- }
- }
- for (i = 0, len = exports.names.length; i < len; i++) {
- if (exports.names[i].test(name)) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Coerce `val`.
- *
- * @param {Mixed} val
- * @return {Mixed}
- * @api private
- */
-
- function coerce(val) {
- if (val instanceof Error) return val.stack || val.message;
- return val;
- }
-
-
- /***/ }),
- /* 113 */
- /***/ (function(module, exports, __webpack_require__) {
-
- /*global Blob,File*/
-
- /**
- * Module requirements
- */
-
- var isArray = __webpack_require__(62);
- var isBuf = __webpack_require__(63);
- var toString = Object.prototype.toString;
- var withNativeBlob = typeof Blob === 'function' || (typeof Blob !== 'undefined' && toString.call(Blob) === '[object BlobConstructor]');
- var withNativeFile = typeof File === 'function' || (typeof File !== 'undefined' && toString.call(File) === '[object FileConstructor]');
-
- /**
- * Replaces every Buffer | ArrayBuffer in packet with a numbered placeholder.
- * Anything with blobs or files should be fed through removeBlobs before coming
- * here.
- *
- * @param {Object} packet - socket.io event packet
- * @return {Object} with deconstructed packet and list of buffers
- * @api public
- */
-
- exports.deconstructPacket = function(packet) {
- var buffers = [];
- var packetData = packet.data;
- var pack = packet;
- pack.data = _deconstructPacket(packetData, buffers);
- pack.attachments = buffers.length; // number of binary 'attachments'
- return {packet: pack, buffers: buffers};
- };
-
- function _deconstructPacket(data, buffers) {
- if (!data) return data;
-
- if (isBuf(data)) {
- var placeholder = { _placeholder: true, num: buffers.length };
- buffers.push(data);
- return placeholder;
- } else if (isArray(data)) {
- var newData = new Array(data.length);
- for (var i = 0; i < data.length; i++) {
- newData[i] = _deconstructPacket(data[i], buffers);
- }
- return newData;
- } else if (typeof data === 'object' && !(data instanceof Date)) {
- var newData = {};
- for (var key in data) {
- newData[key] = _deconstructPacket(data[key], buffers);
- }
- return newData;
- }
- return data;
- }
-
- /**
- * Reconstructs a binary packet from its placeholder packet and buffers
- *
- * @param {Object} packet - event packet with placeholders
- * @param {Array} buffers - binary buffers to put in placeholder positions
- * @return {Object} reconstructed packet
- * @api public
- */
-
- exports.reconstructPacket = function(packet, buffers) {
- packet.data = _reconstructPacket(packet.data, buffers);
- packet.attachments = undefined; // no longer useful
- return packet;
- };
-
- function _reconstructPacket(data, buffers) {
- if (!data) return data;
-
- if (data && data._placeholder) {
- return buffers[data.num]; // appropriate buffer (should be natural order anyway)
- } else if (isArray(data)) {
- for (var i = 0; i < data.length; i++) {
- data[i] = _reconstructPacket(data[i], buffers);
- }
- } else if (typeof data === 'object') {
- for (var key in data) {
- data[key] = _reconstructPacket(data[key], buffers);
- }
- }
-
- return data;
- }
-
- /**
- * Asynchronously removes Blobs or Files from data via
- * FileReader's readAsArrayBuffer method. Used before encoding
- * data as msgpack. Calls callback with the blobless data.
- *
- * @param {Object} data
- * @param {Function} callback
- * @api private
- */
-
- exports.removeBlobs = function(data, callback) {
- function _removeBlobs(obj, curKey, containingObject) {
- if (!obj) return obj;
-
- // convert any blob
- if ((withNativeBlob && obj instanceof Blob) ||
- (withNativeFile && obj instanceof File)) {
- pendingBlobs++;
-
- // async filereader
- var fileReader = new FileReader();
- fileReader.onload = function() { // this.result == arraybuffer
- if (containingObject) {
- containingObject[curKey] = this.result;
- }
- else {
- bloblessData = this.result;
- }
-
- // if nothing pending its callback time
- if(! --pendingBlobs) {
- callback(bloblessData);
- }
- };
-
- fileReader.readAsArrayBuffer(obj); // blob -> arraybuffer
- } else if (isArray(obj)) { // handle array
- for (var i = 0; i < obj.length; i++) {
- _removeBlobs(obj[i], i, obj);
- }
- } else if (typeof obj === 'object' && !isBuf(obj)) { // and object
- for (var key in obj) {
- _removeBlobs(obj[key], key, obj);
- }
- }
- }
-
- var pendingBlobs = 0;
- var bloblessData = data;
- _removeBlobs(bloblessData);
- if (!pendingBlobs) {
- callback(bloblessData);
- }
- };
-
-
- /***/ }),
- /* 114 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
-
- exports.byteLength = byteLength
- exports.toByteArray = toByteArray
- exports.fromByteArray = fromByteArray
-
- var lookup = []
- var revLookup = []
- var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
-
- var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
- for (var i = 0, len = code.length; i < len; ++i) {
- lookup[i] = code[i]
- revLookup[code.charCodeAt(i)] = i
- }
-
- // Support decoding URL-safe base64 strings, as Node.js does.
- // See: https://en.wikipedia.org/wiki/Base64#URL_applications
- revLookup['-'.charCodeAt(0)] = 62
- revLookup['_'.charCodeAt(0)] = 63
-
- function getLens (b64) {
- var len = b64.length
-
- if (len % 4 > 0) {
- throw new Error('Invalid string. Length must be a multiple of 4')
- }
-
- // Trim off extra bytes after placeholder bytes are found
- // See: https://github.com/beatgammit/base64-js/issues/42
- var validLen = b64.indexOf('=')
- if (validLen === -1) validLen = len
-
- var placeHoldersLen = validLen === len
- ? 0
- : 4 - (validLen % 4)
-
- return [validLen, placeHoldersLen]
- }
-
- // base64 is 4/3 + up to two characters of the original data
- function byteLength (b64) {
- var lens = getLens(b64)
- var validLen = lens[0]
- var placeHoldersLen = lens[1]
- return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
- }
-
- function _byteLength (b64, validLen, placeHoldersLen) {
- return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
- }
-
- function toByteArray (b64) {
- var tmp
- var lens = getLens(b64)
- var validLen = lens[0]
- var placeHoldersLen = lens[1]
-
- var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))
-
- var curByte = 0
-
- // if there are placeholders, only get up to the last complete 4 chars
- var len = placeHoldersLen > 0
- ? validLen - 4
- : validLen
-
- for (var i = 0; i < len; i += 4) {
- tmp =
- (revLookup[b64.charCodeAt(i)] << 18) |
- (revLookup[b64.charCodeAt(i + 1)] << 12) |
- (revLookup[b64.charCodeAt(i + 2)] << 6) |
- revLookup[b64.charCodeAt(i + 3)]
- arr[curByte++] = (tmp >> 16) & 0xFF
- arr[curByte++] = (tmp >> 8) & 0xFF
- arr[curByte++] = tmp & 0xFF
- }
-
- if (placeHoldersLen === 2) {
- tmp =
- (revLookup[b64.charCodeAt(i)] << 2) |
- (revLookup[b64.charCodeAt(i + 1)] >> 4)
- arr[curByte++] = tmp & 0xFF
- }
-
- if (placeHoldersLen === 1) {
- tmp =
- (revLookup[b64.charCodeAt(i)] << 10) |
- (revLookup[b64.charCodeAt(i + 1)] << 4) |
- (revLookup[b64.charCodeAt(i + 2)] >> 2)
- arr[curByte++] = (tmp >> 8) & 0xFF
- arr[curByte++] = tmp & 0xFF
- }
-
- return arr
- }
-
- function tripletToBase64 (num) {
- return lookup[num >> 18 & 0x3F] +
- lookup[num >> 12 & 0x3F] +
- lookup[num >> 6 & 0x3F] +
- lookup[num & 0x3F]
- }
-
- function encodeChunk (uint8, start, end) {
- var tmp
- var output = []
- for (var i = start; i < end; i += 3) {
- tmp =
- ((uint8[i] << 16) & 0xFF0000) +
- ((uint8[i + 1] << 8) & 0xFF00) +
- (uint8[i + 2] & 0xFF)
- output.push(tripletToBase64(tmp))
- }
- return output.join('')
- }
-
- function fromByteArray (uint8) {
- var tmp
- var len = uint8.length
- var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
- var parts = []
- var maxChunkLength = 16383 // must be multiple of 3
-
- // go through the array every three bytes, we'll deal with trailing stuff later
- for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
- parts.push(encodeChunk(
- uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)
- ))
- }
-
- // pad the end with zeros, but make sure to not forget the extra bytes
- if (extraBytes === 1) {
- tmp = uint8[len - 1]
- parts.push(
- lookup[tmp >> 2] +
- lookup[(tmp << 4) & 0x3F] +
- '=='
- )
- } else if (extraBytes === 2) {
- tmp = (uint8[len - 2] << 8) + uint8[len - 1]
- parts.push(
- lookup[tmp >> 10] +
- lookup[(tmp >> 4) & 0x3F] +
- lookup[(tmp << 2) & 0x3F] +
- '='
- )
- }
-
- return parts.join('')
- }
-
-
- /***/ }),
- /* 115 */
- /***/ (function(module, exports) {
-
- exports.read = function (buffer, offset, isLE, mLen, nBytes) {
- var e, m
- var eLen = (nBytes * 8) - mLen - 1
- var eMax = (1 << eLen) - 1
- var eBias = eMax >> 1
- var nBits = -7
- var i = isLE ? (nBytes - 1) : 0
- var d = isLE ? -1 : 1
- var s = buffer[offset + i]
-
- i += d
-
- e = s & ((1 << (-nBits)) - 1)
- s >>= (-nBits)
- nBits += eLen
- for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}
-
- m = e & ((1 << (-nBits)) - 1)
- e >>= (-nBits)
- nBits += mLen
- for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}
-
- if (e === 0) {
- e = 1 - eBias
- } else if (e === eMax) {
- return m ? NaN : ((s ? -1 : 1) * Infinity)
- } else {
- m = m + Math.pow(2, mLen)
- e = e - eBias
- }
- return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
- }
-
- exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
- var e, m, c
- var eLen = (nBytes * 8) - mLen - 1
- var eMax = (1 << eLen) - 1
- var eBias = eMax >> 1
- var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
- var i = isLE ? 0 : (nBytes - 1)
- var d = isLE ? 1 : -1
- var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
-
- value = Math.abs(value)
-
- if (isNaN(value) || value === Infinity) {
- m = isNaN(value) ? 1 : 0
- e = eMax
- } else {
- e = Math.floor(Math.log(value) / Math.LN2)
- if (value * (c = Math.pow(2, -e)) < 1) {
- e--
- c *= 2
- }
- if (e + eBias >= 1) {
- value += rt / c
- } else {
- value += rt * Math.pow(2, 1 - eBias)
- }
- if (value * c >= 2) {
- e++
- c /= 2
- }
-
- if (e + eBias >= eMax) {
- m = 0
- e = eMax
- } else if (e + eBias >= 1) {
- m = ((value * c) - 1) * Math.pow(2, mLen)
- e = e + eBias
- } else {
- m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
- e = 0
- }
- }
-
- for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
-
- e = (e << mLen) | m
- eLen += mLen
- for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
-
- buffer[offset + i - d] |= s * 128
- }
-
-
- /***/ }),
- /* 116 */
- /***/ (function(module, exports) {
-
- var toString = {}.toString;
-
- module.exports = Array.isArray || function (arr) {
- return toString.call(arr) == '[object Array]';
- };
-
-
- /***/ }),
- /* 117 */
- /***/ (function(module, exports, __webpack_require__) {
-
-
- module.exports = __webpack_require__(118);
-
- /**
- * Exports parser
- *
- * @api public
- *
- */
- module.exports.parser = __webpack_require__(18);
-
-
- /***/ }),
- /* 118 */
- /***/ (function(module, exports, __webpack_require__) {
-
- /**
- * Module dependencies.
- */
-
- var transports = __webpack_require__(65);
- var Emitter = __webpack_require__(17);
- var debug = __webpack_require__(36)('engine.io-client:socket');
- var index = __webpack_require__(69);
- var parser = __webpack_require__(18);
- var parseuri = __webpack_require__(61);
- var parseqs = __webpack_require__(34);
-
- /**
- * Module exports.
- */
-
- module.exports = Socket;
-
- /**
- * Socket constructor.
- *
- * @param {String|Object} uri or options
- * @param {Object} options
- * @api public
- */
-
- function Socket (uri, opts) {
- if (!(this instanceof Socket)) return new Socket(uri, opts);
-
- opts = opts || {};
-
- if (uri && 'object' === typeof uri) {
- opts = uri;
- uri = null;
- }
-
- if (uri) {
- uri = parseuri(uri);
- opts.hostname = uri.host;
- opts.secure = uri.protocol === 'https' || uri.protocol === 'wss';
- opts.port = uri.port;
- if (uri.query) opts.query = uri.query;
- } else if (opts.host) {
- opts.hostname = parseuri(opts.host).host;
- }
-
- this.secure = null != opts.secure ? opts.secure
- : (typeof location !== 'undefined' && 'https:' === location.protocol);
-
- if (opts.hostname && !opts.port) {
- // if no port is specified manually, use the protocol default
- opts.port = this.secure ? '443' : '80';
- }
-
- this.agent = opts.agent || false;
- this.hostname = opts.hostname ||
- (typeof location !== 'undefined' ? location.hostname : 'localhost');
- this.port = opts.port || (typeof location !== 'undefined' && location.port
- ? location.port
- : (this.secure ? 443 : 80));
- this.query = opts.query || {};
- if ('string' === typeof this.query) this.query = parseqs.decode(this.query);
- this.upgrade = false !== opts.upgrade;
- this.path = (opts.path || '/engine.io').replace(/\/$/, '') + '/';
- this.forceJSONP = !!opts.forceJSONP;
- this.jsonp = false !== opts.jsonp;
- this.forceBase64 = !!opts.forceBase64;
- this.enablesXDR = !!opts.enablesXDR;
- this.timestampParam = opts.timestampParam || 't';
- this.timestampRequests = opts.timestampRequests;
- this.transports = opts.transports || ['polling', 'websocket'];
- this.transportOptions = opts.transportOptions || {};
- this.readyState = '';
- this.writeBuffer = [];
- this.prevBufferLen = 0;
- this.policyPort = opts.policyPort || 843;
- this.rememberUpgrade = opts.rememberUpgrade || false;
- this.binaryType = null;
- this.onlyBinaryUpgrades = opts.onlyBinaryUpgrades;
- this.perMessageDeflate = false !== opts.perMessageDeflate ? (opts.perMessageDeflate || {}) : false;
-
- if (true === this.perMessageDeflate) this.perMessageDeflate = {};
- if (this.perMessageDeflate && null == this.perMessageDeflate.threshold) {
- this.perMessageDeflate.threshold = 1024;
- }
-
- // SSL options for Node.js client
- this.pfx = opts.pfx || null;
- this.key = opts.key || null;
- this.passphrase = opts.passphrase || null;
- this.cert = opts.cert || null;
- this.ca = opts.ca || null;
- this.ciphers = opts.ciphers || null;
- this.rejectUnauthorized = opts.rejectUnauthorized === undefined ? true : opts.rejectUnauthorized;
- this.forceNode = !!opts.forceNode;
-
- // detect ReactNative environment
- this.isReactNative = (typeof navigator !== 'undefined' && typeof navigator.product === 'string' && navigator.product.toLowerCase() === 'reactnative');
-
- // other options for Node.js or ReactNative client
- if (typeof self === 'undefined' || this.isReactNative) {
- if (opts.extraHeaders && Object.keys(opts.extraHeaders).length > 0) {
- this.extraHeaders = opts.extraHeaders;
- }
-
- if (opts.localAddress) {
- this.localAddress = opts.localAddress;
- }
- }
-
- // set on handshake
- this.id = null;
- this.upgrades = null;
- this.pingInterval = null;
- this.pingTimeout = null;
-
- // set on heartbeat
- this.pingIntervalTimer = null;
- this.pingTimeoutTimer = null;
-
- this.open();
- }
-
- Socket.priorWebsocketSuccess = false;
-
- /**
- * Mix in `Emitter`.
- */
-
- Emitter(Socket.prototype);
-
- /**
- * Protocol version.
- *
- * @api public
- */
-
- Socket.protocol = parser.protocol; // this is an int
-
- /**
- * Expose deps for legacy compatibility
- * and standalone browser access.
- */
-
- Socket.Socket = Socket;
- Socket.Transport = __webpack_require__(51);
- Socket.transports = __webpack_require__(65);
- Socket.parser = __webpack_require__(18);
-
- /**
- * Creates transport of the given type.
- *
- * @param {String} transport name
- * @return {Transport}
- * @api private
- */
-
- Socket.prototype.createTransport = function (name) {
- debug('creating transport "%s"', name);
- var query = clone(this.query);
-
- // append engine.io protocol identifier
- query.EIO = parser.protocol;
-
- // transport name
- query.transport = name;
-
- // per-transport options
- var options = this.transportOptions[name] || {};
-
- // session id if we already have one
- if (this.id) query.sid = this.id;
-
- var transport = new transports[name]({
- query: query,
- socket: this,
- agent: options.agent || this.agent,
- hostname: options.hostname || this.hostname,
- port: options.port || this.port,
- secure: options.secure || this.secure,
- path: options.path || this.path,
- forceJSONP: options.forceJSONP || this.forceJSONP,
- jsonp: options.jsonp || this.jsonp,
- forceBase64: options.forceBase64 || this.forceBase64,
- enablesXDR: options.enablesXDR || this.enablesXDR,
- timestampRequests: options.timestampRequests || this.timestampRequests,
- timestampParam: options.timestampParam || this.timestampParam,
- policyPort: options.policyPort || this.policyPort,
- pfx: options.pfx || this.pfx,
- key: options.key || this.key,
- passphrase: options.passphrase || this.passphrase,
- cert: options.cert || this.cert,
- ca: options.ca || this.ca,
- ciphers: options.ciphers || this.ciphers,
- rejectUnauthorized: options.rejectUnauthorized || this.rejectUnauthorized,
- perMessageDeflate: options.perMessageDeflate || this.perMessageDeflate,
- extraHeaders: options.extraHeaders || this.extraHeaders,
- forceNode: options.forceNode || this.forceNode,
- localAddress: options.localAddress || this.localAddress,
- requestTimeout: options.requestTimeout || this.requestTimeout,
- protocols: options.protocols || void (0),
- isReactNative: this.isReactNative
- });
-
- return transport;
- };
-
- function clone (obj) {
- var o = {};
- for (var i in obj) {
- if (obj.hasOwnProperty(i)) {
- o[i] = obj[i];
- }
- }
- return o;
- }
-
- /**
- * Initializes transport to use and starts probe.
- *
- * @api private
- */
- Socket.prototype.open = function () {
- var transport;
- if (this.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf('websocket') !== -1) {
- transport = 'websocket';
- } else if (0 === this.transports.length) {
- // Emit error on next tick so it can be listened to
- var self = this;
- setTimeout(function () {
- self.emit('error', 'No transports available');
- }, 0);
- return;
- } else {
- transport = this.transports[0];
- }
- this.readyState = 'opening';
-
- // Retry with the next transport if the transport is disabled (jsonp: false)
- try {
- transport = this.createTransport(transport);
- } catch (e) {
- this.transports.shift();
- this.open();
- return;
- }
-
- transport.open();
- this.setTransport(transport);
- };
-
- /**
- * Sets the current transport. Disables the existing one (if any).
- *
- * @api private
- */
-
- Socket.prototype.setTransport = function (transport) {
- debug('setting transport %s', transport.name);
- var self = this;
-
- if (this.transport) {
- debug('clearing existing transport %s', this.transport.name);
- this.transport.removeAllListeners();
- }
-
- // set up transport
- this.transport = transport;
-
- // set up transport listeners
- transport
- .on('drain', function () {
- self.onDrain();
- })
- .on('packet', function (packet) {
- self.onPacket(packet);
- })
- .on('error', function (e) {
- self.onError(e);
- })
- .on('close', function () {
- self.onClose('transport close');
- });
- };
-
- /**
- * Probes a transport.
- *
- * @param {String} transport name
- * @api private
- */
-
- Socket.prototype.probe = function (name) {
- debug('probing transport "%s"', name);
- var transport = this.createTransport(name, { probe: 1 });
- var failed = false;
- var self = this;
-
- Socket.priorWebsocketSuccess = false;
-
- function onTransportOpen () {
- if (self.onlyBinaryUpgrades) {
- var upgradeLosesBinary = !this.supportsBinary && self.transport.supportsBinary;
- failed = failed || upgradeLosesBinary;
- }
- if (failed) return;
-
- debug('probe transport "%s" opened', name);
- transport.send([{ type: 'ping', data: 'probe' }]);
- transport.once('packet', function (msg) {
- if (failed) return;
- if ('pong' === msg.type && 'probe' === msg.data) {
- debug('probe transport "%s" pong', name);
- self.upgrading = true;
- self.emit('upgrading', transport);
- if (!transport) return;
- Socket.priorWebsocketSuccess = 'websocket' === transport.name;
-
- debug('pausing current transport "%s"', self.transport.name);
- self.transport.pause(function () {
- if (failed) return;
- if ('closed' === self.readyState) return;
- debug('changing transport and sending upgrade packet');
-
- cleanup();
-
- self.setTransport(transport);
- transport.send([{ type: 'upgrade' }]);
- self.emit('upgrade', transport);
- transport = null;
- self.upgrading = false;
- self.flush();
- });
- } else {
- debug('probe transport "%s" failed', name);
- var err = new Error('probe error');
- err.transport = transport.name;
- self.emit('upgradeError', err);
- }
- });
- }
-
- function freezeTransport () {
- if (failed) return;
-
- // Any callback called by transport should be ignored since now
- failed = true;
-
- cleanup();
-
- transport.close();
- transport = null;
- }
-
- // Handle any error that happens while probing
- function onerror (err) {
- var error = new Error('probe error: ' + err);
- error.transport = transport.name;
-
- freezeTransport();
-
- debug('probe transport "%s" failed because of error: %s', name, err);
-
- self.emit('upgradeError', error);
- }
-
- function onTransportClose () {
- onerror('transport closed');
- }
-
- // When the socket is closed while we're probing
- function onclose () {
- onerror('socket closed');
- }
-
- // When the socket is upgraded while we're probing
- function onupgrade (to) {
- if (transport && to.name !== transport.name) {
- debug('"%s" works - aborting "%s"', to.name, transport.name);
- freezeTransport();
- }
- }
-
- // Remove all listeners on the transport and on self
- function cleanup () {
- transport.removeListener('open', onTransportOpen);
- transport.removeListener('error', onerror);
- transport.removeListener('close', onTransportClose);
- self.removeListener('close', onclose);
- self.removeListener('upgrading', onupgrade);
- }
-
- transport.once('open', onTransportOpen);
- transport.once('error', onerror);
- transport.once('close', onTransportClose);
-
- this.once('close', onclose);
- this.once('upgrading', onupgrade);
-
- transport.open();
- };
-
- /**
- * Called when connection is deemed open.
- *
- * @api public
- */
-
- Socket.prototype.onOpen = function () {
- debug('socket open');
- this.readyState = 'open';
- Socket.priorWebsocketSuccess = 'websocket' === this.transport.name;
- this.emit('open');
- this.flush();
-
- // we check for `readyState` in case an `open`
- // listener already closed the socket
- if ('open' === this.readyState && this.upgrade && this.transport.pause) {
- debug('starting upgrade probes');
- for (var i = 0, l = this.upgrades.length; i < l; i++) {
- this.probe(this.upgrades[i]);
- }
- }
- };
-
- /**
- * Handles a packet.
- *
- * @api private
- */
-
- Socket.prototype.onPacket = function (packet) {
- if ('opening' === this.readyState || 'open' === this.readyState ||
- 'closing' === this.readyState) {
- debug('socket receive: type "%s", data "%s"', packet.type, packet.data);
-
- this.emit('packet', packet);
-
- // Socket is live - any packet counts
- this.emit('heartbeat');
-
- switch (packet.type) {
- case 'open':
- this.onHandshake(JSON.parse(packet.data));
- break;
-
- case 'pong':
- this.setPing();
- this.emit('pong');
- break;
-
- case 'error':
- var err = new Error('server error');
- err.code = packet.data;
- this.onError(err);
- break;
-
- case 'message':
- this.emit('data', packet.data);
- this.emit('message', packet.data);
- break;
- }
- } else {
- debug('packet received with socket readyState "%s"', this.readyState);
- }
- };
-
- /**
- * Called upon handshake completion.
- *
- * @param {Object} handshake obj
- * @api private
- */
-
- Socket.prototype.onHandshake = function (data) {
- this.emit('handshake', data);
- this.id = data.sid;
- this.transport.query.sid = data.sid;
- this.upgrades = this.filterUpgrades(data.upgrades);
- this.pingInterval = data.pingInterval;
- this.pingTimeout = data.pingTimeout;
- this.onOpen();
- // In case open handler closes socket
- if ('closed' === this.readyState) return;
- this.setPing();
-
- // Prolong liveness of socket on heartbeat
- this.removeListener('heartbeat', this.onHeartbeat);
- this.on('heartbeat', this.onHeartbeat);
- };
-
- /**
- * Resets ping timeout.
- *
- * @api private
- */
-
- Socket.prototype.onHeartbeat = function (timeout) {
- clearTimeout(this.pingTimeoutTimer);
- var self = this;
- self.pingTimeoutTimer = setTimeout(function () {
- if ('closed' === self.readyState) return;
- self.onClose('ping timeout');
- }, timeout || (self.pingInterval + self.pingTimeout));
- };
-
- /**
- * Pings server every `this.pingInterval` and expects response
- * within `this.pingTimeout` or closes connection.
- *
- * @api private
- */
-
- Socket.prototype.setPing = function () {
- var self = this;
- clearTimeout(self.pingIntervalTimer);
- self.pingIntervalTimer = setTimeout(function () {
- debug('writing ping packet - expecting pong within %sms', self.pingTimeout);
- self.ping();
- self.onHeartbeat(self.pingTimeout);
- }, self.pingInterval);
- };
-
- /**
- * Sends a ping packet.
- *
- * @api private
- */
-
- Socket.prototype.ping = function () {
- var self = this;
- this.sendPacket('ping', function () {
- self.emit('ping');
- });
- };
-
- /**
- * Called on `drain` event
- *
- * @api private
- */
-
- Socket.prototype.onDrain = function () {
- this.writeBuffer.splice(0, this.prevBufferLen);
-
- // setting prevBufferLen = 0 is very important
- // for example, when upgrading, upgrade packet is sent over,
- // and a nonzero prevBufferLen could cause problems on `drain`
- this.prevBufferLen = 0;
-
- if (0 === this.writeBuffer.length) {
- this.emit('drain');
- } else {
- this.flush();
- }
- };
-
- /**
- * Flush write buffers.
- *
- * @api private
- */
-
- Socket.prototype.flush = function () {
- if ('closed' !== this.readyState && this.transport.writable &&
- !this.upgrading && this.writeBuffer.length) {
- debug('flushing %d packets in socket', this.writeBuffer.length);
- this.transport.send(this.writeBuffer);
- // keep track of current length of writeBuffer
- // splice writeBuffer and callbackBuffer on `drain`
- this.prevBufferLen = this.writeBuffer.length;
- this.emit('flush');
- }
- };
-
- /**
- * Sends a message.
- *
- * @param {String} message.
- * @param {Function} callback function.
- * @param {Object} options.
- * @return {Socket} for chaining.
- * @api public
- */
-
- Socket.prototype.write =
- Socket.prototype.send = function (msg, options, fn) {
- this.sendPacket('message', msg, options, fn);
- return this;
- };
-
- /**
- * Sends a packet.
- *
- * @param {String} packet type.
- * @param {String} data.
- * @param {Object} options.
- * @param {Function} callback function.
- * @api private
- */
-
- Socket.prototype.sendPacket = function (type, data, options, fn) {
- if ('function' === typeof data) {
- fn = data;
- data = undefined;
- }
-
- if ('function' === typeof options) {
- fn = options;
- options = null;
- }
-
- if ('closing' === this.readyState || 'closed' === this.readyState) {
- return;
- }
-
- options = options || {};
- options.compress = false !== options.compress;
-
- var packet = {
- type: type,
- data: data,
- options: options
- };
- this.emit('packetCreate', packet);
- this.writeBuffer.push(packet);
- if (fn) this.once('flush', fn);
- this.flush();
- };
-
- /**
- * Closes the connection.
- *
- * @api private
- */
-
- Socket.prototype.close = function () {
- if ('opening' === this.readyState || 'open' === this.readyState) {
- this.readyState = 'closing';
-
- var self = this;
-
- if (this.writeBuffer.length) {
- this.once('drain', function () {
- if (this.upgrading) {
- waitForUpgrade();
- } else {
- close();
- }
- });
- } else if (this.upgrading) {
- waitForUpgrade();
- } else {
- close();
- }
- }
-
- function close () {
- self.onClose('forced close');
- debug('socket closing - telling transport to close');
- self.transport.close();
- }
-
- function cleanupAndClose () {
- self.removeListener('upgrade', cleanupAndClose);
- self.removeListener('upgradeError', cleanupAndClose);
- close();
- }
-
- function waitForUpgrade () {
- // wait for upgrade to finish since we can't send packets while pausing a transport
- self.once('upgrade', cleanupAndClose);
- self.once('upgradeError', cleanupAndClose);
- }
-
- return this;
- };
-
- /**
- * Called upon transport error
- *
- * @api private
- */
-
- Socket.prototype.onError = function (err) {
- debug('socket error %j', err);
- Socket.priorWebsocketSuccess = false;
- this.emit('error', err);
- this.onClose('transport error', err);
- };
-
- /**
- * Called upon transport close.
- *
- * @api private
- */
-
- Socket.prototype.onClose = function (reason, desc) {
- if ('opening' === this.readyState || 'open' === this.readyState || 'closing' === this.readyState) {
- debug('socket close with reason: "%s"', reason);
- var self = this;
-
- // clear timers
- clearTimeout(this.pingIntervalTimer);
- clearTimeout(this.pingTimeoutTimer);
-
- // stop event from firing again for transport
- this.transport.removeAllListeners('close');
-
- // ensure transport won't stay open
- this.transport.close();
-
- // ignore further transport communication
- this.transport.removeAllListeners();
-
- // set ready state
- this.readyState = 'closed';
-
- // clear session id
- this.id = null;
-
- // emit close event
- this.emit('close', reason, desc);
-
- // clean buffers after, so users can still
- // grab the buffers on `close` event
- self.writeBuffer = [];
- self.prevBufferLen = 0;
- }
- };
-
- /**
- * Filters upgrades, returning only those matching client transports.
- *
- * @param {Array} server upgrades
- * @api private
- *
- */
-
- Socket.prototype.filterUpgrades = function (upgrades) {
- var filteredUpgrades = [];
- for (var i = 0, j = upgrades.length; i < j; i++) {
- if (~index(this.transports, upgrades[i])) filteredUpgrades.push(upgrades[i]);
- }
- return filteredUpgrades;
- };
-
-
- /***/ }),
- /* 119 */
- /***/ (function(module, exports) {
-
-
- /**
- * Module exports.
- *
- * Logic borrowed from Modernizr:
- *
- * - https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cors.js
- */
-
- try {
- module.exports = typeof XMLHttpRequest !== 'undefined' &&
- 'withCredentials' in new XMLHttpRequest();
- } catch (err) {
- // if XMLHttp support is disabled in IE then it will throw
- // when trying to create
- module.exports = false;
- }
-
-
- /***/ }),
- /* 120 */
- /***/ (function(module, exports, __webpack_require__) {
-
- /* global attachEvent */
-
- /**
- * Module requirements.
- */
-
- var XMLHttpRequest = __webpack_require__(50);
- var Polling = __webpack_require__(66);
- var Emitter = __webpack_require__(17);
- var inherit = __webpack_require__(35);
- var debug = __webpack_require__(36)('engine.io-client:polling-xhr');
-
- /**
- * Module exports.
- */
-
- module.exports = XHR;
- module.exports.Request = Request;
-
- /**
- * Empty function
- */
-
- function empty () {}
-
- /**
- * XHR Polling constructor.
- *
- * @param {Object} opts
- * @api public
- */
-
- function XHR (opts) {
- Polling.call(this, opts);
- this.requestTimeout = opts.requestTimeout;
- this.extraHeaders = opts.extraHeaders;
-
- if (typeof location !== 'undefined') {
- var isSSL = 'https:' === location.protocol;
- var port = location.port;
-
- // some user agents have empty `location.port`
- if (!port) {
- port = isSSL ? 443 : 80;
- }
-
- this.xd = (typeof location !== 'undefined' && opts.hostname !== location.hostname) ||
- port !== opts.port;
- this.xs = opts.secure !== isSSL;
- }
- }
-
- /**
- * Inherits from Polling.
- */
-
- inherit(XHR, Polling);
-
- /**
- * XHR supports binary
- */
-
- XHR.prototype.supportsBinary = true;
-
- /**
- * Creates a request.
- *
- * @param {String} method
- * @api private
- */
-
- XHR.prototype.request = function (opts) {
- opts = opts || {};
- opts.uri = this.uri();
- opts.xd = this.xd;
- opts.xs = this.xs;
- opts.agent = this.agent || false;
- opts.supportsBinary = this.supportsBinary;
- opts.enablesXDR = this.enablesXDR;
-
- // SSL options for Node.js client
- opts.pfx = this.pfx;
- opts.key = this.key;
- opts.passphrase = this.passphrase;
- opts.cert = this.cert;
- opts.ca = this.ca;
- opts.ciphers = this.ciphers;
- opts.rejectUnauthorized = this.rejectUnauthorized;
- opts.requestTimeout = this.requestTimeout;
-
- // other options for Node.js client
- opts.extraHeaders = this.extraHeaders;
-
- return new Request(opts);
- };
-
- /**
- * Sends data.
- *
- * @param {String} data to send.
- * @param {Function} called upon flush.
- * @api private
- */
-
- XHR.prototype.doWrite = function (data, fn) {
- var isBinary = typeof data !== 'string' && data !== undefined;
- var req = this.request({ method: 'POST', data: data, isBinary: isBinary });
- var self = this;
- req.on('success', fn);
- req.on('error', function (err) {
- self.onError('xhr post error', err);
- });
- this.sendXhr = req;
- };
-
- /**
- * Starts a poll cycle.
- *
- * @api private
- */
-
- XHR.prototype.doPoll = function () {
- debug('xhr poll');
- var req = this.request();
- var self = this;
- req.on('data', function (data) {
- self.onData(data);
- });
- req.on('error', function (err) {
- self.onError('xhr poll error', err);
- });
- this.pollXhr = req;
- };
-
- /**
- * Request constructor
- *
- * @param {Object} options
- * @api public
- */
-
- function Request (opts) {
- this.method = opts.method || 'GET';
- this.uri = opts.uri;
- this.xd = !!opts.xd;
- this.xs = !!opts.xs;
- this.async = false !== opts.async;
- this.data = undefined !== opts.data ? opts.data : null;
- this.agent = opts.agent;
- this.isBinary = opts.isBinary;
- this.supportsBinary = opts.supportsBinary;
- this.enablesXDR = opts.enablesXDR;
- this.requestTimeout = opts.requestTimeout;
-
- // SSL options for Node.js client
- this.pfx = opts.pfx;
- this.key = opts.key;
- this.passphrase = opts.passphrase;
- this.cert = opts.cert;
- this.ca = opts.ca;
- this.ciphers = opts.ciphers;
- this.rejectUnauthorized = opts.rejectUnauthorized;
-
- // other options for Node.js client
- this.extraHeaders = opts.extraHeaders;
-
- this.create();
- }
-
- /**
- * Mix in `Emitter`.
- */
-
- Emitter(Request.prototype);
-
- /**
- * Creates the XHR object and sends the request.
- *
- * @api private
- */
-
- Request.prototype.create = function () {
- var opts = { agent: this.agent, xdomain: this.xd, xscheme: this.xs, enablesXDR: this.enablesXDR };
-
- // SSL options for Node.js client
- opts.pfx = this.pfx;
- opts.key = this.key;
- opts.passphrase = this.passphrase;
- opts.cert = this.cert;
- opts.ca = this.ca;
- opts.ciphers = this.ciphers;
- opts.rejectUnauthorized = this.rejectUnauthorized;
-
- var xhr = this.xhr = new XMLHttpRequest(opts);
- var self = this;
-
- try {
- debug('xhr open %s: %s', this.method, this.uri);
- xhr.open(this.method, this.uri, this.async);
- try {
- if (this.extraHeaders) {
- xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);
- for (var i in this.extraHeaders) {
- if (this.extraHeaders.hasOwnProperty(i)) {
- xhr.setRequestHeader(i, this.extraHeaders[i]);
- }
- }
- }
- } catch (e) {}
-
- if ('POST' === this.method) {
- try {
- if (this.isBinary) {
- xhr.setRequestHeader('Content-type', 'application/octet-stream');
- } else {
- xhr.setRequestHeader('Content-type', 'text/plain;charset=UTF-8');
- }
- } catch (e) {}
- }
-
- try {
- xhr.setRequestHeader('Accept', '*/*');
- } catch (e) {}
-
- // ie6 check
- if ('withCredentials' in xhr) {
- xhr.withCredentials = true;
- }
-
- if (this.requestTimeout) {
- xhr.timeout = this.requestTimeout;
- }
-
- if (this.hasXDR()) {
- xhr.onload = function () {
- self.onLoad();
- };
- xhr.onerror = function () {
- self.onError(xhr.responseText);
- };
- } else {
- xhr.onreadystatechange = function () {
- if (xhr.readyState === 2) {
- try {
- var contentType = xhr.getResponseHeader('Content-Type');
- if (self.supportsBinary && contentType === 'application/octet-stream') {
- xhr.responseType = 'arraybuffer';
- }
- } catch (e) {}
- }
- if (4 !== xhr.readyState) return;
- if (200 === xhr.status || 1223 === xhr.status) {
- self.onLoad();
- } else {
- // make sure the `error` event handler that's user-set
- // does not throw in the same tick and gets caught here
- setTimeout(function () {
- self.onError(xhr.status);
- }, 0);
- }
- };
- }
-
- debug('xhr data %s', this.data);
- xhr.send(this.data);
- } catch (e) {
- // Need to defer since .create() is called directly fhrom the constructor
- // and thus the 'error' event can only be only bound *after* this exception
- // occurs. Therefore, also, we cannot throw here at all.
- setTimeout(function () {
- self.onError(e);
- }, 0);
- return;
- }
-
- if (typeof document !== 'undefined') {
- this.index = Request.requestsCount++;
- Request.requests[this.index] = this;
- }
- };
-
- /**
- * Called upon successful response.
- *
- * @api private
- */
-
- Request.prototype.onSuccess = function () {
- this.emit('success');
- this.cleanup();
- };
-
- /**
- * Called if we have data.
- *
- * @api private
- */
-
- Request.prototype.onData = function (data) {
- this.emit('data', data);
- this.onSuccess();
- };
-
- /**
- * Called upon error.
- *
- * @api private
- */
-
- Request.prototype.onError = function (err) {
- this.emit('error', err);
- this.cleanup(true);
- };
-
- /**
- * Cleans up house.
- *
- * @api private
- */
-
- Request.prototype.cleanup = function (fromError) {
- if ('undefined' === typeof this.xhr || null === this.xhr) {
- return;
- }
- // xmlhttprequest
- if (this.hasXDR()) {
- this.xhr.onload = this.xhr.onerror = empty;
- } else {
- this.xhr.onreadystatechange = empty;
- }
-
- if (fromError) {
- try {
- this.xhr.abort();
- } catch (e) {}
- }
-
- if (typeof document !== 'undefined') {
- delete Request.requests[this.index];
- }
-
- this.xhr = null;
- };
-
- /**
- * Called upon load.
- *
- * @api private
- */
-
- Request.prototype.onLoad = function () {
- var data;
- try {
- var contentType;
- try {
- contentType = this.xhr.getResponseHeader('Content-Type');
- } catch (e) {}
- if (contentType === 'application/octet-stream') {
- data = this.xhr.response || this.xhr.responseText;
- } else {
- data = this.xhr.responseText;
- }
- } catch (e) {
- this.onError(e);
- }
- if (null != data) {
- this.onData(data);
- }
- };
-
- /**
- * Check if it has XDomainRequest.
- *
- * @api private
- */
-
- Request.prototype.hasXDR = function () {
- return typeof XDomainRequest !== 'undefined' && !this.xs && this.enablesXDR;
- };
-
- /**
- * Aborts the request.
- *
- * @api public
- */
-
- Request.prototype.abort = function () {
- this.cleanup();
- };
-
- /**
- * Aborts pending requests when unloading the window. This is needed to prevent
- * memory leaks (e.g. when using IE) and to ensure that no spurious error is
- * emitted.
- */
-
- Request.requestsCount = 0;
- Request.requests = {};
-
- if (typeof document !== 'undefined') {
- if (typeof attachEvent === 'function') {
- attachEvent('onunload', unloadHandler);
- } else if (typeof addEventListener === 'function') {
- var terminationEvent = 'onpagehide' in self ? 'pagehide' : 'unload';
- addEventListener(terminationEvent, unloadHandler, false);
- }
- }
-
- function unloadHandler () {
- for (var i in Request.requests) {
- if (Request.requests.hasOwnProperty(i)) {
- Request.requests[i].abort();
- }
- }
- }
-
-
- /***/ }),
- /* 121 */
- /***/ (function(module, exports) {
-
-
- /**
- * Gets the keys for an object.
- *
- * @return {Array} keys
- * @api private
- */
-
- module.exports = Object.keys || function keys (obj){
- var arr = [];
- var has = Object.prototype.hasOwnProperty;
-
- for (var i in obj) {
- if (has.call(obj, i)) {
- arr.push(i);
- }
- }
- return arr;
- };
-
-
- /***/ }),
- /* 122 */
- /***/ (function(module, exports) {
-
- var toString = {}.toString;
-
- module.exports = Array.isArray || function (arr) {
- return toString.call(arr) == '[object Array]';
- };
-
-
- /***/ }),
- /* 123 */
- /***/ (function(module, exports) {
-
- /**
- * An abstraction for slicing an arraybuffer even when
- * ArrayBuffer.prototype.slice is not supported
- *
- * @api public
- */
-
- module.exports = function(arraybuffer, start, end) {
- var bytes = arraybuffer.byteLength;
- start = start || 0;
- end = end || bytes;
-
- if (arraybuffer.slice) { return arraybuffer.slice(start, end); }
-
- if (start < 0) { start += bytes; }
- if (end < 0) { end += bytes; }
- if (end > bytes) { end = bytes; }
-
- if (start >= bytes || start >= end || bytes === 0) {
- return new ArrayBuffer(0);
- }
-
- var abv = new Uint8Array(arraybuffer);
- var result = new Uint8Array(end - start);
- for (var i = start, ii = 0; i < end; i++, ii++) {
- result[ii] = abv[i];
- }
- return result.buffer;
- };
-
-
- /***/ }),
- /* 124 */
- /***/ (function(module, exports) {
-
- module.exports = after
-
- function after(count, callback, err_cb) {
- var bail = false
- err_cb = err_cb || noop
- proxy.count = count
-
- return (count === 0) ? callback() : proxy
-
- function proxy(err, result) {
- if (proxy.count <= 0) {
- throw new Error('after called too many times')
- }
- --proxy.count
-
- // after first error, rest are passed to err_cb
- if (err) {
- bail = true
- callback(err)
- // future error callbacks will go to error handler
- callback = err_cb
- } else if (proxy.count === 0 && !bail) {
- callback(null, result)
- }
- }
- }
-
- function noop() {}
-
-
- /***/ }),
- /* 125 */
- /***/ (function(module, exports) {
-
- /*! https://mths.be/utf8js v2.1.2 by @mathias */
-
- var stringFromCharCode = String.fromCharCode;
-
- // Taken from https://mths.be/punycode
- function ucs2decode(string) {
- var output = [];
- var counter = 0;
- var length = string.length;
- var value;
- var extra;
- while (counter < length) {
- value = string.charCodeAt(counter++);
- if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
- // high surrogate, and there is a next character
- extra = string.charCodeAt(counter++);
- if ((extra & 0xFC00) == 0xDC00) { // low surrogate
- output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
- } else {
- // unmatched surrogate; only append this code unit, in case the next
- // code unit is the high surrogate of a surrogate pair
- output.push(value);
- counter--;
- }
- } else {
- output.push(value);
- }
- }
- return output;
- }
-
- // Taken from https://mths.be/punycode
- function ucs2encode(array) {
- var length = array.length;
- var index = -1;
- var value;
- var output = '';
- while (++index < length) {
- value = array[index];
- if (value > 0xFFFF) {
- value -= 0x10000;
- output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);
- value = 0xDC00 | value & 0x3FF;
- }
- output += stringFromCharCode(value);
- }
- return output;
- }
-
- function checkScalarValue(codePoint, strict) {
- if (codePoint >= 0xD800 && codePoint <= 0xDFFF) {
- if (strict) {
- throw Error(
- 'Lone surrogate U+' + codePoint.toString(16).toUpperCase() +
- ' is not a scalar value'
- );
- }
- return false;
- }
- return true;
- }
- /*--------------------------------------------------------------------------*/
-
- function createByte(codePoint, shift) {
- return stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80);
- }
-
- function encodeCodePoint(codePoint, strict) {
- if ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence
- return stringFromCharCode(codePoint);
- }
- var symbol = '';
- if ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence
- symbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0);
- }
- else if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence
- if (!checkScalarValue(codePoint, strict)) {
- codePoint = 0xFFFD;
- }
- symbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0);
- symbol += createByte(codePoint, 6);
- }
- else if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence
- symbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0);
- symbol += createByte(codePoint, 12);
- symbol += createByte(codePoint, 6);
- }
- symbol += stringFromCharCode((codePoint & 0x3F) | 0x80);
- return symbol;
- }
-
- function utf8encode(string, opts) {
- opts = opts || {};
- var strict = false !== opts.strict;
-
- var codePoints = ucs2decode(string);
- var length = codePoints.length;
- var index = -1;
- var codePoint;
- var byteString = '';
- while (++index < length) {
- codePoint = codePoints[index];
- byteString += encodeCodePoint(codePoint, strict);
- }
- return byteString;
- }
-
- /*--------------------------------------------------------------------------*/
-
- function readContinuationByte() {
- if (byteIndex >= byteCount) {
- throw Error('Invalid byte index');
- }
-
- var continuationByte = byteArray[byteIndex] & 0xFF;
- byteIndex++;
-
- if ((continuationByte & 0xC0) == 0x80) {
- return continuationByte & 0x3F;
- }
-
- // If we end up here, it’s not a continuation byte
- throw Error('Invalid continuation byte');
- }
-
- function decodeSymbol(strict) {
- var byte1;
- var byte2;
- var byte3;
- var byte4;
- var codePoint;
-
- if (byteIndex > byteCount) {
- throw Error('Invalid byte index');
- }
-
- if (byteIndex == byteCount) {
- return false;
- }
-
- // Read first byte
- byte1 = byteArray[byteIndex] & 0xFF;
- byteIndex++;
-
- // 1-byte sequence (no continuation bytes)
- if ((byte1 & 0x80) == 0) {
- return byte1;
- }
-
- // 2-byte sequence
- if ((byte1 & 0xE0) == 0xC0) {
- byte2 = readContinuationByte();
- codePoint = ((byte1 & 0x1F) << 6) | byte2;
- if (codePoint >= 0x80) {
- return codePoint;
- } else {
- throw Error('Invalid continuation byte');
- }
- }
-
- // 3-byte sequence (may include unpaired surrogates)
- if ((byte1 & 0xF0) == 0xE0) {
- byte2 = readContinuationByte();
- byte3 = readContinuationByte();
- codePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3;
- if (codePoint >= 0x0800) {
- return checkScalarValue(codePoint, strict) ? codePoint : 0xFFFD;
- } else {
- throw Error('Invalid continuation byte');
- }
- }
-
- // 4-byte sequence
- if ((byte1 & 0xF8) == 0xF0) {
- byte2 = readContinuationByte();
- byte3 = readContinuationByte();
- byte4 = readContinuationByte();
- codePoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0C) |
- (byte3 << 0x06) | byte4;
- if (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {
- return codePoint;
- }
- }
-
- throw Error('Invalid UTF-8 detected');
- }
-
- var byteArray;
- var byteCount;
- var byteIndex;
- function utf8decode(byteString, opts) {
- opts = opts || {};
- var strict = false !== opts.strict;
-
- byteArray = ucs2decode(byteString);
- byteCount = byteArray.length;
- byteIndex = 0;
- var codePoints = [];
- var tmp;
- while ((tmp = decodeSymbol(strict)) !== false) {
- codePoints.push(tmp);
- }
- return ucs2encode(codePoints);
- }
-
- module.exports = {
- version: '2.1.2',
- encode: utf8encode,
- decode: utf8decode
- };
-
-
- /***/ }),
- /* 126 */
- /***/ (function(module, exports) {
-
- /*
- * base64-arraybuffer
- * https://github.com/niklasvh/base64-arraybuffer
- *
- * Copyright (c) 2012 Niklas von Hertzen
- * Licensed under the MIT license.
- */
- (function(){
- "use strict";
-
- var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-
- // Use a lookup table to find the index.
- var lookup = new Uint8Array(256);
- for (var i = 0; i < chars.length; i++) {
- lookup[chars.charCodeAt(i)] = i;
- }
-
- exports.encode = function(arraybuffer) {
- var bytes = new Uint8Array(arraybuffer),
- i, len = bytes.length, base64 = "";
-
- for (i = 0; i < len; i+=3) {
- base64 += chars[bytes[i] >> 2];
- base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];
- base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];
- base64 += chars[bytes[i + 2] & 63];
- }
-
- if ((len % 3) === 2) {
- base64 = base64.substring(0, base64.length - 1) + "=";
- } else if (len % 3 === 1) {
- base64 = base64.substring(0, base64.length - 2) + "==";
- }
-
- return base64;
- };
-
- exports.decode = function(base64) {
- var bufferLength = base64.length * 0.75,
- len = base64.length, i, p = 0,
- encoded1, encoded2, encoded3, encoded4;
-
- if (base64[base64.length - 1] === "=") {
- bufferLength--;
- if (base64[base64.length - 2] === "=") {
- bufferLength--;
- }
- }
-
- var arraybuffer = new ArrayBuffer(bufferLength),
- bytes = new Uint8Array(arraybuffer);
-
- for (i = 0; i < len; i+=4) {
- encoded1 = lookup[base64.charCodeAt(i)];
- encoded2 = lookup[base64.charCodeAt(i+1)];
- encoded3 = lookup[base64.charCodeAt(i+2)];
- encoded4 = lookup[base64.charCodeAt(i+3)];
-
- bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);
- bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);
- bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);
- }
-
- return arraybuffer;
- };
- })();
-
-
- /***/ }),
- /* 127 */
- /***/ (function(module, exports) {
-
- /**
- * Create a blob builder even when vendor prefixes exist
- */
-
- var BlobBuilder = typeof BlobBuilder !== 'undefined' ? BlobBuilder :
- typeof WebKitBlobBuilder !== 'undefined' ? WebKitBlobBuilder :
- typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder :
- typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder :
- false;
-
- /**
- * Check if Blob constructor is supported
- */
-
- var blobSupported = (function() {
- try {
- var a = new Blob(['hi']);
- return a.size === 2;
- } catch(e) {
- return false;
- }
- })();
-
- /**
- * Check if Blob constructor supports ArrayBufferViews
- * Fails in Safari 6, so we need to map to ArrayBuffers there.
- */
-
- var blobSupportsArrayBufferView = blobSupported && (function() {
- try {
- var b = new Blob([new Uint8Array([1,2])]);
- return b.size === 2;
- } catch(e) {
- return false;
- }
- })();
-
- /**
- * Check if BlobBuilder is supported
- */
-
- var blobBuilderSupported = BlobBuilder
- && BlobBuilder.prototype.append
- && BlobBuilder.prototype.getBlob;
-
- /**
- * Helper function that maps ArrayBufferViews to ArrayBuffers
- * Used by BlobBuilder constructor and old browsers that didn't
- * support it in the Blob constructor.
- */
-
- function mapArrayBufferViews(ary) {
- return ary.map(function(chunk) {
- if (chunk.buffer instanceof ArrayBuffer) {
- var buf = chunk.buffer;
-
- // if this is a subarray, make a copy so we only
- // include the subarray region from the underlying buffer
- if (chunk.byteLength !== buf.byteLength) {
- var copy = new Uint8Array(chunk.byteLength);
- copy.set(new Uint8Array(buf, chunk.byteOffset, chunk.byteLength));
- buf = copy.buffer;
- }
-
- return buf;
- }
-
- return chunk;
- });
- }
-
- function BlobBuilderConstructor(ary, options) {
- options = options || {};
-
- var bb = new BlobBuilder();
- mapArrayBufferViews(ary).forEach(function(part) {
- bb.append(part);
- });
-
- return (options.type) ? bb.getBlob(options.type) : bb.getBlob();
- };
-
- function BlobConstructor(ary, options) {
- return new Blob(mapArrayBufferViews(ary), options || {});
- };
-
- if (typeof Blob !== 'undefined') {
- BlobBuilderConstructor.prototype = Blob.prototype;
- BlobConstructor.prototype = Blob.prototype;
- }
-
- module.exports = (function() {
- if (blobSupported) {
- return blobSupportsArrayBufferView ? Blob : BlobConstructor;
- } else if (blobBuilderSupported) {
- return BlobBuilderConstructor;
- } else {
- return undefined;
- }
- })();
-
-
- /***/ }),
- /* 128 */
- /***/ (function(module, exports, __webpack_require__) {
-
-
- /**
- * This is the common logic for both the Node.js and web browser
- * implementations of `debug()`.
- *
- * Expose `debug()` as the module.
- */
-
- exports = module.exports = createDebug.debug = createDebug['default'] = createDebug;
- exports.coerce = coerce;
- exports.disable = disable;
- exports.enable = enable;
- exports.enabled = enabled;
- exports.humanize = __webpack_require__(47);
-
- /**
- * Active `debug` instances.
- */
- exports.instances = [];
-
- /**
- * The currently active debug mode names, and names to skip.
- */
-
- exports.names = [];
- exports.skips = [];
-
- /**
- * Map of special "%n" handling functions, for the debug "format" argument.
- *
- * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N".
- */
-
- exports.formatters = {};
-
- /**
- * Select a color.
- * @param {String} namespace
- * @return {Number}
- * @api private
- */
-
- function selectColor(namespace) {
- var hash = 0, i;
-
- for (i in namespace) {
- hash = ((hash << 5) - hash) + namespace.charCodeAt(i);
- hash |= 0; // Convert to 32bit integer
- }
-
- return exports.colors[Math.abs(hash) % exports.colors.length];
- }
-
- /**
- * Create a debugger with the given `namespace`.
- *
- * @param {String} namespace
- * @return {Function}
- * @api public
- */
-
- function createDebug(namespace) {
-
- var prevTime;
-
- function debug() {
- // disabled?
- if (!debug.enabled) return;
-
- var self = debug;
-
- // set `diff` timestamp
- var curr = +new Date();
- var ms = curr - (prevTime || curr);
- self.diff = ms;
- self.prev = prevTime;
- self.curr = curr;
- prevTime = curr;
-
- // turn the `arguments` into a proper Array
- var args = new Array(arguments.length);
- for (var i = 0; i < args.length; i++) {
- args[i] = arguments[i];
- }
-
- args[0] = exports.coerce(args[0]);
-
- if ('string' !== typeof args[0]) {
- // anything else let's inspect with %O
- args.unshift('%O');
- }
-
- // apply any `formatters` transformations
- var index = 0;
- args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {
- // if we encounter an escaped % then don't increase the array index
- if (match === '%%') return match;
- index++;
- var formatter = exports.formatters[format];
- if ('function' === typeof formatter) {
- var val = args[index];
- match = formatter.call(self, val);
-
- // now we need to remove `args[index]` since it's inlined in the `format`
- args.splice(index, 1);
- index--;
- }
- return match;
- });
-
- // apply env-specific formatting (colors, etc.)
- exports.formatArgs.call(self, args);
-
- var logFn = debug.log || exports.log || console.log.bind(console);
- logFn.apply(self, args);
- }
-
- debug.namespace = namespace;
- debug.enabled = exports.enabled(namespace);
- debug.useColors = exports.useColors();
- debug.color = selectColor(namespace);
- debug.destroy = destroy;
-
- // env-specific initialization logic for debug instances
- if ('function' === typeof exports.init) {
- exports.init(debug);
- }
-
- exports.instances.push(debug);
-
- return debug;
- }
-
- function destroy () {
- var index = exports.instances.indexOf(this);
- if (index !== -1) {
- exports.instances.splice(index, 1);
- return true;
- } else {
- return false;
- }
- }
-
- /**
- * Enables a debug mode by namespaces. This can include modes
- * separated by a colon and wildcards.
- *
- * @param {String} namespaces
- * @api public
- */
-
- function enable(namespaces) {
- exports.save(namespaces);
-
- exports.names = [];
- exports.skips = [];
-
- var i;
- var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/);
- var len = split.length;
-
- for (i = 0; i < len; i++) {
- if (!split[i]) continue; // ignore empty strings
- namespaces = split[i].replace(/\*/g, '.*?');
- if (namespaces[0] === '-') {
- exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));
- } else {
- exports.names.push(new RegExp('^' + namespaces + '$'));
- }
- }
-
- for (i = 0; i < exports.instances.length; i++) {
- var instance = exports.instances[i];
- instance.enabled = exports.enabled(instance.namespace);
- }
- }
-
- /**
- * Disable debug output.
- *
- * @api public
- */
-
- function disable() {
- exports.enable('');
- }
-
- /**
- * Returns true if the given mode name is enabled, false otherwise.
- *
- * @param {String} name
- * @return {Boolean}
- * @api public
- */
-
- function enabled(name) {
- if (name[name.length - 1] === '*') {
- return true;
- }
- var i, len;
- for (i = 0, len = exports.skips.length; i < len; i++) {
- if (exports.skips[i].test(name)) {
- return false;
- }
- }
- for (i = 0, len = exports.names.length; i < len; i++) {
- if (exports.names[i].test(name)) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Coerce `val`.
- *
- * @param {Mixed} val
- * @return {Mixed}
- * @api private
- */
-
- function coerce(val) {
- if (val instanceof Error) return val.stack || val.message;
- return val;
- }
-
-
- /***/ }),
- /* 129 */
- /***/ (function(module, exports, __webpack_require__) {
-
- /* WEBPACK VAR INJECTION */(function(global) {/**
- * Module requirements.
- */
-
- var Polling = __webpack_require__(66);
- var inherit = __webpack_require__(35);
-
- /**
- * Module exports.
- */
-
- module.exports = JSONPPolling;
-
- /**
- * Cached regular expressions.
- */
-
- var rNewline = /\n/g;
- var rEscapedNewline = /\\n/g;
-
- /**
- * Global JSONP callbacks.
- */
-
- var callbacks;
-
- /**
- * Noop.
- */
-
- function empty () { }
-
- /**
- * Until https://github.com/tc39/proposal-global is shipped.
- */
- function glob () {
- return typeof self !== 'undefined' ? self
- : typeof window !== 'undefined' ? window
- : typeof global !== 'undefined' ? global : {};
- }
-
- /**
- * JSONP Polling constructor.
- *
- * @param {Object} opts.
- * @api public
- */
-
- function JSONPPolling (opts) {
- Polling.call(this, opts);
-
- this.query = this.query || {};
-
- // define global callbacks array if not present
- // we do this here (lazily) to avoid unneeded global pollution
- if (!callbacks) {
- // we need to consider multiple engines in the same page
- var global = glob();
- callbacks = global.___eio = (global.___eio || []);
- }
-
- // callback identifier
- this.index = callbacks.length;
-
- // add callback to jsonp global
- var self = this;
- callbacks.push(function (msg) {
- self.onData(msg);
- });
-
- // append to query string
- this.query.j = this.index;
-
- // prevent spurious errors from being emitted when the window is unloaded
- if (typeof addEventListener === 'function') {
- addEventListener('beforeunload', function () {
- if (self.script) self.script.onerror = empty;
- }, false);
- }
- }
-
- /**
- * Inherits from Polling.
- */
-
- inherit(JSONPPolling, Polling);
-
- /*
- * JSONP only supports binary as base64 encoded strings
- */
-
- JSONPPolling.prototype.supportsBinary = false;
-
- /**
- * Closes the socket.
- *
- * @api private
- */
-
- JSONPPolling.prototype.doClose = function () {
- if (this.script) {
- this.script.parentNode.removeChild(this.script);
- this.script = null;
- }
-
- if (this.form) {
- this.form.parentNode.removeChild(this.form);
- this.form = null;
- this.iframe = null;
- }
-
- Polling.prototype.doClose.call(this);
- };
-
- /**
- * Starts a poll cycle.
- *
- * @api private
- */
-
- JSONPPolling.prototype.doPoll = function () {
- var self = this;
- var script = document.createElement('script');
-
- if (this.script) {
- this.script.parentNode.removeChild(this.script);
- this.script = null;
- }
-
- script.async = true;
- script.src = this.uri();
- script.onerror = function (e) {
- self.onError('jsonp poll error', e);
- };
-
- var insertAt = document.getElementsByTagName('script')[0];
- if (insertAt) {
- insertAt.parentNode.insertBefore(script, insertAt);
- } else {
- (document.head || document.body).appendChild(script);
- }
- this.script = script;
-
- var isUAgecko = 'undefined' !== typeof navigator && /gecko/i.test(navigator.userAgent);
-
- if (isUAgecko) {
- setTimeout(function () {
- var iframe = document.createElement('iframe');
- document.body.appendChild(iframe);
- document.body.removeChild(iframe);
- }, 100);
- }
- };
-
- /**
- * Writes with a hidden iframe.
- *
- * @param {String} data to send
- * @param {Function} called upon flush.
- * @api private
- */
-
- JSONPPolling.prototype.doWrite = function (data, fn) {
- var self = this;
-
- if (!this.form) {
- var form = document.createElement('form');
- var area = document.createElement('textarea');
- var id = this.iframeId = 'eio_iframe_' + this.index;
- var iframe;
-
- form.className = 'socketio';
- form.style.position = 'absolute';
- form.style.top = '-1000px';
- form.style.left = '-1000px';
- form.target = id;
- form.method = 'POST';
- form.setAttribute('accept-charset', 'utf-8');
- area.name = 'd';
- form.appendChild(area);
- document.body.appendChild(form);
-
- this.form = form;
- this.area = area;
- }
-
- this.form.action = this.uri();
-
- function complete () {
- initIframe();
- fn();
- }
-
- function initIframe () {
- if (self.iframe) {
- try {
- self.form.removeChild(self.iframe);
- } catch (e) {
- self.onError('jsonp polling iframe removal error', e);
- }
- }
-
- try {
- // ie6 dynamic iframes with target="" support (thanks Chris Lambacher)
- var html = '<iframe src="javascript:0" name="' + self.iframeId + '">';
- iframe = document.createElement(html);
- } catch (e) {
- iframe = document.createElement('iframe');
- iframe.name = self.iframeId;
- iframe.src = 'javascript:0';
- }
-
- iframe.id = self.iframeId;
-
- self.form.appendChild(iframe);
- self.iframe = iframe;
- }
-
- initIframe();
-
- // escape \n to prevent it from being converted into \r\n by some UAs
- // double escaping is required for escaped new lines because unescaping of new lines can be done safely on server-side
- data = data.replace(rEscapedNewline, '\\\n');
- this.area.value = data.replace(rNewline, '\\n');
-
- try {
- this.form.submit();
- } catch (e) {}
-
- if (this.iframe.attachEvent) {
- this.iframe.onreadystatechange = function () {
- if (self.iframe.readyState === 'complete') {
- complete();
- }
- };
- } else {
- this.iframe.onload = complete;
- }
- };
-
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(24)))
-
- /***/ }),
- /* 130 */
- /***/ (function(module, exports, __webpack_require__) {
-
- /* WEBPACK VAR INJECTION */(function(Buffer) {/**
- * Module dependencies.
- */
-
- var Transport = __webpack_require__(51);
- var parser = __webpack_require__(18);
- var parseqs = __webpack_require__(34);
- var inherit = __webpack_require__(35);
- var yeast = __webpack_require__(68);
- var debug = __webpack_require__(36)('engine.io-client:websocket');
-
- var BrowserWebSocket, NodeWebSocket;
-
- if (typeof WebSocket !== 'undefined') {
- BrowserWebSocket = WebSocket;
- } else if (typeof self !== 'undefined') {
- BrowserWebSocket = self.WebSocket || self.MozWebSocket;
- } else {
- try {
- NodeWebSocket = __webpack_require__(131);
- } catch (e) { }
- }
-
- /**
- * Get either the `WebSocket` or `MozWebSocket` globals
- * in the browser or try to resolve WebSocket-compatible
- * interface exposed by `ws` for Node-like environment.
- */
-
- var WebSocketImpl = BrowserWebSocket || NodeWebSocket;
-
- /**
- * Module exports.
- */
-
- module.exports = WS;
-
- /**
- * WebSocket transport constructor.
- *
- * @api {Object} connection options
- * @api public
- */
-
- function WS (opts) {
- var forceBase64 = (opts && opts.forceBase64);
- if (forceBase64) {
- this.supportsBinary = false;
- }
- this.perMessageDeflate = opts.perMessageDeflate;
- this.usingBrowserWebSocket = BrowserWebSocket && !opts.forceNode;
- this.protocols = opts.protocols;
- if (!this.usingBrowserWebSocket) {
- WebSocketImpl = NodeWebSocket;
- }
- Transport.call(this, opts);
- }
-
- /**
- * Inherits from Transport.
- */
-
- inherit(WS, Transport);
-
- /**
- * Transport name.
- *
- * @api public
- */
-
- WS.prototype.name = 'websocket';
-
- /*
- * WebSockets support binary
- */
-
- WS.prototype.supportsBinary = true;
-
- /**
- * Opens socket.
- *
- * @api private
- */
-
- WS.prototype.doOpen = function () {
- if (!this.check()) {
- // let probe timeout
- return;
- }
-
- var uri = this.uri();
- var protocols = this.protocols;
- var opts = {
- agent: this.agent,
- perMessageDeflate: this.perMessageDeflate
- };
-
- // SSL options for Node.js client
- opts.pfx = this.pfx;
- opts.key = this.key;
- opts.passphrase = this.passphrase;
- opts.cert = this.cert;
- opts.ca = this.ca;
- opts.ciphers = this.ciphers;
- opts.rejectUnauthorized = this.rejectUnauthorized;
- if (this.extraHeaders) {
- opts.headers = this.extraHeaders;
- }
- if (this.localAddress) {
- opts.localAddress = this.localAddress;
- }
-
- try {
- this.ws =
- this.usingBrowserWebSocket && !this.isReactNative
- ? protocols
- ? new WebSocketImpl(uri, protocols)
- : new WebSocketImpl(uri)
- : new WebSocketImpl(uri, protocols, opts);
- } catch (err) {
- return this.emit('error', err);
- }
-
- if (this.ws.binaryType === undefined) {
- this.supportsBinary = false;
- }
-
- if (this.ws.supports && this.ws.supports.binary) {
- this.supportsBinary = true;
- this.ws.binaryType = 'nodebuffer';
- } else {
- this.ws.binaryType = 'arraybuffer';
- }
-
- this.addEventListeners();
- };
-
- /**
- * Adds event listeners to the socket
- *
- * @api private
- */
-
- WS.prototype.addEventListeners = function () {
- var self = this;
-
- this.ws.onopen = function () {
- self.onOpen();
- };
- this.ws.onclose = function () {
- self.onClose();
- };
- this.ws.onmessage = function (ev) {
- self.onData(ev.data);
- };
- this.ws.onerror = function (e) {
- self.onError('websocket error', e);
- };
- };
-
- /**
- * Writes data to socket.
- *
- * @param {Array} array of packets.
- * @api private
- */
-
- WS.prototype.write = function (packets) {
- var self = this;
- this.writable = false;
-
- // encodePacket efficient as it uses WS framing
- // no need for encodePayload
- var total = packets.length;
- for (var i = 0, l = total; i < l; i++) {
- (function (packet) {
- parser.encodePacket(packet, self.supportsBinary, function (data) {
- if (!self.usingBrowserWebSocket) {
- // always create a new object (GH-437)
- var opts = {};
- if (packet.options) {
- opts.compress = packet.options.compress;
- }
-
- if (self.perMessageDeflate) {
- var len = 'string' === typeof data ? Buffer.byteLength(data) : data.length;
- if (len < self.perMessageDeflate.threshold) {
- opts.compress = false;
- }
- }
- }
-
- // Sometimes the websocket has already been closed but the browser didn't
- // have a chance of informing us about it yet, in that case send will
- // throw an error
- try {
- if (self.usingBrowserWebSocket) {
- // TypeError is thrown when passing the second argument on Safari
- self.ws.send(data);
- } else {
- self.ws.send(data, opts);
- }
- } catch (e) {
- debug('websocket closed before onclose event');
- }
-
- --total || done();
- });
- })(packets[i]);
- }
-
- function done () {
- self.emit('flush');
-
- // fake drain
- // defer to next tick to allow Socket to clear writeBuffer
- setTimeout(function () {
- self.writable = true;
- self.emit('drain');
- }, 0);
- }
- };
-
- /**
- * Called upon close
- *
- * @api private
- */
-
- WS.prototype.onClose = function () {
- Transport.prototype.onClose.call(this);
- };
-
- /**
- * Closes socket.
- *
- * @api private
- */
-
- WS.prototype.doClose = function () {
- if (typeof this.ws !== 'undefined') {
- this.ws.close();
- }
- };
-
- /**
- * Generates uri for connection.
- *
- * @api private
- */
-
- WS.prototype.uri = function () {
- var query = this.query || {};
- var schema = this.secure ? 'wss' : 'ws';
- var port = '';
-
- // avoid port if default for schema
- if (this.port && (('wss' === schema && Number(this.port) !== 443) ||
- ('ws' === schema && Number(this.port) !== 80))) {
- port = ':' + this.port;
- }
-
- // append timestamp to URI
- if (this.timestampRequests) {
- query[this.timestampParam] = yeast();
- }
-
- // communicate binary support capabilities
- if (!this.supportsBinary) {
- query.b64 = 1;
- }
-
- query = parseqs.encode(query);
-
- // prepend ? to query
- if (query.length) {
- query = '?' + query;
- }
-
- var ipv6 = this.hostname.indexOf(':') !== -1;
- return schema + '://' + (ipv6 ? '[' + this.hostname + ']' : this.hostname) + port + this.path + query;
- };
-
- /**
- * Feature detection for WebSocket.
- *
- * @return {Boolean} whether this transport is available.
- * @api public
- */
-
- WS.prototype.check = function () {
- return !!WebSocketImpl && !('__initialize' in WebSocketImpl && this.name === WS.prototype.name);
- };
-
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(49).Buffer))
-
- /***/ }),
- /* 131 */
- /***/ (function(module, exports) {
-
- /* (ignored) */
-
- /***/ }),
- /* 132 */
- /***/ (function(module, exports) {
-
- module.exports = toArray
-
- function toArray(list, index) {
- var array = []
-
- index = index || 0
-
- for (var i = index || 0; i < list.length; i++) {
- array[i - index] = list[i]
- }
-
- return array
- }
-
-
- /***/ }),
- /* 133 */
- /***/ (function(module, exports) {
-
-
- /**
- * Expose `Backoff`.
- */
-
- module.exports = Backoff;
-
- /**
- * Initialize backoff timer with `opts`.
- *
- * - `min` initial timeout in milliseconds [100]
- * - `max` max timeout [10000]
- * - `jitter` [0]
- * - `factor` [2]
- *
- * @param {Object} opts
- * @api public
- */
-
- function Backoff(opts) {
- opts = opts || {};
- this.ms = opts.min || 100;
- this.max = opts.max || 10000;
- this.factor = opts.factor || 2;
- this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;
- this.attempts = 0;
- }
-
- /**
- * Return the backoff duration.
- *
- * @return {Number}
- * @api public
- */
-
- Backoff.prototype.duration = function(){
- var ms = this.ms * Math.pow(this.factor, this.attempts++);
- if (this.jitter) {
- var rand = Math.random();
- var deviation = Math.floor(rand * this.jitter * ms);
- ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;
- }
- return Math.min(ms, this.max) | 0;
- };
-
- /**
- * Reset the number of attempts.
- *
- * @api public
- */
-
- Backoff.prototype.reset = function(){
- this.attempts = 0;
- };
-
- /**
- * Set the minimum duration
- *
- * @api public
- */
-
- Backoff.prototype.setMin = function(min){
- this.ms = min;
- };
-
- /**
- * Set the maximum duration
- *
- * @api public
- */
-
- Backoff.prototype.setMax = function(max){
- this.max = max;
- };
-
- /**
- * Set the jitter
- *
- * @api public
- */
-
- Backoff.prototype.setJitter = function(jitter){
- this.jitter = jitter;
- };
-
-
-
- /***/ }),
- /* 134 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var Subscription_1 = __webpack_require__(12);
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @ignore
- * @extends {Ignored}
- */
- var SubjectSubscription = (function (_super) {
- __extends(SubjectSubscription, _super);
- function SubjectSubscription(subject, subscriber) {
- _super.call(this);
- this.subject = subject;
- this.subscriber = subscriber;
- this.closed = false;
- }
- SubjectSubscription.prototype.unsubscribe = function () {
- if (this.closed) {
- return;
- }
- this.closed = true;
- var subject = this.subject;
- var observers = subject.observers;
- this.subject = null;
- if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {
- return;
- }
- var subscriberIndex = observers.indexOf(this.subscriber);
- if (subscriberIndex !== -1) {
- observers.splice(subscriberIndex, 1);
- }
- };
- return SubjectSubscription;
- }(Subscription_1.Subscription));
- exports.SubjectSubscription = SubjectSubscription;
- //# sourceMappingURL=SubjectSubscription.js.map
-
- /***/ }),
- /* 135 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var ConnectableObservable_1 = __webpack_require__(136);
- /* tslint:enable:max-line-length */
- /**
- * Returns an Observable that emits the results of invoking a specified selector on items
- * emitted by a ConnectableObservable that shares a single subscription to the underlying stream.
- *
- * <img src="./img/multicast.png" width="100%">
- *
- * @param {Function|Subject} subjectOrSubjectFactory - Factory function to create an intermediate subject through
- * which the source sequence's elements will be multicast to the selector function
- * or Subject to push source elements into.
- * @param {Function} [selector] - Optional selector function that can use the multicasted source stream
- * as many times as needed, without causing multiple subscriptions to the source stream.
- * Subscribers to the given source will receive all notifications of the source from the
- * time of the subscription forward.
- * @return {Observable} An Observable that emits the results of invoking the selector
- * on the items emitted by a `ConnectableObservable` that shares a single subscription to
- * the underlying stream.
- * @method multicast
- * @owner Observable
- */
- function multicast(subjectOrSubjectFactory, selector) {
- return function multicastOperatorFunction(source) {
- var subjectFactory;
- if (typeof subjectOrSubjectFactory === 'function') {
- subjectFactory = subjectOrSubjectFactory;
- }
- else {
- subjectFactory = function subjectFactory() {
- return subjectOrSubjectFactory;
- };
- }
- if (typeof selector === 'function') {
- return source.lift(new MulticastOperator(subjectFactory, selector));
- }
- var connectable = Object.create(source, ConnectableObservable_1.connectableObservableDescriptor);
- connectable.source = source;
- connectable.subjectFactory = subjectFactory;
- return connectable;
- };
- }
- exports.multicast = multicast;
- var MulticastOperator = (function () {
- function MulticastOperator(subjectFactory, selector) {
- this.subjectFactory = subjectFactory;
- this.selector = selector;
- }
- MulticastOperator.prototype.call = function (subscriber, source) {
- var selector = this.selector;
- var subject = this.subjectFactory();
- var subscription = selector(subject).subscribe(subscriber);
- subscription.add(source.subscribe(subject));
- return subscription;
- };
- return MulticastOperator;
- }());
- exports.MulticastOperator = MulticastOperator;
- //# sourceMappingURL=multicast.js.map
-
- /***/ }),
- /* 136 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var Subject_1 = __webpack_require__(37);
- var Observable_1 = __webpack_require__(1);
- var Subscriber_1 = __webpack_require__(3);
- var Subscription_1 = __webpack_require__(12);
- var refCount_1 = __webpack_require__(75);
- /**
- * @class ConnectableObservable<T>
- */
- var ConnectableObservable = (function (_super) {
- __extends(ConnectableObservable, _super);
- function ConnectableObservable(/** @deprecated internal use only */ source,
- /** @deprecated internal use only */ subjectFactory) {
- _super.call(this);
- this.source = source;
- this.subjectFactory = subjectFactory;
- /** @deprecated internal use only */ this._refCount = 0;
- this._isComplete = false;
- }
- /** @deprecated internal use only */ ConnectableObservable.prototype._subscribe = function (subscriber) {
- return this.getSubject().subscribe(subscriber);
- };
- /** @deprecated internal use only */ ConnectableObservable.prototype.getSubject = function () {
- var subject = this._subject;
- if (!subject || subject.isStopped) {
- this._subject = this.subjectFactory();
- }
- return this._subject;
- };
- ConnectableObservable.prototype.connect = function () {
- var connection = this._connection;
- if (!connection) {
- this._isComplete = false;
- connection = this._connection = new Subscription_1.Subscription();
- connection.add(this.source
- .subscribe(new ConnectableSubscriber(this.getSubject(), this)));
- if (connection.closed) {
- this._connection = null;
- connection = Subscription_1.Subscription.EMPTY;
- }
- else {
- this._connection = connection;
- }
- }
- return connection;
- };
- ConnectableObservable.prototype.refCount = function () {
- return refCount_1.refCount()(this);
- };
- return ConnectableObservable;
- }(Observable_1.Observable));
- exports.ConnectableObservable = ConnectableObservable;
- var connectableProto = ConnectableObservable.prototype;
- exports.connectableObservableDescriptor = {
- operator: { value: null },
- _refCount: { value: 0, writable: true },
- _subject: { value: null, writable: true },
- _connection: { value: null, writable: true },
- _subscribe: { value: connectableProto._subscribe },
- _isComplete: { value: connectableProto._isComplete, writable: true },
- getSubject: { value: connectableProto.getSubject },
- connect: { value: connectableProto.connect },
- refCount: { value: connectableProto.refCount }
- };
- var ConnectableSubscriber = (function (_super) {
- __extends(ConnectableSubscriber, _super);
- function ConnectableSubscriber(destination, connectable) {
- _super.call(this, destination);
- this.connectable = connectable;
- }
- ConnectableSubscriber.prototype._error = function (err) {
- this._unsubscribe();
- _super.prototype._error.call(this, err);
- };
- ConnectableSubscriber.prototype._complete = function () {
- this.connectable._isComplete = true;
- this._unsubscribe();
- _super.prototype._complete.call(this);
- };
- /** @deprecated internal use only */ ConnectableSubscriber.prototype._unsubscribe = function () {
- var connectable = this.connectable;
- if (connectable) {
- this.connectable = null;
- var connection = connectable._connection;
- connectable._refCount = 0;
- connectable._subject = null;
- connectable._connection = null;
- if (connection) {
- connection.unsubscribe();
- }
- }
- };
- return ConnectableSubscriber;
- }(Subject_1.SubjectSubscriber));
- var RefCountOperator = (function () {
- function RefCountOperator(connectable) {
- this.connectable = connectable;
- }
- RefCountOperator.prototype.call = function (subscriber, source) {
- var connectable = this.connectable;
- connectable._refCount++;
- var refCounter = new RefCountSubscriber(subscriber, connectable);
- var subscription = source.subscribe(refCounter);
- if (!refCounter.closed) {
- refCounter.connection = connectable.connect();
- }
- return subscription;
- };
- return RefCountOperator;
- }());
- var RefCountSubscriber = (function (_super) {
- __extends(RefCountSubscriber, _super);
- function RefCountSubscriber(destination, connectable) {
- _super.call(this, destination);
- this.connectable = connectable;
- }
- /** @deprecated internal use only */ RefCountSubscriber.prototype._unsubscribe = function () {
- var connectable = this.connectable;
- if (!connectable) {
- this.connection = null;
- return;
- }
- this.connectable = null;
- var refCount = connectable._refCount;
- if (refCount <= 0) {
- this.connection = null;
- return;
- }
- connectable._refCount = refCount - 1;
- if (refCount > 1) {
- this.connection = null;
- return;
- }
- ///
- // Compare the local RefCountSubscriber's connection Subscription to the
- // connection Subscription on the shared ConnectableObservable. In cases
- // where the ConnectableObservable source synchronously emits values, and
- // the RefCountSubscriber's downstream Observers synchronously unsubscribe,
- // execution continues to here before the RefCountOperator has a chance to
- // supply the RefCountSubscriber with the shared connection Subscription.
- // For example:
- // ```
- // Observable.range(0, 10)
- // .publish()
- // .refCount()
- // .take(5)
- // .subscribe();
- // ```
- // In order to account for this case, RefCountSubscriber should only dispose
- // the ConnectableObservable's shared connection Subscription if the
- // connection Subscription exists, *and* either:
- // a. RefCountSubscriber doesn't have a reference to the shared connection
- // Subscription yet, or,
- // b. RefCountSubscriber's connection Subscription reference is identical
- // to the shared connection Subscription
- ///
- var connection = this.connection;
- var sharedConnection = connectable._connection;
- this.connection = null;
- if (sharedConnection && (!connection || sharedConnection === connection)) {
- sharedConnection.unsubscribe();
- }
- };
- return RefCountSubscriber;
- }(Subscriber_1.Subscriber));
- //# sourceMappingURL=ConnectableObservable.js.map
-
- /***/ }),
- /* 137 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var BehaviorSubject_1 = __webpack_require__(13);
- var styles = {
- display: "none",
- padding: "15px",
- fontFamily: "sans-serif",
- position: "fixed",
- fontSize: "0.9em",
- zIndex: 9999,
- right: 0,
- top: 0,
- borderBottomLeftRadius: "5px",
- backgroundColor: "#1B2032",
- margin: 0,
- color: "white",
- textAlign: "center",
- pointerEvents: "none"
- };
- /**
- * @param {IBrowserSyncOptions} options
- * @returns {BehaviorSubject<any>}
- */
- function initNotify(options) {
- var cssStyles = styles;
- var elem;
- if (options.notify.styles) {
- if (Object.prototype.toString.call(options.notify.styles) ===
- "[object Array]") {
- // handle original array behavior, replace all styles with a joined copy
- cssStyles = options.notify.styles.join(";");
- }
- else {
- for (var key in options.notify.styles) {
- if (options.notify.styles.hasOwnProperty(key)) {
- cssStyles[key] = options.notify.styles[key];
- }
- }
- }
- }
- elem = document.createElement("DIV");
- elem.id = "__bs_notify__";
- if (typeof cssStyles === "string") {
- elem.style.cssText = cssStyles;
- }
- else {
- for (var rule in cssStyles) {
- elem.style[rule] = cssStyles[rule];
- }
- }
- return new BehaviorSubject_1.BehaviorSubject(elem);
- }
- exports.initNotify = initNotify;
-
-
- /***/ }),
- /* 138 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var isNumeric_1 = __webpack_require__(77);
- var Observable_1 = __webpack_require__(1);
- var async_1 = __webpack_require__(78);
- var isScheduler_1 = __webpack_require__(25);
- var isDate_1 = __webpack_require__(141);
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @extends {Ignored}
- * @hide true
- */
- var TimerObservable = (function (_super) {
- __extends(TimerObservable, _super);
- function TimerObservable(dueTime, period, scheduler) {
- if (dueTime === void 0) { dueTime = 0; }
- _super.call(this);
- this.period = -1;
- this.dueTime = 0;
- if (isNumeric_1.isNumeric(period)) {
- this.period = Number(period) < 1 && 1 || Number(period);
- }
- else if (isScheduler_1.isScheduler(period)) {
- scheduler = period;
- }
- if (!isScheduler_1.isScheduler(scheduler)) {
- scheduler = async_1.async;
- }
- this.scheduler = scheduler;
- this.dueTime = isDate_1.isDate(dueTime) ?
- (+dueTime - this.scheduler.now()) :
- dueTime;
- }
- /**
- * Creates an Observable that starts emitting after an `initialDelay` and
- * emits ever increasing numbers after each `period` of time thereafter.
- *
- * <span class="informal">Its like {@link interval}, but you can specify when
- * should the emissions start.</span>
- *
- * <img src="./img/timer.png" width="100%">
- *
- * `timer` returns an Observable that emits an infinite sequence of ascending
- * integers, with a constant interval of time, `period` of your choosing
- * between those emissions. The first emission happens after the specified
- * `initialDelay`. The initial delay may be a {@link Date}. By default, this
- * operator uses the `async` IScheduler to provide a notion of time, but you
- * may pass any IScheduler to it. If `period` is not specified, the output
- * Observable emits only one value, `0`. Otherwise, it emits an infinite
- * sequence.
- *
- * @example <caption>Emits ascending numbers, one every second (1000ms), starting after 3 seconds</caption>
- * var numbers = Rx.Observable.timer(3000, 1000);
- * numbers.subscribe(x => console.log(x));
- *
- * @example <caption>Emits one number after five seconds</caption>
- * var numbers = Rx.Observable.timer(5000);
- * numbers.subscribe(x => console.log(x));
- *
- * @see {@link interval}
- * @see {@link delay}
- *
- * @param {number|Date} initialDelay The initial delay time to wait before
- * emitting the first value of `0`.
- * @param {number} [period] The period of time between emissions of the
- * subsequent numbers.
- * @param {Scheduler} [scheduler=async] The IScheduler to use for scheduling
- * the emission of values, and providing a notion of "time".
- * @return {Observable} An Observable that emits a `0` after the
- * `initialDelay` and ever increasing numbers after each `period` of time
- * thereafter.
- * @static true
- * @name timer
- * @owner Observable
- */
- TimerObservable.create = function (initialDelay, period, scheduler) {
- if (initialDelay === void 0) { initialDelay = 0; }
- return new TimerObservable(initialDelay, period, scheduler);
- };
- TimerObservable.dispatch = function (state) {
- var index = state.index, period = state.period, subscriber = state.subscriber;
- var action = this;
- subscriber.next(index);
- if (subscriber.closed) {
- return;
- }
- else if (period === -1) {
- return subscriber.complete();
- }
- state.index = index + 1;
- action.schedule(state, period);
- };
- /** @deprecated internal use only */ TimerObservable.prototype._subscribe = function (subscriber) {
- var index = 0;
- var _a = this, period = _a.period, dueTime = _a.dueTime, scheduler = _a.scheduler;
- return scheduler.schedule(TimerObservable.dispatch, dueTime, {
- index: index, period: period, subscriber: subscriber
- });
- };
- return TimerObservable;
- }(Observable_1.Observable));
- exports.TimerObservable = TimerObservable;
- //# sourceMappingURL=TimerObservable.js.map
-
- /***/ }),
- /* 139 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var Subscription_1 = __webpack_require__(12);
- /**
- * A unit of work to be executed in a {@link Scheduler}. An action is typically
- * created from within a Scheduler and an RxJS user does not need to concern
- * themselves about creating and manipulating an Action.
- *
- * ```ts
- * class Action<T> extends Subscription {
- * new (scheduler: Scheduler, work: (state?: T) => void);
- * schedule(state?: T, delay: number = 0): Subscription;
- * }
- * ```
- *
- * @class Action<T>
- */
- var Action = (function (_super) {
- __extends(Action, _super);
- function Action(scheduler, work) {
- _super.call(this);
- }
- /**
- * Schedules this action on its parent Scheduler for execution. May be passed
- * some context object, `state`. May happen at some point in the future,
- * according to the `delay` parameter, if specified.
- * @param {T} [state] Some contextual data that the `work` function uses when
- * called by the Scheduler.
- * @param {number} [delay] Time to wait before executing the work, where the
- * time unit is implicit and defined by the Scheduler.
- * @return {void}
- */
- Action.prototype.schedule = function (state, delay) {
- if (delay === void 0) { delay = 0; }
- return this;
- };
- return Action;
- }(Subscription_1.Subscription));
- exports.Action = Action;
- //# sourceMappingURL=Action.js.map
-
- /***/ }),
- /* 140 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- /**
- * An execution context and a data structure to order tasks and schedule their
- * execution. Provides a notion of (potentially virtual) time, through the
- * `now()` getter method.
- *
- * Each unit of work in a Scheduler is called an {@link Action}.
- *
- * ```ts
- * class Scheduler {
- * now(): number;
- * schedule(work, delay?, state?): Subscription;
- * }
- * ```
- *
- * @class Scheduler
- */
- var Scheduler = (function () {
- function Scheduler(SchedulerAction, now) {
- if (now === void 0) { now = Scheduler.now; }
- this.SchedulerAction = SchedulerAction;
- this.now = now;
- }
- /**
- * Schedules a function, `work`, for execution. May happen at some point in
- * the future, according to the `delay` parameter, if specified. May be passed
- * some context object, `state`, which will be passed to the `work` function.
- *
- * The given arguments will be processed an stored as an Action object in a
- * queue of actions.
- *
- * @param {function(state: ?T): ?Subscription} work A function representing a
- * task, or some unit of work to be executed by the Scheduler.
- * @param {number} [delay] Time to wait before executing the work, where the
- * time unit is implicit and defined by the Scheduler itself.
- * @param {T} [state] Some contextual data that the `work` function uses when
- * called by the Scheduler.
- * @return {Subscription} A subscription in order to be able to unsubscribe
- * the scheduled work.
- */
- Scheduler.prototype.schedule = function (work, delay, state) {
- if (delay === void 0) { delay = 0; }
- return new this.SchedulerAction(this, work).schedule(state, delay);
- };
- Scheduler.now = Date.now ? Date.now : function () { return +new Date(); };
- return Scheduler;
- }());
- exports.Scheduler = Scheduler;
- //# sourceMappingURL=Scheduler.js.map
-
- /***/ }),
- /* 141 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- function isDate(value) {
- return value instanceof Date && !isNaN(+value);
- }
- exports.isDate = isDate;
- //# sourceMappingURL=isDate.js.map
-
- /***/ }),
- /* 142 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __assign = (this && this.__assign) || function () {
- __assign = Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- var emojis = {
- trace: '🔍',
- debug: '🐛',
- info: '✨',
- warn: '⚠️',
- error: '🚨',
- fatal: '💀'
- };
- var levels = {
- trace: 10,
- debug: 20,
- info: 30,
- warn: 40,
- error: 50,
- fatal: 60
- };
- var defaultColors = {
- foreground: '#d3c0c8',
- background: '#2d2d2d',
- black: '#2d2d2d',
- red: '#f2777a',
- green: '#99cc99',
- yellow: '#ffcc66',
- blue: '#6699cc',
- magenta: '#cc99cc',
- cyan: '#66cccc',
- white: '#d3d0c8',
- brightBlack: '#747369'
- };
- var Nanologger = /** @class */ (function () {
- function Nanologger(name, opts) {
- this.name = name;
- this.opts = opts;
- this._name = name || '';
- this._colors = __assign({}, defaultColors, (opts.colors || {}));
- try {
- this.logLevel = window.localStorage.getItem('logLevel') || 'info';
- }
- catch (e) {
- this.logLevel = 'info';
- }
- this._logLevel = levels[this.logLevel];
- }
- Nanologger.prototype.trace = function () {
- var args = ['trace'];
- for (var i = 0, len = arguments.length; i < len; i++)
- args.push(arguments[i]);
- this._print.apply(this, args);
- };
- Nanologger.prototype.debug = function () {
- var args = ['debug'];
- for (var i = 0, len = arguments.length; i < len; i++)
- args.push(arguments[i]);
- this._print.apply(this, args);
- };
- Nanologger.prototype.info = function () {
- var args = ['info'];
- for (var i = 0, len = arguments.length; i < len; i++)
- args.push(arguments[i]);
- this._print.apply(this, args);
- };
- Nanologger.prototype.warn = function () {
- var args = ['warn'];
- for (var i = 0, len = arguments.length; i < len; i++)
- args.push(arguments[i]);
- this._print.apply(this, args);
- };
- Nanologger.prototype.error = function () {
- var args = ['error'];
- for (var i = 0, len = arguments.length; i < len; i++)
- args.push(arguments[i]);
- this._print.apply(this, args);
- };
- Nanologger.prototype.fatal = function () {
- var args = ['fatal'];
- for (var i = 0, len = arguments.length; i < len; i++)
- args.push(arguments[i]);
- this._print.apply(this, args);
- };
- Nanologger.prototype._print = function (level) {
- if (levels[level] < this._logLevel)
- return;
- // var time = getTimeStamp()
- var emoji = emojis[level];
- var name = this._name || 'unknown';
- var msgColor = (level === 'error' || level.fatal)
- ? this._colors.red
- : level === 'warn'
- ? this._colors.yellow
- : this._colors.green;
- var objs = [];
- var args = [null];
- var msg = emoji + ' %c%s';
- // args.push(color(this._colors.brightBlack), time)
- args.push(color(this._colors.magenta), name);
- for (var i = 1, len = arguments.length; i < len; i++) {
- var arg = arguments[i];
- if (typeof arg === 'string') {
- if (i === 1) {
- // first string argument is in color
- msg += ' %c%s';
- args.push(color(msgColor));
- args.push(arg);
- }
- else if (/ms$/.test(arg)) {
- // arguments finishing with 'ms', grey out
- msg += ' %c%s';
- args.push(color(this._colors.brightBlack));
- args.push(arg);
- }
- else {
- // normal colors
- msg += ' %c%s';
- args.push(color(this._colors.white));
- args.push(arg);
- }
- }
- else if (typeof arg === 'number') {
- msg += ' %c%d';
- args.push(color(this._colors.magenta));
- args.push(arg);
- }
- else {
- objs.push(arg);
- }
- }
- args[0] = msg;
- objs.forEach(function (obj) {
- args.push(obj);
- });
- // In IE/Edge console functions don't inherit from Function.prototype
- // so this is necessary to get all the args applied.
- Function.prototype.apply.apply(console.log, [console, args]);
- };
- return Nanologger;
- }());
- exports.Nanologger = Nanologger;
- function color(color) {
- return 'color: ' + color + ';';
- }
- function getTimeStamp() {
- var date = new Date();
- var hours = pad(date.getHours().toString());
- var minutes = pad(date.getMinutes().toString());
- var seconds = pad(date.getSeconds().toString());
- return hours + ':' + minutes + ':' + seconds;
- }
- function pad(str) {
- return str.length !== 2 ? 0 + str : str;
- }
-
-
- /***/ }),
- /* 143 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- /**
- *
- * With thanks to https://github.com/livereload/livereload-js
- * :) :) :)
- *
- */
- var utils_1 = __webpack_require__(21);
- var empty_1 = __webpack_require__(16);
- var Observable_1 = __webpack_require__(1);
- var merge_1 = __webpack_require__(38);
- var timer_1 = __webpack_require__(52);
- var from_1 = __webpack_require__(87);
- var filter_1 = __webpack_require__(4);
- var map_1 = __webpack_require__(2);
- var mergeMap_1 = __webpack_require__(15);
- var tap_1 = __webpack_require__(5);
- var mapTo_1 = __webpack_require__(88);
- var prop_set_dom_effect_1 = __webpack_require__(76);
- var style_set_dom_effect_1 = __webpack_require__(81);
- var link_replace_dom_effect_1 = __webpack_require__(82);
- var mergeAll_1 = __webpack_require__(55);
- var hiddenElem;
- var IMAGE_STYLES = [
- { selector: 'background', styleNames: ['backgroundImage'] },
- { selector: 'border', styleNames: ['borderImage', 'webkitBorderImage', 'MozBorderImage'] }
- ];
- var attrs = {
- link: "href",
- img: "src",
- script: "src"
- };
- function reload(document, navigator) {
- return function (data, options) {
- var path = data.path;
- if (options.liveCSS) {
- if (path.match(/\.css$/i)) {
- return reloadStylesheet(path, document, navigator);
- }
- }
- if (options.liveImg) {
- if (path.match(/\.(jpe?g|png|gif)$/i)) {
- return reloadImages(path, document);
- }
- }
- /**
- * LEGACY
- */
- var domData = getElems(data.ext, options, document);
- var elems = getMatches(domData.elems, data.basename, domData.attr);
- for (var i = 0, n = elems.length; i < n; i += 1) {
- swapFile(elems[i], domData, options, document, navigator);
- }
- return empty_1.empty();
- };
- function getMatches(elems, url, attr) {
- if (url[0] === "*") {
- return elems;
- }
- var matches = [];
- var urlMatcher = new RegExp("(^|/)" + url);
- for (var i = 0, len = elems.length; i < len; i += 1) {
- if (urlMatcher.test(elems[i][attr])) {
- matches.push(elems[i]);
- }
- }
- return matches;
- }
- function getElems(fileExtension, options, document) {
- var tagName = options.tagNames[fileExtension];
- var attr = attrs[tagName];
- return {
- attr: attr,
- tagName: tagName,
- elems: document.getElementsByTagName(tagName)
- };
- }
- function reloadImages(path, document) {
- var expando = generateUniqueString(Date.now());
- return merge_1.merge(from_1.from([].slice.call(document.images))
- .pipe(filter_1.filter(function (img) { return utils_1.pathsMatch(path, utils_1.pathFromUrl(img.src)); }), map_1.map(function (img) {
- var payload = {
- target: img,
- prop: 'src',
- value: generateCacheBustUrl(img.src, expando),
- pathname: utils_1.getLocation(img.src).pathname
- };
- return prop_set_dom_effect_1.propSet(payload);
- })), from_1.from(IMAGE_STYLES)
- .pipe(mergeMap_1.mergeMap(function (_a) {
- var selector = _a.selector, styleNames = _a.styleNames;
- return from_1.from(document.querySelectorAll("[style*=" + selector + "]")).pipe(mergeMap_1.mergeMap(function (img) {
- return reloadStyleImages(img.style, styleNames, path, expando);
- }));
- })));
- // if (document.styleSheets) {
- // return [].slice.call(document.styleSheets)
- // .map((styleSheet) => {
- // return reloadStylesheetImages(styleSheet, path, expando);
- // });
- // }
- }
- function reloadStylesheetImages(styleSheet, path, expando) {
- var rules;
- try {
- rules = styleSheet != null ? styleSheet.cssRules : undefined;
- }
- catch (e) { }
- //
- if (!rules) {
- return;
- }
- [].slice.call(rules).forEach(function (rule) {
- switch (rule.type) {
- case CSSRule.IMPORT_RULE:
- reloadStylesheetImages(rule.styleSheet, path, expando);
- break;
- case CSSRule.STYLE_RULE:
- [].slice.call(IMAGE_STYLES).forEach(function (_a) {
- var styleNames = _a.styleNames;
- reloadStyleImages(rule.style, styleNames, path, expando);
- });
- break;
- case CSSRule.MEDIA_RULE:
- reloadStylesheetImages(rule, path, expando);
- break;
- }
- });
- }
- function reloadStyleImages(style, styleNames, path, expando) {
- return from_1.from(styleNames).pipe(filter_1.filter(function (styleName) { return typeof style[styleName] === 'string'; }), map_1.map(function (styleName) {
- var pathName;
- var value = style[styleName];
- var newValue = value.replace(new RegExp("\\burl\\s*\\(([^)]*)\\)"), function (match, src) {
- var _src = src;
- if (src[0] === '"' && src[src.length - 1] === '"') {
- _src = src.slice(1, -1);
- }
- pathName = utils_1.getLocation(_src).pathname;
- if (utils_1.pathsMatch(path, utils_1.pathFromUrl(_src))) {
- return "url(" + generateCacheBustUrl(_src, expando) + ")";
- }
- else {
- return match;
- }
- });
- return [
- style,
- styleName,
- value,
- newValue,
- pathName
- ];
- }), filter_1.filter(function (_a) {
- var style = _a[0], styleName = _a[1], value = _a[2], newValue = _a[3];
- return newValue !== value;
- }), map_1.map(function (_a) {
- var style = _a[0], styleName = _a[1], value = _a[2], newValue = _a[3], pathName = _a[4];
- return style_set_dom_effect_1.styleSet({ style: style, styleName: styleName, value: value, newValue: newValue, pathName: pathName });
- }));
- }
- function swapFile(elem, domData, options, document, navigator) {
- var attr = domData.attr;
- var currentValue = elem[attr];
- var timeStamp = new Date().getTime();
- var key = "browsersync-legacy";
- var suffix = key + "=" + timeStamp;
- var anchor = utils_1.getLocation(currentValue);
- var search = utils_1.updateSearch(anchor.search, key, suffix);
- switch (domData.tagName) {
- case 'link': {
- // this.logger.trace(`replacing LINK ${attr}`);
- reloadStylesheet(currentValue, document, navigator);
- break;
- }
- case 'img': {
- reloadImages(currentValue, document);
- break;
- }
- default: {
- if (options.timestamps === false) {
- elem[attr] = anchor.href;
- }
- else {
- elem[attr] = anchor.href.split("?")[0] + search;
- }
- // this.logger.info(`reloading ${elem[attr]}`);
- setTimeout(function () {
- if (!hiddenElem) {
- hiddenElem = document.createElement("DIV");
- document.body.appendChild(hiddenElem);
- }
- else {
- hiddenElem.style.display = "none";
- hiddenElem.style.display = "block";
- }
- }, 200);
- }
- }
- return {
- elem: elem,
- timeStamp: timeStamp
- };
- }
- function reattachStylesheetLink(link, document, navigator) {
- // ignore LINKs that will be removed by LR soon
- var clone;
- if (link.__LiveReload_pendingRemoval) {
- return empty_1.empty();
- }
- link.__LiveReload_pendingRemoval = true;
- if (link.tagName === 'STYLE') {
- // prefixfree
- clone = document.createElement('link');
- clone.rel = 'stylesheet';
- clone.media = link.media;
- clone.disabled = link.disabled;
- }
- else {
- clone = link.cloneNode(false);
- }
- var prevHref = link.href;
- var nextHref = generateCacheBustUrl(linkHref(link));
- clone.href = nextHref;
- var pathname = utils_1.getLocation(nextHref).pathname;
- var basename = pathname.split('/').slice(-1)[0];
- // insert the new LINK before the old one
- var parent = link.parentNode;
- if (parent.lastChild === link) {
- parent.appendChild(clone);
- }
- else {
- parent.insertBefore(clone, link.nextSibling);
- }
- var additionalWaitingTime;
- if (/AppleWebKit/.test(navigator.userAgent)) {
- additionalWaitingTime = 5;
- }
- else {
- additionalWaitingTime = 200;
- }
- return Observable_1.Observable.create(function (obs) {
- clone.onload = function () {
- obs.next(true);
- obs.complete();
- };
- })
- .pipe(mergeMap_1.mergeMap(function () {
- return timer_1.timer(additionalWaitingTime)
- .pipe(tap_1.tap(function () {
- if (link && !link.parentNode) {
- return;
- }
- link.parentNode.removeChild(link);
- clone.onreadystatechange = null;
- }), mapTo_1.mapTo(link_replace_dom_effect_1.linkReplace({ target: clone, nextHref: nextHref, prevHref: prevHref, pathname: pathname, basename: basename })));
- }));
- }
- function reattachImportedRule(_a, document) {
- var rule = _a.rule, index = _a.index, link = _a.link;
- var parent = rule.parentStyleSheet;
- var href = generateCacheBustUrl(rule.href);
- var media = rule.media.length ? [].join.call(rule.media, ', ') : '';
- var newRule = "@import url(\"" + href + "\") " + media + ";";
- // used to detect if reattachImportedRule has been called again on the same rule
- rule.__LiveReload_newHref = href;
- // WORKAROUND FOR WEBKIT BUG: WebKit resets all styles if we add @import'ed
- // stylesheet that hasn't been cached yet. Workaround is to pre-cache the
- // stylesheet by temporarily adding it as a LINK tag.
- var tempLink = document.createElement("link");
- tempLink.rel = 'stylesheet';
- tempLink.href = href;
- tempLink.__LiveReload_pendingRemoval = true; // exclude from path matching
- if (link.parentNode) {
- link.parentNode.insertBefore(tempLink, link);
- }
- return timer_1.timer(200)
- .pipe(tap_1.tap(function () {
- if (tempLink.parentNode) {
- tempLink.parentNode.removeChild(tempLink);
- }
- // if another reattachImportedRule call is in progress, abandon this one
- if (rule.__LiveReload_newHref !== href) {
- return;
- }
- parent.insertRule(newRule, index);
- parent.deleteRule(index + 1);
- // save the new rule, so that we can detect another reattachImportedRule call
- rule = parent.cssRules[index];
- rule.__LiveReload_newHref = href;
- }), mergeMap_1.mergeMap(function () {
- return timer_1.timer(200).pipe(tap_1.tap(function () {
- // if another reattachImportedRule call is in progress, abandon this one
- if (rule.__LiveReload_newHref !== href) {
- return;
- }
- parent.insertRule(newRule, index);
- return parent.deleteRule(index + 1);
- }));
- }));
- }
- function generateCacheBustUrl(url, expando) {
- if (expando === void 0) { expando = generateUniqueString(Date.now()); }
- var _a;
- var hash, oldParams;
- (_a = utils_1.splitUrl(url), url = _a.url, hash = _a.hash, oldParams = _a.params);
- // if (this.options.overrideURL) {
- // if (url.indexOf(this.options.serverURL) < 0) {
- // const originalUrl = url;
- // url = this.options.serverURL + this.options.overrideURL + "?url=" + encodeURIComponent(url);
- // this.logger.debug(`overriding source URL ${originalUrl} with ${url}`);
- // }
- // }
- var params = oldParams.replace(/(\?|&)browsersync=(\d+)/, function (match, sep) { return "" + sep + expando; });
- if (params === oldParams) {
- if (oldParams.length === 0) {
- params = "?" + expando;
- }
- else {
- params = oldParams + "&" + expando;
- }
- }
- return url + params + hash;
- }
- function reloadStylesheet(path, document, navigator) {
- // has to be a real array, because DOMNodeList will be modified
- var links = utils_1.array(document.getElementsByTagName('link'))
- .filter(function (link) {
- return link.rel.match(/^stylesheet$/i)
- && !link.__LiveReload_pendingRemoval;
- });
- /**
- * Find imported style sheets in <style> tags
- * @type {any[]}
- */
- var styleImported = utils_1.array(document.getElementsByTagName('style'))
- .filter(function (style) { return Boolean(style.sheet); })
- .reduce(function (acc, style) {
- return acc.concat(collectImportedStylesheets(style, style.sheet));
- }, []);
- /**
- * Find imported style sheets in <link> tags
- * @type {any[]}
- */
- var linksImported = links
- .reduce(function (acc, link) {
- return acc.concat(collectImportedStylesheets(link, link.sheet));
- }, []);
- /**
- * Combine all links + sheets
- */
- var allRules = links.concat(styleImported, linksImported);
- /**
- * Which href best matches the incoming href?
- */
- var match = utils_1.pickBestMatch(path, allRules, function (l) { return utils_1.pathFromUrl(linkHref(l)); });
- if (match) {
- if (match.object && match.object.rule) {
- return reattachImportedRule(match.object, document);
- }
- return reattachStylesheetLink(match.object, document, navigator);
- }
- else {
- if (links.length) {
- // no <link> elements matched, so was the path including '*'?
- var _a = path.split('.'), first = _a[0], rest = _a.slice(1);
- if (first === '*') {
- return from_1.from(links.map(function (link) { return reattachStylesheetLink(link, document, navigator); }))
- .pipe(mergeAll_1.mergeAll());
- }
- }
- }
- return empty_1.empty();
- }
- function collectImportedStylesheets(link, styleSheet) {
- // in WebKit, styleSheet.cssRules is null for inaccessible stylesheets;
- // Firefox/Opera may throw exceptions
- var output = [];
- collect(link, makeRules(styleSheet));
- return output;
- function makeRules(styleSheet) {
- var rules;
- try {
- rules = styleSheet != null ? styleSheet.cssRules : undefined;
- }
- catch (e) { }
- return rules;
- }
- function collect(link, rules) {
- if (rules && rules.length) {
- for (var index = 0; index < rules.length; index++) {
- var rule = rules[index];
- switch (rule.type) {
- case CSSRule.CHARSET_RULE:
- break;
- case CSSRule.IMPORT_RULE:
- output.push({ link: link, rule: rule, index: index, href: rule.href });
- collect(link, makeRules(rule.styleSheet));
- break;
- default:
- break; // import rules can only be preceded by charset rules
- }
- }
- }
- }
- }
- function linkHref(link) {
- // prefixfree uses data-href when it turns LINK into STYLE
- return link.href || link.getAttribute('data-href');
- }
- function generateUniqueString(value) {
- return "browsersync=" + value;
- }
- }
- exports.reload = reload;
-
-
- /***/ }),
- /* 144 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var isArray_1 = __webpack_require__(26);
- var isArrayLike_1 = __webpack_require__(59);
- var isPromise_1 = __webpack_require__(60);
- var PromiseObservable_1 = __webpack_require__(145);
- var IteratorObservable_1 = __webpack_require__(146);
- var ArrayObservable_1 = __webpack_require__(23);
- var ArrayLikeObservable_1 = __webpack_require__(147);
- var iterator_1 = __webpack_require__(31);
- var Observable_1 = __webpack_require__(1);
- var observeOn_1 = __webpack_require__(148);
- var observable_1 = __webpack_require__(45);
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @extends {Ignored}
- * @hide true
- */
- var FromObservable = (function (_super) {
- __extends(FromObservable, _super);
- function FromObservable(ish, scheduler) {
- _super.call(this, null);
- this.ish = ish;
- this.scheduler = scheduler;
- }
- /**
- * Creates an Observable from an Array, an array-like object, a Promise, an
- * iterable object, or an Observable-like object.
- *
- * <span class="informal">Converts almost anything to an Observable.</span>
- *
- * <img src="./img/from.png" width="100%">
- *
- * Convert various other objects and data types into Observables. `from`
- * converts a Promise or an array-like or an
- * [iterable](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#iterable)
- * object into an Observable that emits the items in that promise or array or
- * iterable. A String, in this context, is treated as an array of characters.
- * Observable-like objects (contains a function named with the ES2015 Symbol
- * for Observable) can also be converted through this operator.
- *
- * @example <caption>Converts an array to an Observable</caption>
- * var array = [10, 20, 30];
- * var result = Rx.Observable.from(array);
- * result.subscribe(x => console.log(x));
- *
- * // Results in the following:
- * // 10 20 30
- *
- * @example <caption>Convert an infinite iterable (from a generator) to an Observable</caption>
- * function* generateDoubles(seed) {
- * var i = seed;
- * while (true) {
- * yield i;
- * i = 2 * i; // double it
- * }
- * }
- *
- * var iterator = generateDoubles(3);
- * var result = Rx.Observable.from(iterator).take(10);
- * result.subscribe(x => console.log(x));
- *
- * // Results in the following:
- * // 3 6 12 24 48 96 192 384 768 1536
- *
- * @see {@link create}
- * @see {@link fromEvent}
- * @see {@link fromEventPattern}
- * @see {@link fromPromise}
- *
- * @param {ObservableInput<T>} ish A subscribable object, a Promise, an
- * Observable-like, an Array, an iterable or an array-like object to be
- * converted.
- * @param {Scheduler} [scheduler] The scheduler on which to schedule the
- * emissions of values.
- * @return {Observable<T>} The Observable whose values are originally from the
- * input object that was converted.
- * @static true
- * @name from
- * @owner Observable
- */
- FromObservable.create = function (ish, scheduler) {
- if (ish != null) {
- if (typeof ish[observable_1.observable] === 'function') {
- if (ish instanceof Observable_1.Observable && !scheduler) {
- return ish;
- }
- return new FromObservable(ish, scheduler);
- }
- else if (isArray_1.isArray(ish)) {
- return new ArrayObservable_1.ArrayObservable(ish, scheduler);
- }
- else if (isPromise_1.isPromise(ish)) {
- return new PromiseObservable_1.PromiseObservable(ish, scheduler);
- }
- else if (typeof ish[iterator_1.iterator] === 'function' || typeof ish === 'string') {
- return new IteratorObservable_1.IteratorObservable(ish, scheduler);
- }
- else if (isArrayLike_1.isArrayLike(ish)) {
- return new ArrayLikeObservable_1.ArrayLikeObservable(ish, scheduler);
- }
- }
- throw new TypeError((ish !== null && typeof ish || ish) + ' is not observable');
- };
- /** @deprecated internal use only */ FromObservable.prototype._subscribe = function (subscriber) {
- var ish = this.ish;
- var scheduler = this.scheduler;
- if (scheduler == null) {
- return ish[observable_1.observable]().subscribe(subscriber);
- }
- else {
- return ish[observable_1.observable]().subscribe(new observeOn_1.ObserveOnSubscriber(subscriber, scheduler, 0));
- }
- };
- return FromObservable;
- }(Observable_1.Observable));
- exports.FromObservable = FromObservable;
- //# sourceMappingURL=FromObservable.js.map
-
- /***/ }),
- /* 145 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var root_1 = __webpack_require__(7);
- var Observable_1 = __webpack_require__(1);
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @extends {Ignored}
- * @hide true
- */
- var PromiseObservable = (function (_super) {
- __extends(PromiseObservable, _super);
- function PromiseObservable(promise, scheduler) {
- _super.call(this);
- this.promise = promise;
- this.scheduler = scheduler;
- }
- /**
- * Converts a Promise to an Observable.
- *
- * <span class="informal">Returns an Observable that just emits the Promise's
- * resolved value, then completes.</span>
- *
- * Converts an ES2015 Promise or a Promises/A+ spec compliant Promise to an
- * Observable. If the Promise resolves with a value, the output Observable
- * emits that resolved value as a `next`, and then completes. If the Promise
- * is rejected, then the output Observable emits the corresponding Error.
- *
- * @example <caption>Convert the Promise returned by Fetch to an Observable</caption>
- * var result = Rx.Observable.fromPromise(fetch('http://myserver.com/'));
- * result.subscribe(x => console.log(x), e => console.error(e));
- *
- * @see {@link bindCallback}
- * @see {@link from}
- *
- * @param {PromiseLike<T>} promise The promise to be converted.
- * @param {Scheduler} [scheduler] An optional IScheduler to use for scheduling
- * the delivery of the resolved value (or the rejection).
- * @return {Observable<T>} An Observable which wraps the Promise.
- * @static true
- * @name fromPromise
- * @owner Observable
- */
- PromiseObservable.create = function (promise, scheduler) {
- return new PromiseObservable(promise, scheduler);
- };
- /** @deprecated internal use only */ PromiseObservable.prototype._subscribe = function (subscriber) {
- var _this = this;
- var promise = this.promise;
- var scheduler = this.scheduler;
- if (scheduler == null) {
- if (this._isScalar) {
- if (!subscriber.closed) {
- subscriber.next(this.value);
- subscriber.complete();
- }
- }
- else {
- promise.then(function (value) {
- _this.value = value;
- _this._isScalar = true;
- if (!subscriber.closed) {
- subscriber.next(value);
- subscriber.complete();
- }
- }, function (err) {
- if (!subscriber.closed) {
- subscriber.error(err);
- }
- })
- .then(null, function (err) {
- // escape the promise trap, throw unhandled errors
- root_1.root.setTimeout(function () { throw err; });
- });
- }
- }
- else {
- if (this._isScalar) {
- if (!subscriber.closed) {
- return scheduler.schedule(dispatchNext, 0, { value: this.value, subscriber: subscriber });
- }
- }
- else {
- promise.then(function (value) {
- _this.value = value;
- _this._isScalar = true;
- if (!subscriber.closed) {
- subscriber.add(scheduler.schedule(dispatchNext, 0, { value: value, subscriber: subscriber }));
- }
- }, function (err) {
- if (!subscriber.closed) {
- subscriber.add(scheduler.schedule(dispatchError, 0, { err: err, subscriber: subscriber }));
- }
- })
- .then(null, function (err) {
- // escape the promise trap, throw unhandled errors
- root_1.root.setTimeout(function () { throw err; });
- });
- }
- }
- };
- return PromiseObservable;
- }(Observable_1.Observable));
- exports.PromiseObservable = PromiseObservable;
- function dispatchNext(arg) {
- var value = arg.value, subscriber = arg.subscriber;
- if (!subscriber.closed) {
- subscriber.next(value);
- subscriber.complete();
- }
- }
- function dispatchError(arg) {
- var err = arg.err, subscriber = arg.subscriber;
- if (!subscriber.closed) {
- subscriber.error(err);
- }
- }
- //# sourceMappingURL=PromiseObservable.js.map
-
- /***/ }),
- /* 146 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var root_1 = __webpack_require__(7);
- var Observable_1 = __webpack_require__(1);
- var iterator_1 = __webpack_require__(31);
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @extends {Ignored}
- * @hide true
- */
- var IteratorObservable = (function (_super) {
- __extends(IteratorObservable, _super);
- function IteratorObservable(iterator, scheduler) {
- _super.call(this);
- this.scheduler = scheduler;
- if (iterator == null) {
- throw new Error('iterator cannot be null.');
- }
- this.iterator = getIterator(iterator);
- }
- IteratorObservable.create = function (iterator, scheduler) {
- return new IteratorObservable(iterator, scheduler);
- };
- IteratorObservable.dispatch = function (state) {
- var index = state.index, hasError = state.hasError, iterator = state.iterator, subscriber = state.subscriber;
- if (hasError) {
- subscriber.error(state.error);
- return;
- }
- var result = iterator.next();
- if (result.done) {
- subscriber.complete();
- return;
- }
- subscriber.next(result.value);
- state.index = index + 1;
- if (subscriber.closed) {
- if (typeof iterator.return === 'function') {
- iterator.return();
- }
- return;
- }
- this.schedule(state);
- };
- /** @deprecated internal use only */ IteratorObservable.prototype._subscribe = function (subscriber) {
- var index = 0;
- var _a = this, iterator = _a.iterator, scheduler = _a.scheduler;
- if (scheduler) {
- return scheduler.schedule(IteratorObservable.dispatch, 0, {
- index: index, iterator: iterator, subscriber: subscriber
- });
- }
- else {
- do {
- var result = iterator.next();
- if (result.done) {
- subscriber.complete();
- break;
- }
- else {
- subscriber.next(result.value);
- }
- if (subscriber.closed) {
- if (typeof iterator.return === 'function') {
- iterator.return();
- }
- break;
- }
- } while (true);
- }
- };
- return IteratorObservable;
- }(Observable_1.Observable));
- exports.IteratorObservable = IteratorObservable;
- var StringIterator = (function () {
- function StringIterator(str, idx, len) {
- if (idx === void 0) { idx = 0; }
- if (len === void 0) { len = str.length; }
- this.str = str;
- this.idx = idx;
- this.len = len;
- }
- StringIterator.prototype[iterator_1.iterator] = function () { return (this); };
- StringIterator.prototype.next = function () {
- return this.idx < this.len ? {
- done: false,
- value: this.str.charAt(this.idx++)
- } : {
- done: true,
- value: undefined
- };
- };
- return StringIterator;
- }());
- var ArrayIterator = (function () {
- function ArrayIterator(arr, idx, len) {
- if (idx === void 0) { idx = 0; }
- if (len === void 0) { len = toLength(arr); }
- this.arr = arr;
- this.idx = idx;
- this.len = len;
- }
- ArrayIterator.prototype[iterator_1.iterator] = function () { return this; };
- ArrayIterator.prototype.next = function () {
- return this.idx < this.len ? {
- done: false,
- value: this.arr[this.idx++]
- } : {
- done: true,
- value: undefined
- };
- };
- return ArrayIterator;
- }());
- function getIterator(obj) {
- var i = obj[iterator_1.iterator];
- if (!i && typeof obj === 'string') {
- return new StringIterator(obj);
- }
- if (!i && obj.length !== undefined) {
- return new ArrayIterator(obj);
- }
- if (!i) {
- throw new TypeError('object is not iterable');
- }
- return obj[iterator_1.iterator]();
- }
- var maxSafeInteger = Math.pow(2, 53) - 1;
- function toLength(o) {
- var len = +o.length;
- if (isNaN(len)) {
- return 0;
- }
- if (len === 0 || !numberIsFinite(len)) {
- return len;
- }
- len = sign(len) * Math.floor(Math.abs(len));
- if (len <= 0) {
- return 0;
- }
- if (len > maxSafeInteger) {
- return maxSafeInteger;
- }
- return len;
- }
- function numberIsFinite(value) {
- return typeof value === 'number' && root_1.root.isFinite(value);
- }
- function sign(value) {
- var valueAsNumber = +value;
- if (valueAsNumber === 0) {
- return valueAsNumber;
- }
- if (isNaN(valueAsNumber)) {
- return valueAsNumber;
- }
- return valueAsNumber < 0 ? -1 : 1;
- }
- //# sourceMappingURL=IteratorObservable.js.map
-
- /***/ }),
- /* 147 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var Observable_1 = __webpack_require__(1);
- var ScalarObservable_1 = __webpack_require__(46);
- var EmptyObservable_1 = __webpack_require__(28);
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @extends {Ignored}
- * @hide true
- */
- var ArrayLikeObservable = (function (_super) {
- __extends(ArrayLikeObservable, _super);
- function ArrayLikeObservable(arrayLike, scheduler) {
- _super.call(this);
- this.arrayLike = arrayLike;
- this.scheduler = scheduler;
- if (!scheduler && arrayLike.length === 1) {
- this._isScalar = true;
- this.value = arrayLike[0];
- }
- }
- ArrayLikeObservable.create = function (arrayLike, scheduler) {
- var length = arrayLike.length;
- if (length === 0) {
- return new EmptyObservable_1.EmptyObservable();
- }
- else if (length === 1) {
- return new ScalarObservable_1.ScalarObservable(arrayLike[0], scheduler);
- }
- else {
- return new ArrayLikeObservable(arrayLike, scheduler);
- }
- };
- ArrayLikeObservable.dispatch = function (state) {
- var arrayLike = state.arrayLike, index = state.index, length = state.length, subscriber = state.subscriber;
- if (subscriber.closed) {
- return;
- }
- if (index >= length) {
- subscriber.complete();
- return;
- }
- subscriber.next(arrayLike[index]);
- state.index = index + 1;
- this.schedule(state);
- };
- /** @deprecated internal use only */ ArrayLikeObservable.prototype._subscribe = function (subscriber) {
- var index = 0;
- var _a = this, arrayLike = _a.arrayLike, scheduler = _a.scheduler;
- var length = arrayLike.length;
- if (scheduler) {
- return scheduler.schedule(ArrayLikeObservable.dispatch, 0, {
- arrayLike: arrayLike, index: index, length: length, subscriber: subscriber
- });
- }
- else {
- for (var i = 0; i < length && !subscriber.closed; i++) {
- subscriber.next(arrayLike[i]);
- }
- subscriber.complete();
- }
- };
- return ArrayLikeObservable;
- }(Observable_1.Observable));
- exports.ArrayLikeObservable = ArrayLikeObservable;
- //# sourceMappingURL=ArrayLikeObservable.js.map
-
- /***/ }),
- /* 148 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var Subscriber_1 = __webpack_require__(3);
- var Notification_1 = __webpack_require__(149);
- /**
- *
- * Re-emits all notifications from source Observable with specified scheduler.
- *
- * <span class="informal">Ensure a specific scheduler is used, from outside of an Observable.</span>
- *
- * `observeOn` is an operator that accepts a scheduler as a first parameter, which will be used to reschedule
- * notifications emitted by the source Observable. It might be useful, if you do not have control over
- * internal scheduler of a given Observable, but want to control when its values are emitted nevertheless.
- *
- * Returned Observable emits the same notifications (nexted values, complete and error events) as the source Observable,
- * but rescheduled with provided scheduler. Note that this doesn't mean that source Observables internal
- * scheduler will be replaced in any way. Original scheduler still will be used, but when the source Observable emits
- * notification, it will be immediately scheduled again - this time with scheduler passed to `observeOn`.
- * An anti-pattern would be calling `observeOn` on Observable that emits lots of values synchronously, to split
- * that emissions into asynchronous chunks. For this to happen, scheduler would have to be passed into the source
- * Observable directly (usually into the operator that creates it). `observeOn` simply delays notifications a
- * little bit more, to ensure that they are emitted at expected moments.
- *
- * As a matter of fact, `observeOn` accepts second parameter, which specifies in milliseconds with what delay notifications
- * will be emitted. The main difference between {@link delay} operator and `observeOn` is that `observeOn`
- * will delay all notifications - including error notifications - while `delay` will pass through error
- * from source Observable immediately when it is emitted. In general it is highly recommended to use `delay` operator
- * for any kind of delaying of values in the stream, while using `observeOn` to specify which scheduler should be used
- * for notification emissions in general.
- *
- * @example <caption>Ensure values in subscribe are called just before browser repaint.</caption>
- * const intervals = Rx.Observable.interval(10); // Intervals are scheduled
- * // with async scheduler by default...
- *
- * intervals
- * .observeOn(Rx.Scheduler.animationFrame) // ...but we will observe on animationFrame
- * .subscribe(val => { // scheduler to ensure smooth animation.
- * someDiv.style.height = val + 'px';
- * });
- *
- * @see {@link delay}
- *
- * @param {IScheduler} scheduler Scheduler that will be used to reschedule notifications from source Observable.
- * @param {number} [delay] Number of milliseconds that states with what delay every notification should be rescheduled.
- * @return {Observable<T>} Observable that emits the same notifications as the source Observable,
- * but with provided scheduler.
- *
- * @method observeOn
- * @owner Observable
- */
- function observeOn(scheduler, delay) {
- if (delay === void 0) { delay = 0; }
- return function observeOnOperatorFunction(source) {
- return source.lift(new ObserveOnOperator(scheduler, delay));
- };
- }
- exports.observeOn = observeOn;
- var ObserveOnOperator = (function () {
- function ObserveOnOperator(scheduler, delay) {
- if (delay === void 0) { delay = 0; }
- this.scheduler = scheduler;
- this.delay = delay;
- }
- ObserveOnOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay));
- };
- return ObserveOnOperator;
- }());
- exports.ObserveOnOperator = ObserveOnOperator;
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @ignore
- * @extends {Ignored}
- */
- var ObserveOnSubscriber = (function (_super) {
- __extends(ObserveOnSubscriber, _super);
- function ObserveOnSubscriber(destination, scheduler, delay) {
- if (delay === void 0) { delay = 0; }
- _super.call(this, destination);
- this.scheduler = scheduler;
- this.delay = delay;
- }
- ObserveOnSubscriber.dispatch = function (arg) {
- var notification = arg.notification, destination = arg.destination;
- notification.observe(destination);
- this.unsubscribe();
- };
- ObserveOnSubscriber.prototype.scheduleMessage = function (notification) {
- this.add(this.scheduler.schedule(ObserveOnSubscriber.dispatch, this.delay, new ObserveOnMessage(notification, this.destination)));
- };
- ObserveOnSubscriber.prototype._next = function (value) {
- this.scheduleMessage(Notification_1.Notification.createNext(value));
- };
- ObserveOnSubscriber.prototype._error = function (err) {
- this.scheduleMessage(Notification_1.Notification.createError(err));
- };
- ObserveOnSubscriber.prototype._complete = function () {
- this.scheduleMessage(Notification_1.Notification.createComplete());
- };
- return ObserveOnSubscriber;
- }(Subscriber_1.Subscriber));
- exports.ObserveOnSubscriber = ObserveOnSubscriber;
- var ObserveOnMessage = (function () {
- function ObserveOnMessage(notification, destination) {
- this.notification = notification;
- this.destination = destination;
- }
- return ObserveOnMessage;
- }());
- exports.ObserveOnMessage = ObserveOnMessage;
- //# sourceMappingURL=observeOn.js.map
-
- /***/ }),
- /* 149 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var Observable_1 = __webpack_require__(1);
- /**
- * Represents a push-based event or value that an {@link Observable} can emit.
- * This class is particularly useful for operators that manage notifications,
- * like {@link materialize}, {@link dematerialize}, {@link observeOn}, and
- * others. Besides wrapping the actual delivered value, it also annotates it
- * with metadata of, for instance, what type of push message it is (`next`,
- * `error`, or `complete`).
- *
- * @see {@link materialize}
- * @see {@link dematerialize}
- * @see {@link observeOn}
- *
- * @class Notification<T>
- */
- var Notification = (function () {
- function Notification(kind, value, error) {
- this.kind = kind;
- this.value = value;
- this.error = error;
- this.hasValue = kind === 'N';
- }
- /**
- * Delivers to the given `observer` the value wrapped by this Notification.
- * @param {Observer} observer
- * @return
- */
- Notification.prototype.observe = function (observer) {
- switch (this.kind) {
- case 'N':
- return observer.next && observer.next(this.value);
- case 'E':
- return observer.error && observer.error(this.error);
- case 'C':
- return observer.complete && observer.complete();
- }
- };
- /**
- * Given some {@link Observer} callbacks, deliver the value represented by the
- * current Notification to the correctly corresponding callback.
- * @param {function(value: T): void} next An Observer `next` callback.
- * @param {function(err: any): void} [error] An Observer `error` callback.
- * @param {function(): void} [complete] An Observer `complete` callback.
- * @return {any}
- */
- Notification.prototype.do = function (next, error, complete) {
- var kind = this.kind;
- switch (kind) {
- case 'N':
- return next && next(this.value);
- case 'E':
- return error && error(this.error);
- case 'C':
- return complete && complete();
- }
- };
- /**
- * Takes an Observer or its individual callback functions, and calls `observe`
- * or `do` methods accordingly.
- * @param {Observer|function(value: T): void} nextOrObserver An Observer or
- * the `next` callback.
- * @param {function(err: any): void} [error] An Observer `error` callback.
- * @param {function(): void} [complete] An Observer `complete` callback.
- * @return {any}
- */
- Notification.prototype.accept = function (nextOrObserver, error, complete) {
- if (nextOrObserver && typeof nextOrObserver.next === 'function') {
- return this.observe(nextOrObserver);
- }
- else {
- return this.do(nextOrObserver, error, complete);
- }
- };
- /**
- * Returns a simple Observable that just delivers the notification represented
- * by this Notification instance.
- * @return {any}
- */
- Notification.prototype.toObservable = function () {
- var kind = this.kind;
- switch (kind) {
- case 'N':
- return Observable_1.Observable.of(this.value);
- case 'E':
- return Observable_1.Observable.throw(this.error);
- case 'C':
- return Observable_1.Observable.empty();
- }
- throw new Error('unexpected notification kind value');
- };
- /**
- * A shortcut to create a Notification instance of the type `next` from a
- * given value.
- * @param {T} value The `next` value.
- * @return {Notification<T>} The "next" Notification representing the
- * argument.
- */
- Notification.createNext = function (value) {
- if (typeof value !== 'undefined') {
- return new Notification('N', value);
- }
- return Notification.undefinedValueNotification;
- };
- /**
- * A shortcut to create a Notification instance of the type `error` from a
- * given error.
- * @param {any} [err] The `error` error.
- * @return {Notification<T>} The "error" Notification representing the
- * argument.
- */
- Notification.createError = function (err) {
- return new Notification('E', undefined, err);
- };
- /**
- * A shortcut to create a Notification instance of the type `complete`.
- * @return {Notification<any>} The valueless "complete" Notification.
- */
- Notification.createComplete = function () {
- return Notification.completeNotification;
- };
- Notification.completeNotification = new Notification('C');
- Notification.undefinedValueNotification = new Notification('N', undefined);
- return Notification;
- }());
- exports.Notification = Notification;
- //# sourceMappingURL=Notification.js.map
-
- /***/ }),
- /* 150 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var mergeAll_1 = __webpack_require__(55);
- /**
- * Converts a higher-order Observable into a first-order Observable by
- * concatenating the inner Observables in order.
- *
- * <span class="informal">Flattens an Observable-of-Observables by putting one
- * inner Observable after the other.</span>
- *
- * <img src="./img/concatAll.png" width="100%">
- *
- * Joins every Observable emitted by the source (a higher-order Observable), in
- * a serial fashion. It subscribes to each inner Observable only after the
- * previous inner Observable has completed, and merges all of their values into
- * the returned observable.
- *
- * __Warning:__ If the source Observable emits Observables quickly and
- * endlessly, and the inner Observables it emits generally complete slower than
- * the source emits, you can run into memory issues as the incoming Observables
- * collect in an unbounded buffer.
- *
- * Note: `concatAll` is equivalent to `mergeAll` with concurrency parameter set
- * to `1`.
- *
- * @example <caption>For each click event, tick every second from 0 to 3, with no concurrency</caption>
- * var clicks = Rx.Observable.fromEvent(document, 'click');
- * var higherOrder = clicks.map(ev => Rx.Observable.interval(1000).take(4));
- * var firstOrder = higherOrder.concatAll();
- * firstOrder.subscribe(x => console.log(x));
- *
- * // Results in the following:
- * // (results are not concurrent)
- * // For every click on the "document" it will emit values 0 to 3 spaced
- * // on a 1000ms interval
- * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3
- *
- * @see {@link combineAll}
- * @see {@link concat}
- * @see {@link concatMap}
- * @see {@link concatMapTo}
- * @see {@link exhaust}
- * @see {@link mergeAll}
- * @see {@link switch}
- * @see {@link zipAll}
- *
- * @return {Observable} An Observable emitting values from all the inner
- * Observables concatenated.
- * @method concatAll
- * @owner Observable
- */
- function concatAll() {
- return mergeAll_1.mergeAll(1);
- }
- exports.concatAll = concatAll;
- //# sourceMappingURL=concatAll.js.map
-
- /***/ }),
- /* 151 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- function identity(x) {
- return x;
- }
- exports.identity = identity;
- //# sourceMappingURL=identity.js.map
-
- /***/ }),
- /* 152 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var ArrayObservable_1 = __webpack_require__(23);
- var ScalarObservable_1 = __webpack_require__(46);
- var EmptyObservable_1 = __webpack_require__(28);
- var concat_1 = __webpack_require__(54);
- var isScheduler_1 = __webpack_require__(25);
- /* tslint:enable:max-line-length */
- /**
- * Returns an Observable that emits the items you specify as arguments before it begins to emit
- * items emitted by the source Observable.
- *
- * <img src="./img/startWith.png" width="100%">
- *
- * @param {...T} values - Items you want the modified Observable to emit first.
- * @param {Scheduler} [scheduler] - A {@link IScheduler} to use for scheduling
- * the emissions of the `next` notifications.
- * @return {Observable} An Observable that emits the items in the specified Iterable and then emits the items
- * emitted by the source Observable.
- * @method startWith
- * @owner Observable
- */
- function startWith() {
- var array = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- array[_i - 0] = arguments[_i];
- }
- return function (source) {
- var scheduler = array[array.length - 1];
- if (isScheduler_1.isScheduler(scheduler)) {
- array.pop();
- }
- else {
- scheduler = null;
- }
- var len = array.length;
- if (len === 1) {
- return concat_1.concat(new ScalarObservable_1.ScalarObservable(array[0], scheduler), source);
- }
- else if (len > 1) {
- return concat_1.concat(new ArrayObservable_1.ArrayObservable(array, scheduler), source);
- }
- else {
- return concat_1.concat(new EmptyObservable_1.EmptyObservable(scheduler), source);
- }
- };
- }
- exports.startWith = startWith;
- //# sourceMappingURL=startWith.js.map
-
- /***/ }),
- /* 153 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var pluck_1 = __webpack_require__(6);
- var ignoreElements_1 = __webpack_require__(11);
- var partition_1 = __webpack_require__(154);
- var merge_1 = __webpack_require__(38);
- var browser_utils_1 = __webpack_require__(22);
- var tap_1 = __webpack_require__(5);
- var withLatestFrom_1 = __webpack_require__(0);
- var map_1 = __webpack_require__(2);
- function setScrollEffect(xs, inputs) {
- {
- /**
- * Group the incoming event with window, document & scrollProportionally argument
- */
- var tupleStream$ = xs.pipe(withLatestFrom_1.withLatestFrom(inputs.window$, inputs.document$, inputs.option$.pipe(pluck_1.pluck("scrollProportionally"))));
- /**
- * Split the stream between document scrolls and element scrolls
- */
- var _a = partition_1.partition(function (_a) {
- var event = _a[0];
- return event.tagName === "document";
- })(tupleStream$), document$ = _a[0], element$ = _a[1];
- /**
- * Further split the element scroll between those matching in `scrollElementMapping`
- * and regular element scrolls
- */
- var _b = partition_1.partition(function (_a) {
- var event = _a[0];
- return event.mappingIndex > -1;
- })(element$), mapped$ = _b[0], nonMapped$ = _b[1];
- return merge_1.merge(
- /**
- * Main window scroll
- */
- document$.pipe(tap_1.tap(function (incoming) {
- var event = incoming[0], window = incoming[1], document = incoming[2], scrollProportionally = incoming[3];
- var scrollSpace = browser_utils_1.getDocumentScrollSpace(document);
- if (scrollProportionally) {
- return window.scrollTo(0, scrollSpace.y * event.position.proportional); // % of y axis of scroll to px
- }
- return window.scrollTo(0, event.position.raw.y);
- })),
- /**
- * Regular, non-mapped Element scrolls
- */
- nonMapped$.pipe(tap_1.tap(function (incoming) {
- var event = incoming[0], window = incoming[1], document = incoming[2], scrollProportionally = incoming[3];
- var matchingElements = document.getElementsByTagName(event.tagName);
- if (matchingElements && matchingElements.length) {
- var match = matchingElements[event.index];
- if (match) {
- return scrollElement(match, scrollProportionally, event);
- }
- }
- })),
- /**
- * Element scrolls given in 'scrollElementMapping'
- */
- mapped$.pipe(withLatestFrom_1.withLatestFrom(inputs.option$.pipe(pluck_1.pluck("scrollElementMapping"))),
- /**
- * Filter the elements in the option `scrollElementMapping` so
- * that it does not contain the element that triggered the event
- */
- map_1.map(function (_a) {
- var incoming = _a[0], scrollElementMapping = _a[1];
- var event = incoming[0];
- return [
- incoming,
- scrollElementMapping.filter(function (item, index) { return index !== event.mappingIndex; })
- ];
- }),
- /**
- * Now perform the scroll on all other matching elements
- */
- tap_1.tap(function (_a) {
- var incoming = _a[0], scrollElementMapping = _a[1];
- var event = incoming[0], window = incoming[1], document = incoming[2], scrollProportionally = incoming[3];
- scrollElementMapping
- .map(function (selector) { return document.querySelector(selector); })
- .forEach(function (element) {
- scrollElement(element, scrollProportionally, event);
- });
- }))).pipe(ignoreElements_1.ignoreElements());
- }
- }
- exports.setScrollEffect = setScrollEffect;
- function scrollElement(element, scrollProportionally, event) {
- if (scrollProportionally && element.scrollTo) {
- return element.scrollTo(0, element.scrollHeight * event.position.proportional); // % of y axis of scroll to px
- }
- return element.scrollTo(0, event.position.raw.y);
- }
-
-
- /***/ }),
- /* 154 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var not_1 = __webpack_require__(155);
- var filter_1 = __webpack_require__(4);
- /**
- * Splits the source Observable into two, one with values that satisfy a
- * predicate, and another with values that don't satisfy the predicate.
- *
- * <span class="informal">It's like {@link filter}, but returns two Observables:
- * one like the output of {@link filter}, and the other with values that did not
- * pass the condition.</span>
- *
- * <img src="./img/partition.png" width="100%">
- *
- * `partition` outputs an array with two Observables that partition the values
- * from the source Observable through the given `predicate` function. The first
- * Observable in that array emits source values for which the predicate argument
- * returns true. The second Observable emits source values for which the
- * predicate returns false. The first behaves like {@link filter} and the second
- * behaves like {@link filter} with the predicate negated.
- *
- * @example <caption>Partition click events into those on DIV elements and those elsewhere</caption>
- * var clicks = Rx.Observable.fromEvent(document, 'click');
- * var parts = clicks.partition(ev => ev.target.tagName === 'DIV');
- * var clicksOnDivs = parts[0];
- * var clicksElsewhere = parts[1];
- * clicksOnDivs.subscribe(x => console.log('DIV clicked: ', x));
- * clicksElsewhere.subscribe(x => console.log('Other clicked: ', x));
- *
- * @see {@link filter}
- *
- * @param {function(value: T, index: number): boolean} predicate A function that
- * evaluates each value emitted by the source Observable. If it returns `true`,
- * the value is emitted on the first Observable in the returned array, if
- * `false` the value is emitted on the second Observable in the array. The
- * `index` parameter is the number `i` for the i-th source emission that has
- * happened since the subscription, starting from the number `0`.
- * @param {any} [thisArg] An optional argument to determine the value of `this`
- * in the `predicate` function.
- * @return {[Observable<T>, Observable<T>]} An array with two Observables: one
- * with values that passed the predicate, and another with values that did not
- * pass the predicate.
- * @method partition
- * @owner Observable
- */
- function partition(predicate, thisArg) {
- return function (source) { return [
- filter_1.filter(predicate, thisArg)(source),
- filter_1.filter(not_1.not(predicate, thisArg))(source)
- ]; };
- }
- exports.partition = partition;
- //# sourceMappingURL=partition.js.map
-
- /***/ }),
- /* 155 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- function not(pred, thisArg) {
- function notPred() {
- return !(notPred.pred.apply(notPred.thisArg, arguments));
- }
- notPred.pred = pred;
- notPred.thisArg = thisArg;
- return notPred;
- }
- exports.not = not;
- //# sourceMappingURL=not.js.map
-
- /***/ }),
- /* 156 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var map_1 = __webpack_require__(2);
- var Log = __webpack_require__(14);
- function incomingBrowserNotify(xs) {
- return xs.pipe(map_1.map(function (event) { return Log.overlayInfo(event.message, event.timeout); }));
- }
- exports.incomingBrowserNotify = incomingBrowserNotify;
-
-
- /***/ }),
- /* 157 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var pluck_1 = __webpack_require__(6);
- var filter_1 = __webpack_require__(4);
- var map_1 = __webpack_require__(2);
- var withLatestFrom_1 = __webpack_require__(0);
- var browser_set_location_effect_1 = __webpack_require__(89);
- function incomingBrowserLocation(xs, inputs) {
- return xs.pipe(withLatestFrom_1.withLatestFrom(inputs.option$.pipe(pluck_1.pluck("ghostMode", "location"))), filter_1.filter(function (_a) {
- var canSyncLocation = _a[1];
- return canSyncLocation === true;
- }), map_1.map(function (_a) {
- var event = _a[0];
- return browser_set_location_effect_1.browserSetLocation(event);
- }));
- }
- exports.incomingBrowserLocation = incomingBrowserLocation;
-
-
- /***/ }),
- /* 158 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var SubscribeOnObservable_1 = __webpack_require__(159);
- /**
- * Asynchronously subscribes Observers to this Observable on the specified IScheduler.
- *
- * <img src="./img/subscribeOn.png" width="100%">
- *
- * @param {Scheduler} scheduler - The IScheduler to perform subscription actions on.
- * @return {Observable<T>} The source Observable modified so that its subscriptions happen on the specified IScheduler.
- .
- * @method subscribeOn
- * @owner Observable
- */
- function subscribeOn(scheduler, delay) {
- if (delay === void 0) { delay = 0; }
- return function subscribeOnOperatorFunction(source) {
- return source.lift(new SubscribeOnOperator(scheduler, delay));
- };
- }
- exports.subscribeOn = subscribeOn;
- var SubscribeOnOperator = (function () {
- function SubscribeOnOperator(scheduler, delay) {
- this.scheduler = scheduler;
- this.delay = delay;
- }
- SubscribeOnOperator.prototype.call = function (subscriber, source) {
- return new SubscribeOnObservable_1.SubscribeOnObservable(source, this.delay, this.scheduler).subscribe(subscriber);
- };
- return SubscribeOnOperator;
- }());
- //# sourceMappingURL=subscribeOn.js.map
-
- /***/ }),
- /* 159 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var Observable_1 = __webpack_require__(1);
- var asap_1 = __webpack_require__(160);
- var isNumeric_1 = __webpack_require__(77);
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @extends {Ignored}
- * @hide true
- */
- var SubscribeOnObservable = (function (_super) {
- __extends(SubscribeOnObservable, _super);
- function SubscribeOnObservable(source, delayTime, scheduler) {
- if (delayTime === void 0) { delayTime = 0; }
- if (scheduler === void 0) { scheduler = asap_1.asap; }
- _super.call(this);
- this.source = source;
- this.delayTime = delayTime;
- this.scheduler = scheduler;
- if (!isNumeric_1.isNumeric(delayTime) || delayTime < 0) {
- this.delayTime = 0;
- }
- if (!scheduler || typeof scheduler.schedule !== 'function') {
- this.scheduler = asap_1.asap;
- }
- }
- SubscribeOnObservable.create = function (source, delay, scheduler) {
- if (delay === void 0) { delay = 0; }
- if (scheduler === void 0) { scheduler = asap_1.asap; }
- return new SubscribeOnObservable(source, delay, scheduler);
- };
- SubscribeOnObservable.dispatch = function (arg) {
- var source = arg.source, subscriber = arg.subscriber;
- return this.add(source.subscribe(subscriber));
- };
- /** @deprecated internal use only */ SubscribeOnObservable.prototype._subscribe = function (subscriber) {
- var delay = this.delayTime;
- var source = this.source;
- var scheduler = this.scheduler;
- return scheduler.schedule(SubscribeOnObservable.dispatch, delay, {
- source: source, subscriber: subscriber
- });
- };
- return SubscribeOnObservable;
- }(Observable_1.Observable));
- exports.SubscribeOnObservable = SubscribeOnObservable;
- //# sourceMappingURL=SubscribeOnObservable.js.map
-
- /***/ }),
- /* 160 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var AsapAction_1 = __webpack_require__(161);
- var AsapScheduler_1 = __webpack_require__(164);
- /**
- *
- * Asap Scheduler
- *
- * <span class="informal">Perform task as fast as it can be performed asynchronously</span>
- *
- * `asap` scheduler behaves the same as {@link async} scheduler when you use it to delay task
- * in time. If however you set delay to `0`, `asap` will wait for current synchronously executing
- * code to end and then it will try to execute given task as fast as possible.
- *
- * `asap` scheduler will do its best to minimize time between end of currently executing code
- * and start of scheduled task. This makes it best candidate for performing so called "deferring".
- * Traditionally this was achieved by calling `setTimeout(deferredTask, 0)`, but that technique involves
- * some (although minimal) unwanted delay.
- *
- * Note that using `asap` scheduler does not necessarily mean that your task will be first to process
- * after currently executing code. In particular, if some task was also scheduled with `asap` before,
- * that task will execute first. That being said, if you need to schedule task asynchronously, but
- * as soon as possible, `asap` scheduler is your best bet.
- *
- * @example <caption>Compare async and asap scheduler</caption>
- *
- * Rx.Scheduler.async.schedule(() => console.log('async')); // scheduling 'async' first...
- * Rx.Scheduler.asap.schedule(() => console.log('asap'));
- *
- * // Logs:
- * // "asap"
- * // "async"
- * // ... but 'asap' goes first!
- *
- * @static true
- * @name asap
- * @owner Scheduler
- */
- exports.asap = new AsapScheduler_1.AsapScheduler(AsapAction_1.AsapAction);
- //# sourceMappingURL=asap.js.map
-
- /***/ }),
- /* 161 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var Immediate_1 = __webpack_require__(162);
- var AsyncAction_1 = __webpack_require__(79);
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @ignore
- * @extends {Ignored}
- */
- var AsapAction = (function (_super) {
- __extends(AsapAction, _super);
- function AsapAction(scheduler, work) {
- _super.call(this, scheduler, work);
- this.scheduler = scheduler;
- this.work = work;
- }
- AsapAction.prototype.requestAsyncId = function (scheduler, id, delay) {
- if (delay === void 0) { delay = 0; }
- // If delay is greater than 0, request as an async action.
- if (delay !== null && delay > 0) {
- return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);
- }
- // Push the action to the end of the scheduler queue.
- scheduler.actions.push(this);
- // If a microtask has already been scheduled, don't schedule another
- // one. If a microtask hasn't been scheduled yet, schedule one now. Return
- // the current scheduled microtask id.
- return scheduler.scheduled || (scheduler.scheduled = Immediate_1.Immediate.setImmediate(scheduler.flush.bind(scheduler, null)));
- };
- AsapAction.prototype.recycleAsyncId = function (scheduler, id, delay) {
- if (delay === void 0) { delay = 0; }
- // If delay exists and is greater than 0, or if the delay is null (the
- // action wasn't rescheduled) but was originally scheduled as an async
- // action, then recycle as an async action.
- if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {
- return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);
- }
- // If the scheduler queue is empty, cancel the requested microtask and
- // set the scheduled flag to undefined so the next AsapAction will schedule
- // its own.
- if (scheduler.actions.length === 0) {
- Immediate_1.Immediate.clearImmediate(id);
- scheduler.scheduled = undefined;
- }
- // Return undefined so the action knows to request a new async id if it's rescheduled.
- return undefined;
- };
- return AsapAction;
- }(AsyncAction_1.AsyncAction));
- exports.AsapAction = AsapAction;
- //# sourceMappingURL=AsapAction.js.map
-
- /***/ }),
- /* 162 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
- /* WEBPACK VAR INJECTION */(function(clearImmediate, setImmediate) {/**
- Some credit for this helper goes to http://github.com/YuzuJS/setImmediate
- */
-
- var root_1 = __webpack_require__(7);
- var ImmediateDefinition = (function () {
- function ImmediateDefinition(root) {
- this.root = root;
- if (root.setImmediate && typeof root.setImmediate === 'function') {
- this.setImmediate = root.setImmediate.bind(root);
- this.clearImmediate = root.clearImmediate.bind(root);
- }
- else {
- this.nextHandle = 1;
- this.tasksByHandle = {};
- this.currentlyRunningATask = false;
- // Don't get fooled by e.g. browserify environments.
- if (this.canUseProcessNextTick()) {
- // For Node.js before 0.9
- this.setImmediate = this.createProcessNextTickSetImmediate();
- }
- else if (this.canUsePostMessage()) {
- // For non-IE10 modern browsers
- this.setImmediate = this.createPostMessageSetImmediate();
- }
- else if (this.canUseMessageChannel()) {
- // For web workers, where supported
- this.setImmediate = this.createMessageChannelSetImmediate();
- }
- else if (this.canUseReadyStateChange()) {
- // For IE 6–8
- this.setImmediate = this.createReadyStateChangeSetImmediate();
- }
- else {
- // For older browsers
- this.setImmediate = this.createSetTimeoutSetImmediate();
- }
- var ci = function clearImmediate(handle) {
- delete clearImmediate.instance.tasksByHandle[handle];
- };
- ci.instance = this;
- this.clearImmediate = ci;
- }
- }
- ImmediateDefinition.prototype.identify = function (o) {
- return this.root.Object.prototype.toString.call(o);
- };
- ImmediateDefinition.prototype.canUseProcessNextTick = function () {
- return this.identify(this.root.process) === '[object process]';
- };
- ImmediateDefinition.prototype.canUseMessageChannel = function () {
- return Boolean(this.root.MessageChannel);
- };
- ImmediateDefinition.prototype.canUseReadyStateChange = function () {
- var document = this.root.document;
- return Boolean(document && 'onreadystatechange' in document.createElement('script'));
- };
- ImmediateDefinition.prototype.canUsePostMessage = function () {
- var root = this.root;
- // The test against `importScripts` prevents this implementation from being installed inside a web worker,
- // where `root.postMessage` means something completely different and can't be used for this purpose.
- if (root.postMessage && !root.importScripts) {
- var postMessageIsAsynchronous_1 = true;
- var oldOnMessage = root.onmessage;
- root.onmessage = function () {
- postMessageIsAsynchronous_1 = false;
- };
- root.postMessage('', '*');
- root.onmessage = oldOnMessage;
- return postMessageIsAsynchronous_1;
- }
- return false;
- };
- // This function accepts the same arguments as setImmediate, but
- // returns a function that requires no arguments.
- ImmediateDefinition.prototype.partiallyApplied = function (handler) {
- var args = [];
- for (var _i = 1; _i < arguments.length; _i++) {
- args[_i - 1] = arguments[_i];
- }
- var fn = function result() {
- var _a = result, handler = _a.handler, args = _a.args;
- if (typeof handler === 'function') {
- handler.apply(undefined, args);
- }
- else {
- (new Function('' + handler))();
- }
- };
- fn.handler = handler;
- fn.args = args;
- return fn;
- };
- ImmediateDefinition.prototype.addFromSetImmediateArguments = function (args) {
- this.tasksByHandle[this.nextHandle] = this.partiallyApplied.apply(undefined, args);
- return this.nextHandle++;
- };
- ImmediateDefinition.prototype.createProcessNextTickSetImmediate = function () {
- var fn = function setImmediate() {
- var instance = setImmediate.instance;
- var handle = instance.addFromSetImmediateArguments(arguments);
- instance.root.process.nextTick(instance.partiallyApplied(instance.runIfPresent, handle));
- return handle;
- };
- fn.instance = this;
- return fn;
- };
- ImmediateDefinition.prototype.createPostMessageSetImmediate = function () {
- // Installs an event handler on `global` for the `message` event: see
- // * https://developer.mozilla.org/en/DOM/window.postMessage
- // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages
- var root = this.root;
- var messagePrefix = 'setImmediate$' + root.Math.random() + '$';
- var onGlobalMessage = function globalMessageHandler(event) {
- var instance = globalMessageHandler.instance;
- if (event.source === root &&
- typeof event.data === 'string' &&
- event.data.indexOf(messagePrefix) === 0) {
- instance.runIfPresent(+event.data.slice(messagePrefix.length));
- }
- };
- onGlobalMessage.instance = this;
- root.addEventListener('message', onGlobalMessage, false);
- var fn = function setImmediate() {
- var _a = setImmediate, messagePrefix = _a.messagePrefix, instance = _a.instance;
- var handle = instance.addFromSetImmediateArguments(arguments);
- instance.root.postMessage(messagePrefix + handle, '*');
- return handle;
- };
- fn.instance = this;
- fn.messagePrefix = messagePrefix;
- return fn;
- };
- ImmediateDefinition.prototype.runIfPresent = function (handle) {
- // From the spec: 'Wait until any invocations of this algorithm started before this one have completed.'
- // So if we're currently running a task, we'll need to delay this invocation.
- if (this.currentlyRunningATask) {
- // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a
- // 'too much recursion' error.
- this.root.setTimeout(this.partiallyApplied(this.runIfPresent, handle), 0);
- }
- else {
- var task = this.tasksByHandle[handle];
- if (task) {
- this.currentlyRunningATask = true;
- try {
- task();
- }
- finally {
- this.clearImmediate(handle);
- this.currentlyRunningATask = false;
- }
- }
- }
- };
- ImmediateDefinition.prototype.createMessageChannelSetImmediate = function () {
- var _this = this;
- var channel = new this.root.MessageChannel();
- channel.port1.onmessage = function (event) {
- var handle = event.data;
- _this.runIfPresent(handle);
- };
- var fn = function setImmediate() {
- var _a = setImmediate, channel = _a.channel, instance = _a.instance;
- var handle = instance.addFromSetImmediateArguments(arguments);
- channel.port2.postMessage(handle);
- return handle;
- };
- fn.channel = channel;
- fn.instance = this;
- return fn;
- };
- ImmediateDefinition.prototype.createReadyStateChangeSetImmediate = function () {
- var fn = function setImmediate() {
- var instance = setImmediate.instance;
- var root = instance.root;
- var doc = root.document;
- var html = doc.documentElement;
- var handle = instance.addFromSetImmediateArguments(arguments);
- // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted
- // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.
- var script = doc.createElement('script');
- script.onreadystatechange = function () {
- instance.runIfPresent(handle);
- script.onreadystatechange = null;
- html.removeChild(script);
- script = null;
- };
- html.appendChild(script);
- return handle;
- };
- fn.instance = this;
- return fn;
- };
- ImmediateDefinition.prototype.createSetTimeoutSetImmediate = function () {
- var fn = function setImmediate() {
- var instance = setImmediate.instance;
- var handle = instance.addFromSetImmediateArguments(arguments);
- instance.root.setTimeout(instance.partiallyApplied(instance.runIfPresent, handle), 0);
- return handle;
- };
- fn.instance = this;
- return fn;
- };
- return ImmediateDefinition;
- }());
- exports.ImmediateDefinition = ImmediateDefinition;
- exports.Immediate = new ImmediateDefinition(root_1.root);
- //# sourceMappingURL=Immediate.js.map
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(97).clearImmediate, __webpack_require__(97).setImmediate))
-
- /***/ }),
- /* 163 */
- /***/ (function(module, exports, __webpack_require__) {
-
- /* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) {
- "use strict";
-
- if (global.setImmediate) {
- return;
- }
-
- var nextHandle = 1; // Spec says greater than zero
- var tasksByHandle = {};
- var currentlyRunningATask = false;
- var doc = global.document;
- var registerImmediate;
-
- function setImmediate(callback) {
- // Callback can either be a function or a string
- if (typeof callback !== "function") {
- callback = new Function("" + callback);
- }
- // Copy function arguments
- var args = new Array(arguments.length - 1);
- for (var i = 0; i < args.length; i++) {
- args[i] = arguments[i + 1];
- }
- // Store and register the task
- var task = { callback: callback, args: args };
- tasksByHandle[nextHandle] = task;
- registerImmediate(nextHandle);
- return nextHandle++;
- }
-
- function clearImmediate(handle) {
- delete tasksByHandle[handle];
- }
-
- function run(task) {
- var callback = task.callback;
- var args = task.args;
- switch (args.length) {
- case 0:
- callback();
- break;
- case 1:
- callback(args[0]);
- break;
- case 2:
- callback(args[0], args[1]);
- break;
- case 3:
- callback(args[0], args[1], args[2]);
- break;
- default:
- callback.apply(undefined, args);
- break;
- }
- }
-
- function runIfPresent(handle) {
- // From the spec: "Wait until any invocations of this algorithm started before this one have completed."
- // So if we're currently running a task, we'll need to delay this invocation.
- if (currentlyRunningATask) {
- // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a
- // "too much recursion" error.
- setTimeout(runIfPresent, 0, handle);
- } else {
- var task = tasksByHandle[handle];
- if (task) {
- currentlyRunningATask = true;
- try {
- run(task);
- } finally {
- clearImmediate(handle);
- currentlyRunningATask = false;
- }
- }
- }
- }
-
- function installNextTickImplementation() {
- registerImmediate = function(handle) {
- process.nextTick(function () { runIfPresent(handle); });
- };
- }
-
- function canUsePostMessage() {
- // The test against `importScripts` prevents this implementation from being installed inside a web worker,
- // where `global.postMessage` means something completely different and can't be used for this purpose.
- if (global.postMessage && !global.importScripts) {
- var postMessageIsAsynchronous = true;
- var oldOnMessage = global.onmessage;
- global.onmessage = function() {
- postMessageIsAsynchronous = false;
- };
- global.postMessage("", "*");
- global.onmessage = oldOnMessage;
- return postMessageIsAsynchronous;
- }
- }
-
- function installPostMessageImplementation() {
- // Installs an event handler on `global` for the `message` event: see
- // * https://developer.mozilla.org/en/DOM/window.postMessage
- // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages
-
- var messagePrefix = "setImmediate$" + Math.random() + "$";
- var onGlobalMessage = function(event) {
- if (event.source === global &&
- typeof event.data === "string" &&
- event.data.indexOf(messagePrefix) === 0) {
- runIfPresent(+event.data.slice(messagePrefix.length));
- }
- };
-
- if (global.addEventListener) {
- global.addEventListener("message", onGlobalMessage, false);
- } else {
- global.attachEvent("onmessage", onGlobalMessage);
- }
-
- registerImmediate = function(handle) {
- global.postMessage(messagePrefix + handle, "*");
- };
- }
-
- function installMessageChannelImplementation() {
- var channel = new MessageChannel();
- channel.port1.onmessage = function(event) {
- var handle = event.data;
- runIfPresent(handle);
- };
-
- registerImmediate = function(handle) {
- channel.port2.postMessage(handle);
- };
- }
-
- function installReadyStateChangeImplementation() {
- var html = doc.documentElement;
- registerImmediate = function(handle) {
- // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted
- // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.
- var script = doc.createElement("script");
- script.onreadystatechange = function () {
- runIfPresent(handle);
- script.onreadystatechange = null;
- html.removeChild(script);
- script = null;
- };
- html.appendChild(script);
- };
- }
-
- function installSetTimeoutImplementation() {
- registerImmediate = function(handle) {
- setTimeout(runIfPresent, 0, handle);
- };
- }
-
- // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.
- var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);
- attachTo = attachTo && attachTo.setTimeout ? attachTo : global;
-
- // Don't get fooled by e.g. browserify environments.
- if ({}.toString.call(global.process) === "[object process]") {
- // For Node.js before 0.9
- installNextTickImplementation();
-
- } else if (canUsePostMessage()) {
- // For non-IE10 modern browsers
- installPostMessageImplementation();
-
- } else if (global.MessageChannel) {
- // For web workers, where supported
- installMessageChannelImplementation();
-
- } else if (doc && "onreadystatechange" in doc.createElement("script")) {
- // For IE 6–8
- installReadyStateChangeImplementation();
-
- } else {
- // For older browsers
- installSetTimeoutImplementation();
- }
-
- attachTo.setImmediate = setImmediate;
- attachTo.clearImmediate = clearImmediate;
- }(typeof self === "undefined" ? typeof global === "undefined" ? this : global : self));
-
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(24), __webpack_require__(33)))
-
- /***/ }),
- /* 164 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var AsyncScheduler_1 = __webpack_require__(80);
- var AsapScheduler = (function (_super) {
- __extends(AsapScheduler, _super);
- function AsapScheduler() {
- _super.apply(this, arguments);
- }
- AsapScheduler.prototype.flush = function (action) {
- this.active = true;
- this.scheduled = undefined;
- var actions = this.actions;
- var error;
- var index = -1;
- var count = actions.length;
- action = action || actions.shift();
- do {
- if (error = action.execute(action.state, action.delay)) {
- break;
- }
- } while (++index < count && (action = actions.shift()));
- this.active = false;
- if (error) {
- while (++index < count && (action = actions.shift())) {
- action.unsubscribe();
- }
- throw error;
- }
- };
- return AsapScheduler;
- }(AsyncScheduler_1.AsyncScheduler));
- exports.AsapScheduler = AsapScheduler;
- //# sourceMappingURL=AsapScheduler.js.map
-
- /***/ }),
- /* 165 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var filter_1 = __webpack_require__(4);
- var empty_1 = __webpack_require__(16);
- var utils_1 = __webpack_require__(21);
- var of_1 = __webpack_require__(9);
- var withLatestFrom_1 = __webpack_require__(0);
- var mergeMap_1 = __webpack_require__(15);
- var file_reload_effect_1 = __webpack_require__(86);
- var BrowserReload_1 = __webpack_require__(96);
- function incomingFileReload(xs, inputs) {
- return xs.pipe(withLatestFrom_1.withLatestFrom(inputs.option$), filter_1.filter(function (_a) {
- var event = _a[0], options = _a[1];
- return options.codeSync;
- }), mergeMap_1.mergeMap(function (_a) {
- var event = _a[0], options = _a[1];
- if (event.url || !options.injectChanges) {
- return BrowserReload_1.reloadBrowserSafe();
- }
- if (event.basename && event.ext && utils_1.isBlacklisted(event)) {
- return empty_1.empty();
- }
- return of_1.of(file_reload_effect_1.fileReload(event));
- }));
- }
- exports.incomingFileReload = incomingFileReload;
-
-
- /***/ }),
- /* 166 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var pluck_1 = __webpack_require__(6);
- var of_1 = __webpack_require__(9);
- var Log = __webpack_require__(14);
- var withLatestFrom_1 = __webpack_require__(0);
- var mergeMap_1 = __webpack_require__(15);
- var set_options_effect_1 = __webpack_require__(53);
- function incomingConnection(xs, inputs) {
- return xs.pipe(withLatestFrom_1.withLatestFrom(inputs.option$.pipe(pluck_1.pluck("logPrefix"))), mergeMap_1.mergeMap(function (_a) {
- var x = _a[0], logPrefix = _a[1];
- var prefix = logPrefix
- ? logPrefix + ": "
- : '';
- return of_1.of(set_options_effect_1.setOptions(x), Log.overlayInfo(prefix + "connected"));
- }));
- }
- exports.incomingConnection = incomingConnection;
-
-
- /***/ }),
- /* 167 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var ignoreElements_1 = __webpack_require__(11);
- var tap_1 = __webpack_require__(5);
- function incomingDisconnect(xs) {
- return xs.pipe(tap_1.tap(function (x) { return console.log(x); }), ignoreElements_1.ignoreElements());
- }
- exports.incomingDisconnect = incomingDisconnect;
-
-
- /***/ }),
- /* 168 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var map_1 = __webpack_require__(2);
- var set_options_effect_1 = __webpack_require__(53);
- function incomingOptionsSet(xs) {
- return xs.pipe(map_1.map(function (event) { return set_options_effect_1.setOptions(event.options); }));
- }
- exports.incomingOptionsSet = incomingOptionsSet;
-
-
- /***/ }),
- /* 169 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var _a;
- var browser_utils_1 = __webpack_require__(22);
- var effects_1 = __webpack_require__(8);
- var BehaviorSubject_1 = __webpack_require__(13);
- var empty_1 = __webpack_require__(16);
- var of_1 = __webpack_require__(9);
- var Log = __webpack_require__(14);
- var withLatestFrom_1 = __webpack_require__(0);
- var map_1 = __webpack_require__(2);
- var set_window_name_dom_effect_1 = __webpack_require__(84);
- var set_scroll_dom_effect_1 = __webpack_require__(83);
- exports.PREFIX = "<<BS_START>>";
- exports.SUFFIX = "<<BS_START>>";
- exports.regex = new RegExp(exports.PREFIX + "(.+?)" + exports.SUFFIX, "g");
- function parseFromString(input) {
- var match;
- var last;
- while ((match = exports.regex.exec(input))) {
- last = match[1];
- }
- if (last) {
- return JSON.parse(last);
- }
- }
- function initWindowName(window) {
- var saved = (function () {
- /**
- * On page load, check window.name for an existing
- * BS json blob & parse it.
- */
- try {
- return parseFromString(window.name);
- }
- catch (e) {
- return {};
- }
- })();
- /**
- * Remove any existing BS json from window.name
- * to ensure we don't interfere with any other
- * libs who may be using it.
- */
- window.name = window.name.replace(exports.regex, "");
- /**
- * If the JSON was parsed correctly, try to
- * find a scroll property and restore it.
- */
- if (saved && saved.bs && saved.bs.hardReload && saved.bs.scroll) {
- var _a = saved.bs.scroll, x = _a.x, y = _a.y;
- return of_1.of(set_scroll_dom_effect_1.setScroll(x, y), Log.consoleDebug("[ScrollRestore] x = " + x + " y = " + y));
- }
- return empty_1.empty();
- }
- exports.initWindowName = initWindowName;
- exports.scrollRestoreHandlers$ = new BehaviorSubject_1.BehaviorSubject((_a = {},
- // [EffectNames.SetOptions]: (xs, inputs: Inputs) => {
- // return xs.pipe(
- // withLatestFrom(inputs.window$),
- // take(1),
- // mergeMap(([options, window]) => {
- // if (options.scrollRestoreTechnique === "window.name") {
- // return initWindowName(window);
- // }
- // return empty();
- // })
- // );
- // },
- /**
- * Save the current scroll position
- * before the browser is reloaded (via window.location.reload(true))
- * @param xs
- * @param {Inputs} inputs
- */
- _a[effects_1.EffectNames.PreBrowserReload] = function (xs, inputs) {
- return xs.pipe(withLatestFrom_1.withLatestFrom(inputs.window$, inputs.document$), map_1.map(function (_a) {
- var window = _a[1], document = _a[2];
- return [
- window.name,
- exports.PREFIX,
- JSON.stringify({
- bs: {
- hardReload: true,
- scroll: browser_utils_1.getBrowserScrollPosition(window, document)
- }
- }),
- exports.SUFFIX
- ].join("");
- }), map_1.map(function (value) { return set_window_name_dom_effect_1.setWindowName(value); }));
- },
- _a));
-
-
- /***/ }),
- /* 170 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var merge_1 = __webpack_require__(38);
- var form_inputs_listener_1 = __webpack_require__(171);
- var clicks_listener_1 = __webpack_require__(173);
- var scroll_listener_1 = __webpack_require__(174);
- var form_toggles_listener_1 = __webpack_require__(175);
- function initListeners(window, document, socket$, option$) {
- var merged$ = merge_1.merge(scroll_listener_1.getScrollStream(window, document, socket$, option$), clicks_listener_1.getClickStream(document, socket$, option$), form_inputs_listener_1.getFormInputStream(document, socket$, option$), form_toggles_listener_1.getFormTogglesStream(document, socket$, option$));
- return merged$;
- }
- exports.initListeners = initListeners;
-
-
- /***/ }),
- /* 171 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var socket_messages_1 = __webpack_require__(10);
- var browser_utils_1 = __webpack_require__(22);
- var utils_1 = __webpack_require__(21);
- var KeyupEvent = __webpack_require__(95);
- var filter_1 = __webpack_require__(4);
- var withLatestFrom_1 = __webpack_require__(0);
- var map_1 = __webpack_require__(2);
- var pluck_1 = __webpack_require__(6);
- var skip_1 = __webpack_require__(39);
- var distinctUntilChanged_1 = __webpack_require__(40);
- var switchMap_1 = __webpack_require__(20);
- var empty_1 = __webpack_require__(16);
- var fromEvent_1 = __webpack_require__(41);
- function getFormInputStream(document, socket$, option$) {
- var canSync$ = utils_1.createTimedBooleanSwitch(socket$.pipe(filter_1.filter(function (_a) {
- var name = _a[0];
- return name === socket_messages_1.IncomingSocketNames.Keyup;
- })));
- return option$.pipe(skip_1.skip(1), // initial option set before the connection event
- pluck_1.pluck("ghostMode", "forms", "inputs"), distinctUntilChanged_1.distinctUntilChanged(), switchMap_1.switchMap(function (formInputs) {
- if (!formInputs) {
- return empty_1.empty();
- }
- return fromEvent_1.fromEvent(document.body, "keyup", true).pipe(map_1.map(function (e) { return e.target || e.srcElement; }), filter_1.filter(function (target) {
- return target.tagName === "INPUT" ||
- target.tagName === "TEXTAREA";
- }), withLatestFrom_1.withLatestFrom(canSync$), filter_1.filter(function (_a) {
- var canSync = _a[1];
- return canSync;
- }), map_1.map(function (_a) {
- var eventTarget = _a[0];
- var target = browser_utils_1.getElementData(eventTarget);
- var value = eventTarget.value;
- return KeyupEvent.outgoing(target, value);
- }));
- }));
- }
- exports.getFormInputStream = getFormInputStream;
-
-
- /***/ }),
- /* 172 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var Observable_1 = __webpack_require__(1);
- var tryCatch_1 = __webpack_require__(43);
- var isFunction_1 = __webpack_require__(42);
- var errorObject_1 = __webpack_require__(27);
- var Subscription_1 = __webpack_require__(12);
- var toString = Object.prototype.toString;
- function isNodeStyleEventEmitter(sourceObj) {
- return !!sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function';
- }
- function isJQueryStyleEventEmitter(sourceObj) {
- return !!sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function';
- }
- function isNodeList(sourceObj) {
- return !!sourceObj && toString.call(sourceObj) === '[object NodeList]';
- }
- function isHTMLCollection(sourceObj) {
- return !!sourceObj && toString.call(sourceObj) === '[object HTMLCollection]';
- }
- function isEventTarget(sourceObj) {
- return !!sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function';
- }
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @extends {Ignored}
- * @hide true
- */
- var FromEventObservable = (function (_super) {
- __extends(FromEventObservable, _super);
- function FromEventObservable(sourceObj, eventName, selector, options) {
- _super.call(this);
- this.sourceObj = sourceObj;
- this.eventName = eventName;
- this.selector = selector;
- this.options = options;
- }
- /* tslint:enable:max-line-length */
- /**
- * Creates an Observable that emits events of a specific type coming from the
- * given event target.
- *
- * <span class="informal">Creates an Observable from DOM events, or Node.js
- * EventEmitter events or others.</span>
- *
- * <img src="./img/fromEvent.png" width="100%">
- *
- * `fromEvent` accepts as a first argument event target, which is an object with methods
- * for registering event handler functions. As a second argument it takes string that indicates
- * type of event we want to listen for. `fromEvent` supports selected types of event targets,
- * which are described in detail below. If your event target does not match any of the ones listed,
- * you should use {@link fromEventPattern}, which can be used on arbitrary APIs.
- * When it comes to APIs supported by `fromEvent`, their methods for adding and removing event
- * handler functions have different names, but they all accept a string describing event type
- * and function itself, which will be called whenever said event happens.
- *
- * Every time resulting Observable is subscribed, event handler function will be registered
- * to event target on given event type. When that event fires, value
- * passed as a first argument to registered function will be emitted by output Observable.
- * When Observable is unsubscribed, function will be unregistered from event target.
- *
- * Note that if event target calls registered function with more than one argument, second
- * and following arguments will not appear in resulting stream. In order to get access to them,
- * you can pass to `fromEvent` optional project function, which will be called with all arguments
- * passed to event handler. Output Observable will then emit value returned by project function,
- * instead of the usual value.
- *
- * Remember that event targets listed below are checked via duck typing. It means that
- * no matter what kind of object you have and no matter what environment you work in,
- * you can safely use `fromEvent` on that object if it exposes described methods (provided
- * of course they behave as was described above). So for example if Node.js library exposes
- * event target which has the same method names as DOM EventTarget, `fromEvent` is still
- * a good choice.
- *
- * If the API you use is more callback then event handler oriented (subscribed
- * callback function fires only once and thus there is no need to manually
- * unregister it), you should use {@link bindCallback} or {@link bindNodeCallback}
- * instead.
- *
- * `fromEvent` supports following types of event targets:
- *
- * **DOM EventTarget**
- *
- * This is an object with `addEventListener` and `removeEventListener` methods.
- *
- * In the browser, `addEventListener` accepts - apart from event type string and event
- * handler function arguments - optional third parameter, which is either an object or boolean,
- * both used for additional configuration how and when passed function will be called. When
- * `fromEvent` is used with event target of that type, you can provide this values
- * as third parameter as well.
- *
- * **Node.js EventEmitter**
- *
- * An object with `addListener` and `removeListener` methods.
- *
- * **JQuery-style event target**
- *
- * An object with `on` and `off` methods
- *
- * **DOM NodeList**
- *
- * List of DOM Nodes, returned for example by `document.querySelectorAll` or `Node.childNodes`.
- *
- * Although this collection is not event target in itself, `fromEvent` will iterate over all Nodes
- * it contains and install event handler function in every of them. When returned Observable
- * is unsubscribed, function will be removed from all Nodes.
- *
- * **DOM HtmlCollection**
- *
- * Just as in case of NodeList it is a collection of DOM nodes. Here as well event handler function is
- * installed and removed in each of elements.
- *
- *
- * @example <caption>Emits clicks happening on the DOM document</caption>
- * var clicks = Rx.Observable.fromEvent(document, 'click');
- * clicks.subscribe(x => console.log(x));
- *
- * // Results in:
- * // MouseEvent object logged to console every time a click
- * // occurs on the document.
- *
- *
- * @example <caption>Use addEventListener with capture option</caption>
- * var clicksInDocument = Rx.Observable.fromEvent(document, 'click', true); // note optional configuration parameter
- * // which will be passed to addEventListener
- * var clicksInDiv = Rx.Observable.fromEvent(someDivInDocument, 'click');
- *
- * clicksInDocument.subscribe(() => console.log('document'));
- * clicksInDiv.subscribe(() => console.log('div'));
- *
- * // By default events bubble UP in DOM tree, so normally
- * // when we would click on div in document
- * // "div" would be logged first and then "document".
- * // Since we specified optional `capture` option, document
- * // will catch event when it goes DOWN DOM tree, so console
- * // will log "document" and then "div".
- *
- * @see {@link bindCallback}
- * @see {@link bindNodeCallback}
- * @see {@link fromEventPattern}
- *
- * @param {EventTargetLike} target The DOM EventTarget, Node.js
- * EventEmitter, JQuery-like event target, NodeList or HTMLCollection to attach the event handler to.
- * @param {string} eventName The event name of interest, being emitted by the
- * `target`.
- * @param {EventListenerOptions} [options] Options to pass through to addEventListener
- * @param {SelectorMethodSignature<T>} [selector] An optional function to
- * post-process results. It takes the arguments from the event handler and
- * should return a single value.
- * @return {Observable<T>}
- * @static true
- * @name fromEvent
- * @owner Observable
- */
- FromEventObservable.create = function (target, eventName, options, selector) {
- if (isFunction_1.isFunction(options)) {
- selector = options;
- options = undefined;
- }
- return new FromEventObservable(target, eventName, selector, options);
- };
- FromEventObservable.setupSubscription = function (sourceObj, eventName, handler, subscriber, options) {
- var unsubscribe;
- if (isNodeList(sourceObj) || isHTMLCollection(sourceObj)) {
- for (var i = 0, len = sourceObj.length; i < len; i++) {
- FromEventObservable.setupSubscription(sourceObj[i], eventName, handler, subscriber, options);
- }
- }
- else if (isEventTarget(sourceObj)) {
- var source_1 = sourceObj;
- sourceObj.addEventListener(eventName, handler, options);
- unsubscribe = function () { return source_1.removeEventListener(eventName, handler, options); };
- }
- else if (isJQueryStyleEventEmitter(sourceObj)) {
- var source_2 = sourceObj;
- sourceObj.on(eventName, handler);
- unsubscribe = function () { return source_2.off(eventName, handler); };
- }
- else if (isNodeStyleEventEmitter(sourceObj)) {
- var source_3 = sourceObj;
- sourceObj.addListener(eventName, handler);
- unsubscribe = function () { return source_3.removeListener(eventName, handler); };
- }
- else {
- throw new TypeError('Invalid event target');
- }
- subscriber.add(new Subscription_1.Subscription(unsubscribe));
- };
- /** @deprecated internal use only */ FromEventObservable.prototype._subscribe = function (subscriber) {
- var sourceObj = this.sourceObj;
- var eventName = this.eventName;
- var options = this.options;
- var selector = this.selector;
- var handler = selector ? function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i - 0] = arguments[_i];
- }
- var result = tryCatch_1.tryCatch(selector).apply(void 0, args);
- if (result === errorObject_1.errorObject) {
- subscriber.error(errorObject_1.errorObject.e);
- }
- else {
- subscriber.next(result);
- }
- } : function (e) { return subscriber.next(e); };
- FromEventObservable.setupSubscription(sourceObj, eventName, handler, subscriber, options);
- };
- return FromEventObservable;
- }(Observable_1.Observable));
- exports.FromEventObservable = FromEventObservable;
- //# sourceMappingURL=FromEventObservable.js.map
-
- /***/ }),
- /* 173 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var utils_1 = __webpack_require__(21);
- var socket_messages_1 = __webpack_require__(10);
- var browser_utils_1 = __webpack_require__(22);
- var ClickEvent = __webpack_require__(94);
- var withLatestFrom_1 = __webpack_require__(0);
- var filter_1 = __webpack_require__(4);
- var map_1 = __webpack_require__(2);
- var pluck_1 = __webpack_require__(6);
- var skip_1 = __webpack_require__(39);
- var distinctUntilChanged_1 = __webpack_require__(40);
- var switchMap_1 = __webpack_require__(20);
- var fromEvent_1 = __webpack_require__(41);
- var empty_1 = __webpack_require__(16);
- function getClickStream(document, socket$, option$) {
- var canSync$ = utils_1.createTimedBooleanSwitch(socket$.pipe(filter_1.filter(function (_a) {
- var name = _a[0];
- return name === socket_messages_1.IncomingSocketNames.Click;
- })));
- return option$.pipe(skip_1.skip(1), // initial option set before the connection event
- pluck_1.pluck("ghostMode", "clicks"), distinctUntilChanged_1.distinctUntilChanged(), switchMap_1.switchMap(function (canClick) {
- if (!canClick) {
- return empty_1.empty();
- }
- return fromEvent_1.fromEvent(document, "click", true).pipe(map_1.map(function (e) { return e.target; }), filter_1.filter(function (target) {
- if (target.tagName === "LABEL") {
- var id = target.getAttribute("for");
- if (id && document.getElementById(id)) {
- return false;
- }
- }
- return true;
- }), withLatestFrom_1.withLatestFrom(canSync$), filter_1.filter(function (_a) {
- var canSync = _a[1];
- return canSync;
- }), map_1.map(function (_a) {
- var target = _a[0];
- return ClickEvent.outgoing(browser_utils_1.getElementData(target));
- }));
- }));
- }
- exports.getClickStream = getClickStream;
-
-
- /***/ }),
- /* 174 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var utils_1 = __webpack_require__(21);
- var socket_messages_1 = __webpack_require__(10);
- var browser_utils_1 = __webpack_require__(22);
- var ScrollEvent = __webpack_require__(85);
- var filter_1 = __webpack_require__(4);
- var map_1 = __webpack_require__(2);
- var withLatestFrom_1 = __webpack_require__(0);
- var pluck_1 = __webpack_require__(6);
- var distinctUntilChanged_1 = __webpack_require__(40);
- var switchMap_1 = __webpack_require__(20);
- var empty_1 = __webpack_require__(16);
- var skip_1 = __webpack_require__(39);
- var fromEvent_1 = __webpack_require__(41);
- function getScrollStream(window, document, socket$, option$) {
- var canSync$ = utils_1.createTimedBooleanSwitch(socket$.pipe(filter_1.filter(function (_a) {
- var name = _a[0];
- return name === socket_messages_1.IncomingSocketNames.Scroll;
- })));
- /**
- * If the option 'scrollElementMapping' is provided
- * we cache thw
- * @type {Observable<(Element | null)[]>}
- */
- var elemMap$ = option$.pipe(pluck_1.pluck("scrollElementMapping"), map_1.map(function (selectors) {
- return selectors.map(function (selector) { return document.querySelector(selector); });
- }));
- return option$.pipe(skip_1.skip(1), // initial option set before the connection event
- pluck_1.pluck("ghostMode", "scroll"), distinctUntilChanged_1.distinctUntilChanged(), switchMap_1.switchMap(function (scroll) {
- if (!scroll)
- return empty_1.empty();
- return fromEvent_1.fromEvent(document, "scroll", true).pipe(map_1.map(function (e) { return e.target; }), withLatestFrom_1.withLatestFrom(canSync$, elemMap$), filter_1.filter(function (_a) {
- var canSync = _a[1];
- return Boolean(canSync);
- }), map_1.map(function (_a) {
- var target = _a[0], canSync = _a[1], elemMap = _a[2];
- if (target === document) {
- return ScrollEvent.outgoing(browser_utils_1.getScrollPosition(window, document), "document", 0);
- }
- var elems = document.getElementsByTagName(target.tagName);
- var index = Array.prototype.indexOf.call(elems || [], target);
- return ScrollEvent.outgoing(browser_utils_1.getScrollPositionForElement(target), target.tagName, index, elemMap.indexOf(target));
- }));
- }));
- }
- exports.getScrollStream = getScrollStream;
-
-
- /***/ }),
- /* 175 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", { value: true });
- var socket_messages_1 = __webpack_require__(10);
- var browser_utils_1 = __webpack_require__(22);
- var utils_1 = __webpack_require__(21);
- var FormToggleEvent = __webpack_require__(98);
- var filter_1 = __webpack_require__(4);
- var skip_1 = __webpack_require__(39);
- var pluck_1 = __webpack_require__(6);
- var distinctUntilChanged_1 = __webpack_require__(40);
- var withLatestFrom_1 = __webpack_require__(0);
- var map_1 = __webpack_require__(2);
- var switchMap_1 = __webpack_require__(20);
- var empty_1 = __webpack_require__(16);
- var fromEvent_1 = __webpack_require__(41);
- function getFormTogglesStream(document, socket$, option$) {
- var canSync$ = utils_1.createTimedBooleanSwitch(socket$.pipe(filter_1.filter(function (_a) {
- var name = _a[0];
- return name === socket_messages_1.IncomingSocketNames.InputToggle;
- })));
- return option$.pipe(skip_1.skip(1), pluck_1.pluck("ghostMode", "forms", "toggles"), distinctUntilChanged_1.distinctUntilChanged(), switchMap_1.switchMap(function (canToggle) {
- if (!canToggle) {
- return empty_1.empty();
- }
- return fromEvent_1.fromEvent(document, "change", true).pipe(map_1.map(function (e) { return e.target || e.srcElement; }), filter_1.filter(function (elem) { return elem.tagName === "SELECT"; }), withLatestFrom_1.withLatestFrom(canSync$), filter_1.filter(function (_a) {
- var canSync = _a[1];
- return canSync;
- }), map_1.map(function (_a) {
- var elem = _a[0], canSync = _a[1];
- var data = browser_utils_1.getElementData(elem);
- return FormToggleEvent.outgoing(data, {
- type: elem.type,
- checked: elem.checked,
- value: elem.value
- });
- }));
- }));
- }
- exports.getFormTogglesStream = getFormTogglesStream;
-
-
- /***/ }),
- /* 176 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var Subscriber_1 = __webpack_require__(3);
- var Subscription_1 = __webpack_require__(12);
- var Observable_1 = __webpack_require__(1);
- var Subject_1 = __webpack_require__(37);
- var Map_1 = __webpack_require__(177);
- var FastMap_1 = __webpack_require__(179);
- /* tslint:enable:max-line-length */
- /**
- * Groups the items emitted by an Observable according to a specified criterion,
- * and emits these grouped items as `GroupedObservables`, one
- * {@link GroupedObservable} per group.
- *
- * <img src="./img/groupBy.png" width="100%">
- *
- * @example <caption>Group objects by id and return as array</caption>
- * Observable.of<Obj>({id: 1, name: 'aze1'},
- * {id: 2, name: 'sf2'},
- * {id: 2, name: 'dg2'},
- * {id: 1, name: 'erg1'},
- * {id: 1, name: 'df1'},
- * {id: 2, name: 'sfqfb2'},
- * {id: 3, name: 'qfs3'},
- * {id: 2, name: 'qsgqsfg2'}
- * )
- * .groupBy(p => p.id)
- * .flatMap( (group$) => group$.reduce((acc, cur) => [...acc, cur], []))
- * .subscribe(p => console.log(p));
- *
- * // displays:
- * // [ { id: 1, name: 'aze1' },
- * // { id: 1, name: 'erg1' },
- * // { id: 1, name: 'df1' } ]
- * //
- * // [ { id: 2, name: 'sf2' },
- * // { id: 2, name: 'dg2' },
- * // { id: 2, name: 'sfqfb2' },
- * // { id: 2, name: 'qsgqsfg2' } ]
- * //
- * // [ { id: 3, name: 'qfs3' } ]
- *
- * @example <caption>Pivot data on the id field</caption>
- * Observable.of<Obj>({id: 1, name: 'aze1'},
- * {id: 2, name: 'sf2'},
- * {id: 2, name: 'dg2'},
- * {id: 1, name: 'erg1'},
- * {id: 1, name: 'df1'},
- * {id: 2, name: 'sfqfb2'},
- * {id: 3, name: 'qfs1'},
- * {id: 2, name: 'qsgqsfg2'}
- * )
- * .groupBy(p => p.id, p => p.name)
- * .flatMap( (group$) => group$.reduce((acc, cur) => [...acc, cur], ["" + group$.key]))
- * .map(arr => ({'id': parseInt(arr[0]), 'values': arr.slice(1)}))
- * .subscribe(p => console.log(p));
- *
- * // displays:
- * // { id: 1, values: [ 'aze1', 'erg1', 'df1' ] }
- * // { id: 2, values: [ 'sf2', 'dg2', 'sfqfb2', 'qsgqsfg2' ] }
- * // { id: 3, values: [ 'qfs1' ] }
- *
- * @param {function(value: T): K} keySelector A function that extracts the key
- * for each item.
- * @param {function(value: T): R} [elementSelector] A function that extracts the
- * return element for each item.
- * @param {function(grouped: GroupedObservable<K,R>): Observable<any>} [durationSelector]
- * A function that returns an Observable to determine how long each group should
- * exist.
- * @return {Observable<GroupedObservable<K,R>>} An Observable that emits
- * GroupedObservables, each of which corresponds to a unique key value and each
- * of which emits those items from the source Observable that share that key
- * value.
- * @method groupBy
- * @owner Observable
- */
- function groupBy(keySelector, elementSelector, durationSelector, subjectSelector) {
- return function (source) {
- return source.lift(new GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector));
- };
- }
- exports.groupBy = groupBy;
- var GroupByOperator = (function () {
- function GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector) {
- this.keySelector = keySelector;
- this.elementSelector = elementSelector;
- this.durationSelector = durationSelector;
- this.subjectSelector = subjectSelector;
- }
- GroupByOperator.prototype.call = function (subscriber, source) {
- return source.subscribe(new GroupBySubscriber(subscriber, this.keySelector, this.elementSelector, this.durationSelector, this.subjectSelector));
- };
- return GroupByOperator;
- }());
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @ignore
- * @extends {Ignored}
- */
- var GroupBySubscriber = (function (_super) {
- __extends(GroupBySubscriber, _super);
- function GroupBySubscriber(destination, keySelector, elementSelector, durationSelector, subjectSelector) {
- _super.call(this, destination);
- this.keySelector = keySelector;
- this.elementSelector = elementSelector;
- this.durationSelector = durationSelector;
- this.subjectSelector = subjectSelector;
- this.groups = null;
- this.attemptedToUnsubscribe = false;
- this.count = 0;
- }
- GroupBySubscriber.prototype._next = function (value) {
- var key;
- try {
- key = this.keySelector(value);
- }
- catch (err) {
- this.error(err);
- return;
- }
- this._group(value, key);
- };
- GroupBySubscriber.prototype._group = function (value, key) {
- var groups = this.groups;
- if (!groups) {
- groups = this.groups = typeof key === 'string' ? new FastMap_1.FastMap() : new Map_1.Map();
- }
- var group = groups.get(key);
- var element;
- if (this.elementSelector) {
- try {
- element = this.elementSelector(value);
- }
- catch (err) {
- this.error(err);
- }
- }
- else {
- element = value;
- }
- if (!group) {
- group = this.subjectSelector ? this.subjectSelector() : new Subject_1.Subject();
- groups.set(key, group);
- var groupedObservable = new GroupedObservable(key, group, this);
- this.destination.next(groupedObservable);
- if (this.durationSelector) {
- var duration = void 0;
- try {
- duration = this.durationSelector(new GroupedObservable(key, group));
- }
- catch (err) {
- this.error(err);
- return;
- }
- this.add(duration.subscribe(new GroupDurationSubscriber(key, group, this)));
- }
- }
- if (!group.closed) {
- group.next(element);
- }
- };
- GroupBySubscriber.prototype._error = function (err) {
- var groups = this.groups;
- if (groups) {
- groups.forEach(function (group, key) {
- group.error(err);
- });
- groups.clear();
- }
- this.destination.error(err);
- };
- GroupBySubscriber.prototype._complete = function () {
- var groups = this.groups;
- if (groups) {
- groups.forEach(function (group, key) {
- group.complete();
- });
- groups.clear();
- }
- this.destination.complete();
- };
- GroupBySubscriber.prototype.removeGroup = function (key) {
- this.groups.delete(key);
- };
- GroupBySubscriber.prototype.unsubscribe = function () {
- if (!this.closed) {
- this.attemptedToUnsubscribe = true;
- if (this.count === 0) {
- _super.prototype.unsubscribe.call(this);
- }
- }
- };
- return GroupBySubscriber;
- }(Subscriber_1.Subscriber));
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @ignore
- * @extends {Ignored}
- */
- var GroupDurationSubscriber = (function (_super) {
- __extends(GroupDurationSubscriber, _super);
- function GroupDurationSubscriber(key, group, parent) {
- _super.call(this, group);
- this.key = key;
- this.group = group;
- this.parent = parent;
- }
- GroupDurationSubscriber.prototype._next = function (value) {
- this.complete();
- };
- /** @deprecated internal use only */ GroupDurationSubscriber.prototype._unsubscribe = function () {
- var _a = this, parent = _a.parent, key = _a.key;
- this.key = this.parent = null;
- if (parent) {
- parent.removeGroup(key);
- }
- };
- return GroupDurationSubscriber;
- }(Subscriber_1.Subscriber));
- /**
- * An Observable representing values belonging to the same group represented by
- * a common key. The values emitted by a GroupedObservable come from the source
- * Observable. The common key is available as the field `key` on a
- * GroupedObservable instance.
- *
- * @class GroupedObservable<K, T>
- */
- var GroupedObservable = (function (_super) {
- __extends(GroupedObservable, _super);
- function GroupedObservable(key, groupSubject, refCountSubscription) {
- _super.call(this);
- this.key = key;
- this.groupSubject = groupSubject;
- this.refCountSubscription = refCountSubscription;
- }
- /** @deprecated internal use only */ GroupedObservable.prototype._subscribe = function (subscriber) {
- var subscription = new Subscription_1.Subscription();
- var _a = this, refCountSubscription = _a.refCountSubscription, groupSubject = _a.groupSubject;
- if (refCountSubscription && !refCountSubscription.closed) {
- subscription.add(new InnerRefCountSubscription(refCountSubscription));
- }
- subscription.add(groupSubject.subscribe(subscriber));
- return subscription;
- };
- return GroupedObservable;
- }(Observable_1.Observable));
- exports.GroupedObservable = GroupedObservable;
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @ignore
- * @extends {Ignored}
- */
- var InnerRefCountSubscription = (function (_super) {
- __extends(InnerRefCountSubscription, _super);
- function InnerRefCountSubscription(parent) {
- _super.call(this);
- this.parent = parent;
- parent.count++;
- }
- InnerRefCountSubscription.prototype.unsubscribe = function () {
- var parent = this.parent;
- if (!parent.closed && !this.closed) {
- _super.prototype.unsubscribe.call(this);
- parent.count -= 1;
- if (parent.count === 0 && parent.attemptedToUnsubscribe) {
- parent.unsubscribe();
- }
- }
- };
- return InnerRefCountSubscription;
- }(Subscription_1.Subscription));
- //# sourceMappingURL=groupBy.js.map
-
- /***/ }),
- /* 177 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var root_1 = __webpack_require__(7);
- var MapPolyfill_1 = __webpack_require__(178);
- exports.Map = root_1.root.Map || (function () { return MapPolyfill_1.MapPolyfill; })();
- //# sourceMappingURL=Map.js.map
-
- /***/ }),
- /* 178 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var MapPolyfill = (function () {
- function MapPolyfill() {
- this.size = 0;
- this._values = [];
- this._keys = [];
- }
- MapPolyfill.prototype.get = function (key) {
- var i = this._keys.indexOf(key);
- return i === -1 ? undefined : this._values[i];
- };
- MapPolyfill.prototype.set = function (key, value) {
- var i = this._keys.indexOf(key);
- if (i === -1) {
- this._keys.push(key);
- this._values.push(value);
- this.size++;
- }
- else {
- this._values[i] = value;
- }
- return this;
- };
- MapPolyfill.prototype.delete = function (key) {
- var i = this._keys.indexOf(key);
- if (i === -1) {
- return false;
- }
- this._values.splice(i, 1);
- this._keys.splice(i, 1);
- this.size--;
- return true;
- };
- MapPolyfill.prototype.clear = function () {
- this._keys.length = 0;
- this._values.length = 0;
- this.size = 0;
- };
- MapPolyfill.prototype.forEach = function (cb, thisArg) {
- for (var i = 0; i < this.size; i++) {
- cb.call(thisArg, this._values[i], this._keys[i]);
- }
- };
- return MapPolyfill;
- }());
- exports.MapPolyfill = MapPolyfill;
- //# sourceMappingURL=MapPolyfill.js.map
-
- /***/ }),
- /* 179 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
- var FastMap = (function () {
- function FastMap() {
- this.values = {};
- }
- FastMap.prototype.delete = function (key) {
- this.values[key] = null;
- return true;
- };
- FastMap.prototype.set = function (key, value) {
- this.values[key] = value;
- return this;
- };
- FastMap.prototype.get = function (key) {
- return this.values[key];
- };
- FastMap.prototype.forEach = function (cb, thisArg) {
- var values = this.values;
- for (var key in values) {
- if (values.hasOwnProperty(key) && values[key] !== null) {
- cb.call(thisArg, values[key], key);
- }
- }
- };
- FastMap.prototype.clear = function () {
- this.values = {};
- };
- return FastMap;
- }());
- exports.FastMap = FastMap;
- //# sourceMappingURL=FastMap.js.map
-
- /***/ })
- /******/ ]);
|