1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678 |
- var SubscriptionsTransportWs =
- /******/ (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;
- /******/ // identity function for calling harmony imports with the correct context
- /******/ __webpack_require__.i = function(value) { return value; };
- /******/ // 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 = 9);
- /******/ })
- /************************************************************************/
- /******/ ([
- /* 0 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var printer_1 = __webpack_require__(8);
- function addGraphQLSubscriptions(networkInterface, wsClient) {
- return Object.assign(networkInterface, {
- subscribe: function (request, handler) {
- return wsClient.subscribe({
- query: printer_1.print(request.query),
- variables: request.variables,
- }, handler);
- },
- unsubscribe: function (id) {
- wsClient.unsubscribe(id);
- },
- });
- }
- exports.addGraphQLSubscriptions = addGraphQLSubscriptions;
- //# sourceMappingURL=helpers.js.map
- /***/ }),
- /* 1 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var SUBSCRIPTION_FAIL = 'subscription_fail';
- exports.SUBSCRIPTION_FAIL = SUBSCRIPTION_FAIL;
- var SUBSCRIPTION_END = 'subscription_end';
- exports.SUBSCRIPTION_END = SUBSCRIPTION_END;
- var SUBSCRIPTION_DATA = 'subscription_data';
- exports.SUBSCRIPTION_DATA = SUBSCRIPTION_DATA;
- var SUBSCRIPTION_START = 'subscription_start';
- exports.SUBSCRIPTION_START = SUBSCRIPTION_START;
- var SUBSCRIPTION_SUCCESS = 'subscription_success';
- exports.SUBSCRIPTION_SUCCESS = SUBSCRIPTION_SUCCESS;
- var KEEPALIVE = 'keepalive';
- exports.KEEPALIVE = KEEPALIVE;
- var INIT = 'init';
- exports.INIT = INIT;
- var INIT_SUCCESS = 'init_success';
- exports.INIT_SUCCESS = INIT_SUCCESS;
- var INIT_FAIL = 'init_fail';
- exports.INIT_FAIL = INIT_FAIL;
- //# sourceMappingURL=messageTypes.js.map
- /***/ }),
- /* 2 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var GRAPHQL_SUBSCRIPTIONS = 'graphql-subscriptions';
- exports.GRAPHQL_SUBSCRIPTIONS = GRAPHQL_SUBSCRIPTIONS;
- //# sourceMappingURL=protocols.js.map
- /***/ }),
- /* 3 */
- /***/ (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;
- };
- /***/ }),
- /* 4 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- var has = Object.prototype.hasOwnProperty
- , prefix = '~';
- /**
- * Constructor to create a storage for our `EE` objects.
- * An `Events` instance is a plain object whose properties are event names.
- *
- * @constructor
- * @api private
- */
- function Events() {}
- //
- // We try to not inherit from `Object.prototype`. In some engines creating an
- // instance in this way is faster than calling `Object.create(null)` directly.
- // If `Object.create(null)` is not supported we prefix the event names with a
- // character to make sure that the built-in object properties are not
- // overridden or used as an attack vector.
- //
- if (Object.create) {
- Events.prototype = Object.create(null);
- //
- // This hack is needed because the `__proto__` property is still inherited in
- // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.
- //
- if (!new Events().__proto__) prefix = false;
- }
- /**
- * Representation of a single event listener.
- *
- * @param {Function} fn The listener function.
- * @param {Mixed} context The context to invoke the listener with.
- * @param {Boolean} [once=false] Specify if the listener is a one-time listener.
- * @constructor
- * @api private
- */
- function EE(fn, context, once) {
- this.fn = fn;
- this.context = context;
- this.once = once || false;
- }
- /**
- * Minimal `EventEmitter` interface that is molded against the Node.js
- * `EventEmitter` interface.
- *
- * @constructor
- * @api public
- */
- function EventEmitter() {
- this._events = new Events();
- this._eventsCount = 0;
- }
- /**
- * Return an array listing the events for which the emitter has registered
- * listeners.
- *
- * @returns {Array}
- * @api public
- */
- EventEmitter.prototype.eventNames = function eventNames() {
- var names = []
- , events
- , name;
- if (this._eventsCount === 0) return names;
- for (name in (events = this._events)) {
- if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);
- }
- if (Object.getOwnPropertySymbols) {
- return names.concat(Object.getOwnPropertySymbols(events));
- }
- return names;
- };
- /**
- * Return the listeners registered for a given event.
- *
- * @param {String|Symbol} event The event name.
- * @param {Boolean} exists Only check if there are listeners.
- * @returns {Array|Boolean}
- * @api public
- */
- EventEmitter.prototype.listeners = function listeners(event, exists) {
- var evt = prefix ? prefix + event : event
- , available = this._events[evt];
- if (exists) return !!available;
- if (!available) return [];
- if (available.fn) return [available.fn];
- for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {
- ee[i] = available[i].fn;
- }
- return ee;
- };
- /**
- * Calls each of the listeners registered for a given event.
- *
- * @param {String|Symbol} event The event name.
- * @returns {Boolean} `true` if the event had listeners, else `false`.
- * @api public
- */
- EventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {
- var evt = prefix ? prefix + event : event;
- if (!this._events[evt]) return false;
- var listeners = this._events[evt]
- , len = arguments.length
- , args
- , i;
- if (listeners.fn) {
- if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);
- switch (len) {
- case 1: return listeners.fn.call(listeners.context), true;
- case 2: return listeners.fn.call(listeners.context, a1), true;
- case 3: return listeners.fn.call(listeners.context, a1, a2), true;
- case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;
- case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;
- case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;
- }
- for (i = 1, args = new Array(len -1); i < len; i++) {
- args[i - 1] = arguments[i];
- }
- listeners.fn.apply(listeners.context, args);
- } else {
- var length = listeners.length
- , j;
- for (i = 0; i < length; i++) {
- if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);
- switch (len) {
- case 1: listeners[i].fn.call(listeners[i].context); break;
- case 2: listeners[i].fn.call(listeners[i].context, a1); break;
- case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;
- case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;
- default:
- if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {
- args[j - 1] = arguments[j];
- }
- listeners[i].fn.apply(listeners[i].context, args);
- }
- }
- }
- return true;
- };
- /**
- * Add a listener for a given event.
- *
- * @param {String|Symbol} event The event name.
- * @param {Function} fn The listener function.
- * @param {Mixed} [context=this] The context to invoke the listener with.
- * @returns {EventEmitter} `this`.
- * @api public
- */
- EventEmitter.prototype.on = function on(event, fn, context) {
- var listener = new EE(fn, context || this)
- , evt = prefix ? prefix + event : event;
- if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;
- else if (!this._events[evt].fn) this._events[evt].push(listener);
- else this._events[evt] = [this._events[evt], listener];
- return this;
- };
- /**
- * Add a one-time listener for a given event.
- *
- * @param {String|Symbol} event The event name.
- * @param {Function} fn The listener function.
- * @param {Mixed} [context=this] The context to invoke the listener with.
- * @returns {EventEmitter} `this`.
- * @api public
- */
- EventEmitter.prototype.once = function once(event, fn, context) {
- var listener = new EE(fn, context || this, true)
- , evt = prefix ? prefix + event : event;
- if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;
- else if (!this._events[evt].fn) this._events[evt].push(listener);
- else this._events[evt] = [this._events[evt], listener];
- return this;
- };
- /**
- * Remove the listeners of a given event.
- *
- * @param {String|Symbol} event The event name.
- * @param {Function} fn Only remove the listeners that match this function.
- * @param {Mixed} context Only remove the listeners that have this context.
- * @param {Boolean} once Only remove one-time listeners.
- * @returns {EventEmitter} `this`.
- * @api public
- */
- EventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {
- var evt = prefix ? prefix + event : event;
- if (!this._events[evt]) return this;
- if (!fn) {
- if (--this._eventsCount === 0) this._events = new Events();
- else delete this._events[evt];
- return this;
- }
- var listeners = this._events[evt];
- if (listeners.fn) {
- if (
- listeners.fn === fn
- && (!once || listeners.once)
- && (!context || listeners.context === context)
- ) {
- if (--this._eventsCount === 0) this._events = new Events();
- else delete this._events[evt];
- }
- } else {
- for (var i = 0, events = [], length = listeners.length; i < length; i++) {
- if (
- listeners[i].fn !== fn
- || (once && !listeners[i].once)
- || (context && listeners[i].context !== context)
- ) {
- events.push(listeners[i]);
- }
- }
- //
- // Reset the array, or remove it completely if we have no more listeners.
- //
- if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;
- else if (--this._eventsCount === 0) this._events = new Events();
- else delete this._events[evt];
- }
- return this;
- };
- /**
- * Remove all listeners, or those of the specified event.
- *
- * @param {String|Symbol} [event] The event name.
- * @returns {EventEmitter} `this`.
- * @api public
- */
- EventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {
- var evt;
- if (event) {
- evt = prefix ? prefix + event : event;
- if (this._events[evt]) {
- if (--this._eventsCount === 0) this._events = new Events();
- else delete this._events[evt];
- }
- } else {
- this._events = new Events();
- this._eventsCount = 0;
- }
- return this;
- };
- //
- // Alias methods names because people roll like that.
- //
- EventEmitter.prototype.off = EventEmitter.prototype.removeListener;
- EventEmitter.prototype.addListener = EventEmitter.prototype.on;
- //
- // This function doesn't apply anymore.
- //
- EventEmitter.prototype.setMaxListeners = function setMaxListeners() {
- return this;
- };
- //
- // Expose the prefix.
- //
- EventEmitter.prefixed = prefix;
- //
- // Allow `EventEmitter` to be imported as module namespace.
- //
- EventEmitter.EventEmitter = EventEmitter;
- //
- // Expose the module.
- //
- if (true) {
- module.exports = EventEmitter;
- }
- /***/ }),
- /* 5 */
- /***/ (function(module, exports) {
- /**
- * lodash 3.0.2 (Custom Build) <https://lodash.com/>
- * Build: `lodash modern modularize exports="npm" -o ./`
- * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
- * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- * Available under MIT license <https://lodash.com/license>
- */
- /**
- * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.
- * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
- *
- * @static
- * @memberOf _
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
- * @example
- *
- * _.isObject({});
- * // => true
- *
- * _.isObject([1, 2, 3]);
- * // => true
- *
- * _.isObject(1);
- * // => false
- */
- function isObject(value) {
- // Avoid a V8 JIT bug in Chrome 19-20.
- // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.
- var type = typeof value;
- return !!value && (type == 'object' || type == 'function');
- }
- module.exports = isObject;
- /***/ }),
- /* 6 */
- /***/ (function(module, exports) {
- /**
- * lodash 4.0.1 (Custom Build) <https://lodash.com/>
- * Build: `lodash modularize exports="npm" -o ./`
- * Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
- * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- * Available under MIT license <https://lodash.com/license>
- */
- /** `Object#toString` result references. */
- var stringTag = '[object String]';
- /** Used for built-in method references. */
- var objectProto = Object.prototype;
- /**
- * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
- * of values.
- */
- var objectToString = objectProto.toString;
- /**
- * Checks if `value` is classified as an `Array` object.
- *
- * @static
- * @memberOf _
- * @type Function
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
- * @example
- *
- * _.isArray([1, 2, 3]);
- * // => true
- *
- * _.isArray(document.body.children);
- * // => false
- *
- * _.isArray('abc');
- * // => false
- *
- * _.isArray(_.noop);
- * // => false
- */
- var isArray = Array.isArray;
- /**
- * Checks if `value` is object-like. A value is object-like if it's not `null`
- * and has a `typeof` result of "object".
- *
- * @static
- * @memberOf _
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
- * @example
- *
- * _.isObjectLike({});
- * // => true
- *
- * _.isObjectLike([1, 2, 3]);
- * // => true
- *
- * _.isObjectLike(_.noop);
- * // => false
- *
- * _.isObjectLike(null);
- * // => false
- */
- function isObjectLike(value) {
- return !!value && typeof value == 'object';
- }
- /**
- * Checks if `value` is classified as a `String` primitive or object.
- *
- * @static
- * @memberOf _
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
- * @example
- *
- * _.isString('abc');
- * // => true
- *
- * _.isString(1);
- * // => false
- */
- function isString(value) {
- return typeof value == 'string' ||
- (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);
- }
- module.exports = isString;
- /***/ }),
- /* 7 */
- /***/ (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;
- /***/ }),
- /* 8 */
- /***/ (function(module, exports) {
- module.exports =
- /******/ (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] = {
- /******/ exports: {},
- /******/ id: moduleId,
- /******/ loaded: false
- /******/ };
- /******/ // Execute the module function
- /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
- /******/ // Flag the module as loaded
- /******/ module.loaded = 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;
- /******/ // __webpack_public_path__
- /******/ __webpack_require__.p = "";
- /******/ // Load entry module and return exports
- /******/ return __webpack_require__(0);
- /******/ })
- /************************************************************************/
- /******/ ([
- /* 0 */
- /***/ function(module, exports, __webpack_require__) {
- module.exports = __webpack_require__(1);
- /***/ },
- /* 1 */
- /***/ function(module, exports, __webpack_require__) {
- 'use strict';
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.print = print;
- var _visitor = __webpack_require__(2);
- /**
- * Converts an AST into a string, using one set of reasonable
- * formatting rules.
- */
- function print(ast) {
- return (0, _visitor.visit)(ast, { leave: printDocASTReducer });
- } /**
- * Copyright (c) 2015, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- */
- var printDocASTReducer = {
- Name: function Name(node) {
- return node.value;
- },
- Variable: function Variable(node) {
- return '$' + node.name;
- },
- // Document
- Document: function Document(node) {
- return join(node.definitions, '\n\n') + '\n';
- },
- OperationDefinition: function OperationDefinition(node) {
- var op = node.operation;
- var name = node.name;
- var varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');
- var directives = join(node.directives, ' ');
- var selectionSet = node.selectionSet;
- // Anonymous queries with no directives or variable definitions can use
- // the query short form.
- return !name && !directives && !varDefs && op === 'query' ? selectionSet : join([op, join([name, varDefs]), directives, selectionSet], ' ');
- },
- VariableDefinition: function VariableDefinition(_ref) {
- var variable = _ref.variable;
- var type = _ref.type;
- var defaultValue = _ref.defaultValue;
- return variable + ': ' + type + wrap(' = ', defaultValue);
- },
- SelectionSet: function SelectionSet(_ref2) {
- var selections = _ref2.selections;
- return block(selections);
- },
- Field: function Field(_ref3) {
- var alias = _ref3.alias;
- var name = _ref3.name;
- var args = _ref3.arguments;
- var directives = _ref3.directives;
- var selectionSet = _ref3.selectionSet;
- return join([wrap('', alias, ': ') + name + wrap('(', join(args, ', '), ')'), join(directives, ' '), selectionSet], ' ');
- },
- Argument: function Argument(_ref4) {
- var name = _ref4.name;
- var value = _ref4.value;
- return name + ': ' + value;
- },
- // Fragments
- FragmentSpread: function FragmentSpread(_ref5) {
- var name = _ref5.name;
- var directives = _ref5.directives;
- return '...' + name + wrap(' ', join(directives, ' '));
- },
- InlineFragment: function InlineFragment(_ref6) {
- var typeCondition = _ref6.typeCondition;
- var directives = _ref6.directives;
- var selectionSet = _ref6.selectionSet;
- return join(['...', wrap('on ', typeCondition), join(directives, ' '), selectionSet], ' ');
- },
- FragmentDefinition: function FragmentDefinition(_ref7) {
- var name = _ref7.name;
- var typeCondition = _ref7.typeCondition;
- var directives = _ref7.directives;
- var selectionSet = _ref7.selectionSet;
- return 'fragment ' + name + ' on ' + typeCondition + ' ' + wrap('', join(directives, ' '), ' ') + selectionSet;
- },
- // Value
- IntValue: function IntValue(_ref8) {
- var value = _ref8.value;
- return value;
- },
- FloatValue: function FloatValue(_ref9) {
- var value = _ref9.value;
- return value;
- },
- StringValue: function StringValue(_ref10) {
- var value = _ref10.value;
- return JSON.stringify(value);
- },
- BooleanValue: function BooleanValue(_ref11) {
- var value = _ref11.value;
- return JSON.stringify(value);
- },
- EnumValue: function EnumValue(_ref12) {
- var value = _ref12.value;
- return value;
- },
- ListValue: function ListValue(_ref13) {
- var values = _ref13.values;
- return '[' + join(values, ', ') + ']';
- },
- ObjectValue: function ObjectValue(_ref14) {
- var fields = _ref14.fields;
- return '{' + join(fields, ', ') + '}';
- },
- ObjectField: function ObjectField(_ref15) {
- var name = _ref15.name;
- var value = _ref15.value;
- return name + ': ' + value;
- },
- // Directive
- Directive: function Directive(_ref16) {
- var name = _ref16.name;
- var args = _ref16.arguments;
- return '@' + name + wrap('(', join(args, ', '), ')');
- },
- // Type
- NamedType: function NamedType(_ref17) {
- var name = _ref17.name;
- return name;
- },
- ListType: function ListType(_ref18) {
- var type = _ref18.type;
- return '[' + type + ']';
- },
- NonNullType: function NonNullType(_ref19) {
- var type = _ref19.type;
- return type + '!';
- },
- // Type System Definitions
- SchemaDefinition: function SchemaDefinition(_ref20) {
- var directives = _ref20.directives;
- var operationTypes = _ref20.operationTypes;
- return join(['schema', join(directives, ' '), block(operationTypes)], ' ');
- },
- OperationTypeDefinition: function OperationTypeDefinition(_ref21) {
- var operation = _ref21.operation;
- var type = _ref21.type;
- return operation + ': ' + type;
- },
- ScalarTypeDefinition: function ScalarTypeDefinition(_ref22) {
- var name = _ref22.name;
- var directives = _ref22.directives;
- return join(['scalar', name, join(directives, ' ')], ' ');
- },
- ObjectTypeDefinition: function ObjectTypeDefinition(_ref23) {
- var name = _ref23.name;
- var interfaces = _ref23.interfaces;
- var directives = _ref23.directives;
- var fields = _ref23.fields;
- return join(['type', name, wrap('implements ', join(interfaces, ', ')), join(directives, ' '), block(fields)], ' ');
- },
- FieldDefinition: function FieldDefinition(_ref24) {
- var name = _ref24.name;
- var args = _ref24.arguments;
- var type = _ref24.type;
- var directives = _ref24.directives;
- return name + wrap('(', join(args, ', '), ')') + ': ' + type + wrap(' ', join(directives, ' '));
- },
- InputValueDefinition: function InputValueDefinition(_ref25) {
- var name = _ref25.name;
- var type = _ref25.type;
- var defaultValue = _ref25.defaultValue;
- var directives = _ref25.directives;
- return join([name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')], ' ');
- },
- InterfaceTypeDefinition: function InterfaceTypeDefinition(_ref26) {
- var name = _ref26.name;
- var directives = _ref26.directives;
- var fields = _ref26.fields;
- return join(['interface', name, join(directives, ' '), block(fields)], ' ');
- },
- UnionTypeDefinition: function UnionTypeDefinition(_ref27) {
- var name = _ref27.name;
- var directives = _ref27.directives;
- var types = _ref27.types;
- return join(['union', name, join(directives, ' '), '= ' + join(types, ' | ')], ' ');
- },
- EnumTypeDefinition: function EnumTypeDefinition(_ref28) {
- var name = _ref28.name;
- var directives = _ref28.directives;
- var values = _ref28.values;
- return join(['enum', name, join(directives, ' '), block(values)], ' ');
- },
- EnumValueDefinition: function EnumValueDefinition(_ref29) {
- var name = _ref29.name;
- var directives = _ref29.directives;
- return join([name, join(directives, ' ')], ' ');
- },
- InputObjectTypeDefinition: function InputObjectTypeDefinition(_ref30) {
- var name = _ref30.name;
- var directives = _ref30.directives;
- var fields = _ref30.fields;
- return join(['input', name, join(directives, ' '), block(fields)], ' ');
- },
- TypeExtensionDefinition: function TypeExtensionDefinition(_ref31) {
- var definition = _ref31.definition;
- return 'extend ' + definition;
- },
- DirectiveDefinition: function DirectiveDefinition(_ref32) {
- var name = _ref32.name;
- var args = _ref32.arguments;
- var locations = _ref32.locations;
- return 'directive @' + name + wrap('(', join(args, ', '), ')') + ' on ' + join(locations, ' | ');
- }
- };
- /**
- * Given maybeArray, print an empty string if it is null or empty, otherwise
- * print all items together separated by separator if provided
- */
- function join(maybeArray, separator) {
- return maybeArray ? maybeArray.filter(function (x) {
- return x;
- }).join(separator || '') : '';
- }
- /**
- * Given array, print each item on its own line, wrapped in an
- * indented "{ }" block.
- */
- function block(array) {
- return array && array.length !== 0 ? indent('{\n' + join(array, '\n')) + '\n}' : '{}';
- }
- /**
- * If maybeString is not null or empty, then wrap with start and end, otherwise
- * print an empty string.
- */
- function wrap(start, maybeString, end) {
- return maybeString ? start + maybeString + (end || '') : '';
- }
- function indent(maybeString) {
- return maybeString && maybeString.replace(/\n/g, '\n ');
- }
- /***/ },
- /* 2 */
- /***/ function(module, exports) {
- 'use strict';
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.visit = visit;
- exports.visitInParallel = visitInParallel;
- exports.visitWithTypeInfo = visitWithTypeInfo;
- /**
- * Copyright (c) 2015, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- */
- var QueryDocumentKeys = exports.QueryDocumentKeys = {
- Name: [],
- Document: ['definitions'],
- OperationDefinition: ['name', 'variableDefinitions', 'directives', 'selectionSet'],
- VariableDefinition: ['variable', 'type', 'defaultValue'],
- Variable: ['name'],
- SelectionSet: ['selections'],
- Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],
- Argument: ['name', 'value'],
- FragmentSpread: ['name', 'directives'],
- InlineFragment: ['typeCondition', 'directives', 'selectionSet'],
- FragmentDefinition: ['name', 'typeCondition', 'directives', 'selectionSet'],
- IntValue: [],
- FloatValue: [],
- StringValue: [],
- BooleanValue: [],
- EnumValue: [],
- ListValue: ['values'],
- ObjectValue: ['fields'],
- ObjectField: ['name', 'value'],
- Directive: ['name', 'arguments'],
- NamedType: ['name'],
- ListType: ['type'],
- NonNullType: ['type'],
- SchemaDefinition: ['directives', 'operationTypes'],
- OperationTypeDefinition: ['type'],
- ScalarTypeDefinition: ['name', 'directives'],
- ObjectTypeDefinition: ['name', 'interfaces', 'directives', 'fields'],
- FieldDefinition: ['name', 'arguments', 'type', 'directives'],
- InputValueDefinition: ['name', 'type', 'defaultValue', 'directives'],
- InterfaceTypeDefinition: ['name', 'directives', 'fields'],
- UnionTypeDefinition: ['name', 'directives', 'types'],
- EnumTypeDefinition: ['name', 'directives', 'values'],
- EnumValueDefinition: ['name', 'directives'],
- InputObjectTypeDefinition: ['name', 'directives', 'fields'],
- TypeExtensionDefinition: ['definition'],
- DirectiveDefinition: ['name', 'arguments', 'locations']
- };
- var BREAK = exports.BREAK = {};
- /**
- * visit() will walk through an AST using a depth first traversal, calling
- * the visitor's enter function at each node in the traversal, and calling the
- * leave function after visiting that node and all of its child nodes.
- *
- * By returning different values from the enter and leave functions, the
- * behavior of the visitor can be altered, including skipping over a sub-tree of
- * the AST (by returning false), editing the AST by returning a value or null
- * to remove the value, or to stop the whole traversal by returning BREAK.
- *
- * When using visit() to edit an AST, the original AST will not be modified, and
- * a new version of the AST with the changes applied will be returned from the
- * visit function.
- *
- * const editedAST = visit(ast, {
- * enter(node, key, parent, path, ancestors) {
- * // @return
- * // undefined: no action
- * // false: skip visiting this node
- * // visitor.BREAK: stop visiting altogether
- * // null: delete this node
- * // any value: replace this node with the returned value
- * },
- * leave(node, key, parent, path, ancestors) {
- * // @return
- * // undefined: no action
- * // false: no action
- * // visitor.BREAK: stop visiting altogether
- * // null: delete this node
- * // any value: replace this node with the returned value
- * }
- * });
- *
- * Alternatively to providing enter() and leave() functions, a visitor can
- * instead provide functions named the same as the kinds of AST nodes, or
- * enter/leave visitors at a named key, leading to four permutations of
- * visitor API:
- *
- * 1) Named visitors triggered when entering a node a specific kind.
- *
- * visit(ast, {
- * Kind(node) {
- * // enter the "Kind" node
- * }
- * })
- *
- * 2) Named visitors that trigger upon entering and leaving a node of
- * a specific kind.
- *
- * visit(ast, {
- * Kind: {
- * enter(node) {
- * // enter the "Kind" node
- * }
- * leave(node) {
- * // leave the "Kind" node
- * }
- * }
- * })
- *
- * 3) Generic visitors that trigger upon entering and leaving any node.
- *
- * visit(ast, {
- * enter(node) {
- * // enter any node
- * },
- * leave(node) {
- * // leave any node
- * }
- * })
- *
- * 4) Parallel visitors for entering and leaving nodes of a specific kind.
- *
- * visit(ast, {
- * enter: {
- * Kind(node) {
- * // enter the "Kind" node
- * }
- * },
- * leave: {
- * Kind(node) {
- * // leave the "Kind" node
- * }
- * }
- * })
- */
- function visit(root, visitor, keyMap) {
- var visitorKeys = keyMap || QueryDocumentKeys;
- var stack = void 0;
- var inArray = Array.isArray(root);
- var keys = [root];
- var index = -1;
- var edits = [];
- var parent = void 0;
- var path = [];
- var ancestors = [];
- var newRoot = root;
- do {
- index++;
- var isLeaving = index === keys.length;
- var key = void 0;
- var node = void 0;
- var isEdited = isLeaving && edits.length !== 0;
- if (isLeaving) {
- key = ancestors.length === 0 ? undefined : path.pop();
- node = parent;
- parent = ancestors.pop();
- if (isEdited) {
- if (inArray) {
- node = node.slice();
- } else {
- var clone = {};
- for (var k in node) {
- if (node.hasOwnProperty(k)) {
- clone[k] = node[k];
- }
- }
- node = clone;
- }
- var editOffset = 0;
- for (var ii = 0; ii < edits.length; ii++) {
- var editKey = edits[ii][0];
- var editValue = edits[ii][1];
- if (inArray) {
- editKey -= editOffset;
- }
- if (inArray && editValue === null) {
- node.splice(editKey, 1);
- editOffset++;
- } else {
- node[editKey] = editValue;
- }
- }
- }
- index = stack.index;
- keys = stack.keys;
- edits = stack.edits;
- inArray = stack.inArray;
- stack = stack.prev;
- } else {
- key = parent ? inArray ? index : keys[index] : undefined;
- node = parent ? parent[key] : newRoot;
- if (node === null || node === undefined) {
- continue;
- }
- if (parent) {
- path.push(key);
- }
- }
- var result = void 0;
- if (!Array.isArray(node)) {
- if (!isNode(node)) {
- throw new Error('Invalid AST Node: ' + JSON.stringify(node));
- }
- var visitFn = getVisitFn(visitor, node.kind, isLeaving);
- if (visitFn) {
- result = visitFn.call(visitor, node, key, parent, path, ancestors);
- if (result === BREAK) {
- break;
- }
- if (result === false) {
- if (!isLeaving) {
- path.pop();
- continue;
- }
- } else if (result !== undefined) {
- edits.push([key, result]);
- if (!isLeaving) {
- if (isNode(result)) {
- node = result;
- } else {
- path.pop();
- continue;
- }
- }
- }
- }
- }
- if (result === undefined && isEdited) {
- edits.push([key, node]);
- }
- if (!isLeaving) {
- stack = { inArray: inArray, index: index, keys: keys, edits: edits, prev: stack };
- inArray = Array.isArray(node);
- keys = inArray ? node : visitorKeys[node.kind] || [];
- index = -1;
- edits = [];
- if (parent) {
- ancestors.push(parent);
- }
- parent = node;
- }
- } while (stack !== undefined);
- if (edits.length !== 0) {
- newRoot = edits[edits.length - 1][1];
- }
- return newRoot;
- }
- function isNode(maybeNode) {
- return maybeNode && typeof maybeNode.kind === 'string';
- }
- /**
- * Creates a new visitor instance which delegates to many visitors to run in
- * parallel. Each visitor will be visited for each node before moving on.
- *
- * If a prior visitor edits a node, no following visitors will see that node.
- */
- function visitInParallel(visitors) {
- var skipping = new Array(visitors.length);
- return {
- enter: function enter(node) {
- for (var i = 0; i < visitors.length; i++) {
- if (!skipping[i]) {
- var fn = getVisitFn(visitors[i], node.kind, /* isLeaving */false);
- if (fn) {
- var result = fn.apply(visitors[i], arguments);
- if (result === false) {
- skipping[i] = node;
- } else if (result === BREAK) {
- skipping[i] = BREAK;
- } else if (result !== undefined) {
- return result;
- }
- }
- }
- }
- },
- leave: function leave(node) {
- for (var i = 0; i < visitors.length; i++) {
- if (!skipping[i]) {
- var fn = getVisitFn(visitors[i], node.kind, /* isLeaving */true);
- if (fn) {
- var result = fn.apply(visitors[i], arguments);
- if (result === BREAK) {
- skipping[i] = BREAK;
- } else if (result !== undefined && result !== false) {
- return result;
- }
- }
- } else if (skipping[i] === node) {
- skipping[i] = null;
- }
- }
- }
- };
- }
- /**
- * Creates a new visitor instance which maintains a provided TypeInfo instance
- * along with visiting visitor.
- */
- function visitWithTypeInfo(typeInfo, visitor) {
- return {
- enter: function enter(node) {
- typeInfo.enter(node);
- var fn = getVisitFn(visitor, node.kind, /* isLeaving */false);
- if (fn) {
- var result = fn.apply(visitor, arguments);
- if (result !== undefined) {
- typeInfo.leave(node);
- if (isNode(result)) {
- typeInfo.enter(result);
- }
- }
- return result;
- }
- },
- leave: function leave(node) {
- var fn = getVisitFn(visitor, node.kind, /* isLeaving */true);
- var result = void 0;
- if (fn) {
- result = fn.apply(visitor, arguments);
- }
- typeInfo.leave(node);
- return result;
- }
- };
- }
- /**
- * Given a visitor instance, if it is leaving or not, and a node kind, return
- * the function the visitor runtime should call.
- */
- function getVisitFn(visitor, kind, isLeaving) {
- var kindVisitor = visitor[kind];
- if (kindVisitor) {
- if (!isLeaving && typeof kindVisitor === 'function') {
- // { Kind() {} }
- return kindVisitor;
- }
- var kindSpecificVisitor = isLeaving ? kindVisitor.leave : kindVisitor.enter;
- if (typeof kindSpecificVisitor === 'function') {
- // { Kind: { enter() {}, leave() {} } }
- return kindSpecificVisitor;
- }
- } else {
- var specificVisitor = isLeaving ? visitor.leave : visitor.enter;
- if (specificVisitor) {
- if (typeof specificVisitor === 'function') {
- // { enter() {}, leave() {} }
- return specificVisitor;
- }
- var specificKindVisitor = specificVisitor[kind];
- if (typeof specificKindVisitor === 'function') {
- // { enter: { Kind() {} }, leave: { Kind() {} } }
- return specificKindVisitor;
- }
- }
- }
- }
- /***/ }
- /******/ ]);
- /***/ }),
- /* 9 */
- /***/ (function(module, exports, __webpack_require__) {
- "use strict";
- /* WEBPACK VAR INJECTION */(function(global) {
- function __export(m) {
- for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
- }
- var Backoff = __webpack_require__(3);
- var eventemitter3_1 = __webpack_require__(4);
- var _global = typeof global !== 'undefined' ? global : (typeof window !== 'undefined' ? window : {});
- var NativeWebSocket = _global.WebSocket || _global.MozWebSocket;
- var messageTypes_1 = __webpack_require__(1);
- var protocols_1 = __webpack_require__(2);
- var isString = __webpack_require__(6);
- var isObject = __webpack_require__(5);
- __export(__webpack_require__(0));
- var DEFAULT_SUBSCRIPTION_TIMEOUT = 5000;
- var SubscriptionClient = (function () {
- function SubscriptionClient(url, options, webSocketImpl) {
- var _a = (options || {}), _b = _a.connectionCallback, connectionCallback = _b === void 0 ? undefined : _b, _c = _a.connectionParams, connectionParams = _c === void 0 ? {} : _c, _d = _a.timeout, timeout = _d === void 0 ? DEFAULT_SUBSCRIPTION_TIMEOUT : _d, _e = _a.reconnect, reconnect = _e === void 0 ? false : _e, _f = _a.reconnectionAttempts, reconnectionAttempts = _f === void 0 ? Infinity : _f;
- this.wsImpl = webSocketImpl || NativeWebSocket;
- if (!this.wsImpl) {
- throw new Error('Unable to find native implementation, or alternative implementation for WebSocket!');
- }
- this.connectionParams = connectionParams;
- this.connectionCallback = connectionCallback;
- this.url = url;
- this.subscriptions = {};
- this.maxId = 0;
- this.subscriptionTimeout = timeout;
- this.waitingSubscriptions = {};
- this.unsentMessagesQueue = [];
- this.reconnect = reconnect;
- this.reconnectSubscriptions = {};
- this.reconnecting = false;
- this.reconnectionAttempts = reconnectionAttempts;
- this.backoff = new Backoff({ jitter: 0.5 });
- this.eventEmitter = new eventemitter3_1.EventEmitter();
- this.connect();
- }
- Object.defineProperty(SubscriptionClient.prototype, "status", {
- get: function () {
- return this.client.readyState;
- },
- enumerable: true,
- configurable: true
- });
- SubscriptionClient.prototype.close = function () {
- this.client.close();
- };
- SubscriptionClient.prototype.subscribe = function (options, handler) {
- var _this = this;
- var query = options.query, variables = options.variables, operationName = options.operationName, context = options.context;
- if (!query) {
- throw new Error('Must provide `query` to subscribe.');
- }
- if (!handler) {
- throw new Error('Must provide `handler` to subscribe.');
- }
- if (!isString(query) ||
- (operationName && !isString(operationName)) ||
- (variables && !isObject(variables))) {
- throw new Error('Incorrect option types to subscribe. `subscription` must be a string,' +
- '`operationName` must be a string, and `variables` must be an object.');
- }
- var subId = this.generateSubscriptionId();
- var message = Object.assign(options, { type: messageTypes_1.SUBSCRIPTION_START, id: subId });
- this.sendMessage(message);
- this.subscriptions[subId] = { options: options, handler: handler };
- this.waitingSubscriptions[subId] = true;
- setTimeout(function () {
- if (_this.waitingSubscriptions[subId]) {
- handler([new Error('Subscription timed out - no response from server')]);
- _this.unsubscribe(subId);
- }
- }, this.subscriptionTimeout);
- return subId;
- };
- SubscriptionClient.prototype.on = function (eventName, callback, context) {
- var handler = this.eventEmitter.on(eventName, callback, context);
- return function () {
- handler.off(eventName, callback, context);
- };
- };
- SubscriptionClient.prototype.onConnect = function (callback, context) {
- return this.on('connect', callback, context);
- };
- SubscriptionClient.prototype.onDisconnect = function (callback, context) {
- return this.on('disconnect', callback, context);
- };
- SubscriptionClient.prototype.onReconnect = function (callback, context) {
- return this.on('reconnect', callback, context);
- };
- SubscriptionClient.prototype.unsubscribe = function (id) {
- delete this.subscriptions[id];
- delete this.waitingSubscriptions[id];
- var message = { id: id, type: messageTypes_1.SUBSCRIPTION_END };
- this.sendMessage(message);
- };
- SubscriptionClient.prototype.unsubscribeAll = function () {
- var _this = this;
- Object.keys(this.subscriptions).forEach(function (subId) {
- _this.unsubscribe(parseInt(subId));
- });
- };
- SubscriptionClient.prototype.sendMessage = function (message) {
- switch (this.client.readyState) {
- case this.client.OPEN:
- this.client.send(JSON.stringify(message));
- break;
- case this.client.CONNECTING:
- this.unsentMessagesQueue.push(message);
- break;
- case this.client.CLOSING:
- case this.client.CLOSED:
- default:
- if (!this.reconnecting) {
- throw new Error('Client is not connected to a websocket.');
- }
- }
- };
- SubscriptionClient.prototype.generateSubscriptionId = function () {
- var id = this.maxId;
- this.maxId += 1;
- return id;
- };
- SubscriptionClient.prototype.formatErrors = function (errors) {
- if (Array.isArray(errors)) {
- return errors;
- }
- if (errors && errors.message) {
- return [errors];
- }
- return [{ message: 'Unknown error' }];
- };
- SubscriptionClient.prototype.tryReconnect = function () {
- var _this = this;
- if (!this.reconnect) {
- return;
- }
- if (this.backoff.attempts > this.reconnectionAttempts) {
- return;
- }
- if (!this.reconnecting) {
- this.reconnectSubscriptions = this.subscriptions;
- this.subscriptions = {};
- this.waitingSubscriptions = {};
- this.reconnecting = true;
- }
- var delay = this.backoff.duration();
- setTimeout(function () {
- _this.connect(true);
- }, delay);
- };
- SubscriptionClient.prototype.connect = function (isReconnect) {
- var _this = this;
- if (isReconnect === void 0) { isReconnect = false; }
- this.client = new this.wsImpl(this.url, protocols_1.GRAPHQL_SUBSCRIPTIONS);
- this.client.onopen = function () {
- _this.eventEmitter.emit(isReconnect ? 'reconnect' : 'connect');
- _this.reconnecting = false;
- _this.backoff.reset();
- _this.sendMessage({ type: messageTypes_1.INIT, payload: _this.connectionParams });
- Object.keys(_this.reconnectSubscriptions).forEach(function (key) {
- var _a = _this.reconnectSubscriptions[key], options = _a.options, handler = _a.handler;
- _this.subscribe(options, handler);
- });
- _this.unsentMessagesQueue.forEach(function (message) {
- _this.client.send(JSON.stringify(message));
- });
- _this.unsentMessagesQueue = [];
- };
- this.client.onclose = function () {
- _this.eventEmitter.emit('disconnect');
- _this.tryReconnect();
- };
- this.client.onerror = function () {
- };
- this.client.onmessage = function (_a) {
- var data = _a.data;
- var parsedMessage;
- try {
- parsedMessage = JSON.parse(data);
- }
- catch (e) {
- throw new Error("Message must be JSON-parseable. Got: " + data);
- }
- var subId = parsedMessage.id;
- if ([messageTypes_1.KEEPALIVE, messageTypes_1.INIT_SUCCESS, messageTypes_1.INIT_FAIL].indexOf(parsedMessage.type) === -1 && !_this.subscriptions[subId]) {
- _this.unsubscribe(subId);
- if (parsedMessage.type === messageTypes_1.KEEPALIVE) {
- return;
- }
- }
- switch (parsedMessage.type) {
- case messageTypes_1.INIT_FAIL:
- if (_this.connectionCallback) {
- _this.connectionCallback(parsedMessage.payload.error);
- }
- break;
- case messageTypes_1.INIT_SUCCESS:
- if (_this.connectionCallback) {
- _this.connectionCallback();
- }
- break;
- case messageTypes_1.SUBSCRIPTION_SUCCESS:
- delete _this.waitingSubscriptions[subId];
- break;
- case messageTypes_1.SUBSCRIPTION_FAIL:
- _this.subscriptions[subId].handler(_this.formatErrors(parsedMessage.payload.errors), null);
- delete _this.subscriptions[subId];
- delete _this.waitingSubscriptions[subId];
- break;
- case messageTypes_1.SUBSCRIPTION_DATA:
- var payloadData = parsedMessage.payload.data || null;
- var payloadErrors = parsedMessage.payload.errors ? _this.formatErrors(parsedMessage.payload.errors) : null;
- _this.subscriptions[subId].handler(payloadErrors, payloadData);
- break;
- case messageTypes_1.KEEPALIVE:
- break;
- default:
- throw new Error('Invalid message type!');
- }
- };
- };
- return SubscriptionClient;
- }());
- exports.SubscriptionClient = SubscriptionClient;
- //# sourceMappingURL=client.js.map
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)))
- /***/ })
- /******/ ]);
|