function ApolloClient(options) {
    if (options === void 0) { options = {}; }
    var _this = this;
    this.middleware = function () {
        return function (store) {
            _this.setStore(store);
            return function (next) { return function (action) {
                var previousApolloState = _this.queryManager.selectApolloState(store);
                var returnValue = next(action);
                var newApolloState = _this.queryManager.selectApolloState(store);
                if (newApolloState !== previousApolloState) {
                    _this.queryManager.broadcastNewStore(store.getState());
                }
                if (_this.devToolsHookCb) {
                    _this.devToolsHookCb({
                        action: action,
                        state: _this.queryManager.getApolloState(),
                        dataWithOptimisticResults: _this.queryManager.getDataWithOptimisticResults(),
                    });
                }
                return returnValue;
            }; };
        };
    };
    var dataIdFromObject = options.dataIdFromObject;
    var networkInterface = options.networkInterface, reduxRootSelector = options.reduxRootSelector, initialState = options.initialState
, _a = options.ssrMode, ssrMode = _a === void 0 ? false : _a, _b = options.ssrForceFetchDelay, ssrForceFetchDelay = _b === void
0 ? 0 : _b, _c = options.addTypename, addTypename = _c === void 0 ? true : _c, customResolvers = options.customResolvers, connectToDevTools
 = options.connectToDevTools, fragmentMatcher = options.fragmentMatcher, _d = options.queryDeduplication, queryDeduplication = _d
 === void 0 ? true : _d;
    if (typeof reduxRootSelector === 'function') {
        this.reduxRootSelector = reduxRootSelector;
    }
    else if (typeof reduxRootSelector !== 'undefined') {
        throw new Error('"reduxRootSelector" must be a function.');
    }
    if (typeof fragmentMatcher === 'undefined') {
        this.fragmentMatcher = new HeuristicFragmentMatcher();
    }
    else {
        this.fragmentMatcher = fragmentMatcher;
    }
    this.initialState = initialState ? initialState : {};
    this.networkInterface = networkInterface ? networkInterface :
        createNetworkInterface({ uri: '/graphql' });
    this.addTypename = addTypename;
    this.disableNetworkFetches = ssrMode || ssrForceFetchDelay > 0;
    this.dataId = dataIdFromObject = dataIdFromObject || defaultDataIdFromObject;
    this.fieldWithArgs = storeKeyNameFromFieldNameAndArgs;
    this.queryDeduplication = queryDeduplication;
    if (ssrForceFetchDelay) {
        setTimeout(function () { return _this.disableNetworkFetches = false; }, ssrForceFetchDelay);
    }
    this.reducerConfig = {
        dataIdFromObject: dataIdFromObject,
        customResolvers: customResolvers,
        addTypename: addTypename,
        fragmentMatcher: this.fragmentMatcher.match,
    };
    this.watchQuery = this.watchQuery.bind(this);
    this.query = this.query.bind(this);
    this.mutate = this.mutate.bind(this);
    this.setStore = this.setStore.bind(this);
    this.resetStore = this.resetStore.bind(this);
    var defaultConnectToDevTools = !isProduction() &&
        typeof window !== 'undefined' && (!window.__APOLLO_CLIENT__);
    if (typeof connectToDevTools === 'undefined' ? defaultConnectToDevTools : connectToDevTools) {
        window.__APOLLO_CLIENT__ = this;
    }
    if (!hasSuggestedDevtools && !isProduction()) {
        hasSuggestedDevtools = true;
        if (typeof window !== 'undefined' && window.document && window.top === window.self) {
            if (typeof window.__APOLLO_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {
                if (navigator.userAgent.indexOf('Chrome') > -1) {
                    console.debug('Download the Apollo DevTools ' +
                        'for a better development experience: ' +
                        'https://chrome.google.com/webstore/detail/apollo-client-developer-t/jdkknkkbebbapilgoeccciglkfbmbnfm');
                }
            }
        }
    }
    this.version = version;
}n/a
function ApolloError(_a) {
    var graphQLErrors = _a.graphQLErrors, networkError = _a.networkError, errorMessage = _a.errorMessage, extraInfo = _a.extraInfo
;
    var _this = _super.call(this, errorMessage) || this;
    _this.graphQLErrors = graphQLErrors || [];
    _this.networkError = networkError || null;
    if (!errorMessage) {
        _this.message = generateErrorMessage(_this);
    }
    else {
        _this.message = errorMessage;
    }
    _this.extraInfo = extraInfo;
    return _this;
}n/a
function HTTPBatchedNetworkInterface(uri, batchInterval, fetchOpts) {
    var _this = _super.call(this, uri, fetchOpts) || this;
    if (typeof batchInterval !== 'number') {
        throw new Error("batchInterval must be a number, got " + batchInterval);
    }
    _this.batcher = new QueryBatcher({
        batchInterval: batchInterval,
        batchFetchFunction: _this.batchQuery.bind(_this),
    });
    return _this;
}n/a
function HTTPFetchNetworkInterface() {
    return _super !== null && _super.apply(this, arguments) || this;
}n/a
function IntrospectionFragmentMatcher(options) {
    if (options && options.introspectionQueryResultData) {
        this.possibleTypesMap = this.parseIntrospectionResult(options.introspectionQueryResultData);
        this.isReady = true;
    }
    else {
        this.isReady = false;
    }
    this.match = this.match.bind(this);
}n/a
function ObservableQuery(_a) {
    var scheduler = _a.scheduler, options = _a.options, _b = _a.shouldSubscribe, shouldSubscribe = _b === void 0 ? true : _b;
    var _this = this;
    var queryManager = scheduler.queryManager;
    var queryId = queryManager.generateQueryId();
    var subscriberFunction = function (observer) {
        return _this.onSubscribe(observer);
    };
    _this = _super.call(this, subscriberFunction) || this;
    _this.isCurrentlyPolling = false;
    _this.options = options;
    _this.variables = _this.options.variables || {};
    _this.scheduler = scheduler;
    _this.queryManager = queryManager;
    _this.queryId = queryId;
    _this.shouldSubscribe = shouldSubscribe;
    _this.observers = [];
    _this.subscriptionHandles = [];
    return _this;
}n/a
function addTypenameToDocument(doc) {
    checkDocument(doc);
    var docClone = cloneDeep(doc);
    docClone.definitions.forEach(function (definition) {
        var isRoot = definition.kind === 'OperationDefinition';
        addTypenameToSelectionSet(definition.selectionSet, isRoot);
    });
    return docClone;
}n/a
function createApolloReducer(config) {
    return function apolloReducer(state, action) {
        if (state === void 0) { state = {}; }
        try {
            var newState = {
                queries: queries(state.queries, action),
                mutations: mutations(state.mutations, action),
                data: data(state.data, action, state.queries, state.mutations, config),
                optimistic: [],
                reducerError: null,
            };
            newState.optimistic = optimistic(state.optimistic, action, newState, config);
            if (state.data === newState.data &&
                state.mutations === newState.mutations &&
                state.queries === newState.queries &&
                state.optimistic === newState.optimistic &&
                state.reducerError === newState.reducerError) {
                return state;
            }
            return newState;
        }
        catch (reducerError) {
            return __assign$2({}, state, { reducerError: createReducerError(reducerError, action) });
        }
    };
}n/a
function createApolloStore(_a) {
    var _b = _a === void 0 ? {} : _a, _c = _b.reduxRootKey, reduxRootKey = _c === void 0 ? 'apollo' : _c, initialState = _b.initialState
, _d = _b.config, config = _d === void 0 ? {} : _d, _e = _b.reportCrashes, reportCrashes = _e === void 0 ? true : _e, logger = _b
.logger;
    var enhancers = [];
    var middlewares = [];
    if (reportCrashes) {
        middlewares.push(crashReporter);
    }
    if (logger) {
        middlewares.push(logger);
    }
    if (middlewares.length > 0) {
        enhancers.push(redux.applyMiddleware.apply(void 0, middlewares));
    }
    if (typeof window !== 'undefined') {
        var anyWindow = window;
        if (anyWindow.devToolsExtension) {
            enhancers.push(anyWindow.devToolsExtension());
        }
    }
    var compose$$1 = redux.compose;
    if (initialState && initialState[reduxRootKey] && initialState[reduxRootKey]['queries']) {
        throw new Error('Apollo initial state may not contain queries, only data');
    }
    if (initialState && initialState[reduxRootKey] && initialState[reduxRootKey]['mutations']) {
        throw new Error('Apollo initial state may not contain mutations, only data');
    }
    return redux.createStore(redux.combineReducers((_f = {}, _f[reduxRootKey] = createApolloReducer(config), _f)), initialState,
compose$$1.apply(void 0, enhancers));
    var _f;
}n/a
function createBatchingNetworkInterface(options) {
    if (!options) {
        throw new Error('You must pass an options argument to createNetworkInterface.');
    }
    return new HTTPBatchedNetworkInterface(options.uri, options.batchInterval, options.opts || {});
}n/a
function createFragmentMap(fragments) {
    if (fragments === void 0) { fragments = []; }
    var symTable = {};
    fragments.forEach(function (fragment) {
        symTable[fragment.name.value] = fragment;
    });
    return symTable;
}n/a
function createNetworkInterface(uriOrInterfaceOpts, secondArgOpts) {
    if (secondArgOpts === void 0) { secondArgOpts = {}; }
    if (!uriOrInterfaceOpts) {
        throw new Error('You must pass an options argument to createNetworkInterface.');
    }
    var uri;
    var opts;
    if (typeof uriOrInterfaceOpts === 'string') {
        console.warn("Passing the URI as the first argument to createNetworkInterface is deprecated as of Apollo Client 0.5. Please
 pass it as the\"uri\" property of the network interface options.");
        opts = secondArgOpts;
        uri = uriOrInterfaceOpts;
    }
    else {
        opts = uriOrInterfaceOpts.opts;
        uri = uriOrInterfaceOpts.uri;
    }
    return new HTTPFetchNetworkInterface(uri, opts);
}n/a
function ApolloClient(options) {
    if (options === void 0) { options = {}; }
    var _this = this;
    this.middleware = function () {
        return function (store) {
            _this.setStore(store);
            return function (next) { return function (action) {
                var previousApolloState = _this.queryManager.selectApolloState(store);
                var returnValue = next(action);
                var newApolloState = _this.queryManager.selectApolloState(store);
                if (newApolloState !== previousApolloState) {
                    _this.queryManager.broadcastNewStore(store.getState());
                }
                if (_this.devToolsHookCb) {
                    _this.devToolsHookCb({
                        action: action,
                        state: _this.queryManager.getApolloState(),
                        dataWithOptimisticResults: _this.queryManager.getDataWithOptimisticResults(),
                    });
                }
                return returnValue;
            }; };
        };
    };
    var dataIdFromObject = options.dataIdFromObject;
    var networkInterface = options.networkInterface, reduxRootSelector = options.reduxRootSelector, initialState = options.initialState
, _a = options.ssrMode, ssrMode = _a === void 0 ? false : _a, _b = options.ssrForceFetchDelay, ssrForceFetchDelay = _b === void
0 ? 0 : _b, _c = options.addTypename, addTypename = _c === void 0 ? true : _c, customResolvers = options.customResolvers, connectToDevTools
 = options.connectToDevTools, fragmentMatcher = options.fragmentMatcher, _d = options.queryDeduplication, queryDeduplication = _d
 === void 0 ? true : _d;
    if (typeof reduxRootSelector === 'function') {
        this.reduxRootSelector = reduxRootSelector;
    }
    else if (typeof reduxRootSelector !== 'undefined') {
        throw new Error('"reduxRootSelector" must be a function.');
    }
    if (typeof fragmentMatcher === 'undefined') {
        this.fragmentMatcher = new HeuristicFragmentMatcher();
    }
    else {
        this.fragmentMatcher = fragmentMatcher;
    }
    this.initialState = initialState ? initialState : {};
    this.networkInterface = networkInterface ? networkInterface :
        createNetworkInterface({ uri: '/graphql' });
    this.addTypename = addTypename;
    this.disableNetworkFetches = ssrMode || ssrForceFetchDelay > 0;
    this.dataId = dataIdFromObject = dataIdFromObject || defaultDataIdFromObject;
    this.fieldWithArgs = storeKeyNameFromFieldNameAndArgs;
    this.queryDeduplication = queryDeduplication;
    if (ssrForceFetchDelay) {
        setTimeout(function () { return _this.disableNetworkFetches = false; }, ssrForceFetchDelay);
    }
    this.reducerConfig = {
        dataIdFromObject: dataIdFromObject,
        customResolvers: customResolvers,
        addTypename: addTypename,
        fragmentMatcher: this.fragmentMatcher.match,
    };
    this.watchQuery = this.watchQuery.bind(this);
    this.query = this.query.bind(this);
    this.mutate = this.mutate.bind(this);
    this.setStore = this.setStore.bind(this);
    this.resetStore = this.resetStore.bind(this);
    var defaultConnectToDevTools = !isProduction() &&
        typeof window !== 'undefined' && (!window.__APOLLO_CLIENT__);
    if (typeof connectToDevTools === 'undefined' ? defaultConnectToDevTools : connectToDevTools) {
        window.__APOLLO_CLIENT__ = this;
    }
    if (!hasSuggestedDevtools && !isProduction()) {
        hasSuggestedDevtools = true;
        if (typeof window !== 'undefined' && window.document && window.top === window.self) {
            if (typeof window.__APOLLO_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {
                if (navigator.userAgent.indexOf('Chrome') > -1) {
                    console.debug('Download the Apollo DevTools ' +
                        'for a better development experience: ' +
                        'https://chrome.google.com/webstore/detail/apollo-client-developer-t/jdkknkkbebbapilgoeccciglkfbmbnfm');
                }
            }
        }
    }
    this.version = version;
}n/a
function getFragmentDefinitions(doc) {
    var fragmentDefinitions = doc.definitions.filter(function (definition) {
        if (definition.kind === 'FragmentDefinition') {
            return true;
        }
        else {
            return false;
        }
    });
    return fragmentDefinitions;
}n/a
function getQueryDefinition(doc) {
    checkDocument(doc);
    var queryDef = null;
    doc.definitions.map(function (definition) {
        if (definition.kind === 'OperationDefinition'
            && definition.operation === 'query') {
            queryDef = definition;
        }
    });
    if (!queryDef) {
        throw new Error('Must contain a query definition.');
    }
    return queryDef;
}n/a
function print(ast) {
  return (0, _visitor.visit)(ast, { leave: printDocASTReducer });
}n/a
function readQueryFromStore(options) {
    var optsPatch = { returnPartialData: false };
    return diffQueryAgainstStore(__assign$8({}, options, optsPatch)).result;
}n/a
function toIdValue(id, generated) {
    if (generated === void 0) { generated = false; }
    return {
        type: 'id',
        id: id,
        generated: generated,
    };
}n/a
function writeQueryToStore(_a) {
    var result = _a.result, query = _a.query, _b = _a.store, store = _b === void 0 ? {} : _b, variables = _a.variables, dataIdFromObject
 = _a.dataIdFromObject, _c = _a.fragmentMap, fragmentMap = _c === void 0 ? {} : _c;
    var queryDefinition = getQueryDefinition(query);
    return writeSelectionSetToStore({
        dataId: 'ROOT_QUERY',
        result: result,
        selectionSet: queryDefinition.selectionSet,
        context: {
            store: store,
            variables: variables,
            dataIdFromObject: dataIdFromObject,
            fragmentMap: fragmentMap,
        },
    });
}n/a
function ApolloClient(options) {
    if (options === void 0) { options = {}; }
    var _this = this;
    this.middleware = function () {
        return function (store) {
            _this.setStore(store);
            return function (next) { return function (action) {
                var previousApolloState = _this.queryManager.selectApolloState(store);
                var returnValue = next(action);
                var newApolloState = _this.queryManager.selectApolloState(store);
                if (newApolloState !== previousApolloState) {
                    _this.queryManager.broadcastNewStore(store.getState());
                }
                if (_this.devToolsHookCb) {
                    _this.devToolsHookCb({
                        action: action,
                        state: _this.queryManager.getApolloState(),
                        dataWithOptimisticResults: _this.queryManager.getDataWithOptimisticResults(),
                    });
                }
                return returnValue;
            }; };
        };
    };
    var dataIdFromObject = options.dataIdFromObject;
    var networkInterface = options.networkInterface, reduxRootSelector = options.reduxRootSelector, initialState = options.initialState
, _a = options.ssrMode, ssrMode = _a === void 0 ? false : _a, _b = options.ssrForceFetchDelay, ssrForceFetchDelay = _b === void
0 ? 0 : _b, _c = options.addTypename, addTypename = _c === void 0 ? true : _c, customResolvers = options.customResolvers, connectToDevTools
 = options.connectToDevTools, fragmentMatcher = options.fragmentMatcher, _d = options.queryDeduplication, queryDeduplication = _d
 === void 0 ? true : _d;
    if (typeof reduxRootSelector === 'function') {
        this.reduxRootSelector = reduxRootSelector;
    }
    else if (typeof reduxRootSelector !== 'undefined') {
        throw new Error('"reduxRootSelector" must be a function.');
    }
    if (typeof fragmentMatcher === 'undefined') {
        this.fragmentMatcher = new HeuristicFragmentMatcher();
    }
    else {
        this.fragmentMatcher = fragmentMatcher;
    }
    this.initialState = initialState ? initialState : {};
    this.networkInterface = networkInterface ? networkInterface :
        createNetworkInterface({ uri: '/graphql' });
    this.addTypename = addTypename;
    this.disableNetworkFetches = ssrMode || ssrForceFetchDelay > 0;
    this.dataId = dataIdFromObject = dataIdFromObject || defaultDataIdFromObject;
    this.fieldWithArgs = storeKeyNameFromFieldNameAndArgs;
    this.queryDeduplication = queryDeduplication;
    if (ssrForceFetchDelay) {
        setTimeout(function () { return _this.disableNetworkFetches = false; }, ssrForceFetchDelay);
    }
    this.reducerConfig = {
        dataIdFromObject: dataIdFromObject,
        customResolvers: customResolvers,
        addTypename: addTypename,
        fragmentMatcher: this.fragmentMatcher.match,
    };
    this.watchQuery = this.watchQuery.bind(this);
    this.query = this.query.bind(this);
    this.mutate = this.mutate.bind(this);
    this.setStore = this.setStore.bind(this);
    this.resetStore = this.resetStore.bind(this);
    var defaultConnectToDevTools = !isProduction() &&
        typeof window !== 'undefined' && (!window.__APOLLO_CLIENT__);
    if (typeof connectToDevTools === 'undefined' ? defaultConnectToDevTools : connectToDevTools) {
        window.__APOLLO_CLIENT__ = this;
    }
    if (!hasSuggestedDevtools && !isProduction()) {
        hasSuggestedDevtools = true;
        if (typeof window !== 'undefined' && window.document && window.top === window.self) {
            if (typeof window.__APOLLO_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {
                if (navigator.userAgent.indexOf('Chrome') > -1) {
                    console.debug('Download the Apollo DevTools ' +
                        'for a better development experience: ' +
                        'https://chrome.google.com/webstore/detail/apollo-client-developer-t/jdkknkkbebbapilgoeccciglkfbmbnfm');
                }
            }
        }
    }
    this.version = version;
}n/a
__actionHookForDevTools = function (cb) {
    this.devToolsHookCb = cb;
}n/a
getInitialState = function () {
    this.initStore();
    return this.queryManager.getInitialState();
}...
ApolloClient.prototype.resetStore = function () {
    if (this.queryManager) {
        this.queryManager.resetStore();
    }
};
ApolloClient.prototype.getInitialState = function () {
    this.initStore();
    return this.queryManager.getInitialState();
};
ApolloClient.prototype.setStore = function (store) {
    var reduxRootSelector;
    if (this.reduxRootSelector) {
        reduxRootSelector = this.reduxRootSelector;
    }
    else {
...initProxy = function () {
    if (!this.proxy) {
        this.initStore();
        this.proxy = new ReduxDataProxy(this.store, this.reduxRootSelector || defaultReduxRootSelector, this.fragmentMatcher, this
.reducerConfig);
    }
    return this.proxy;
}...
    return this.queryManager.mutate(options);
};
ApolloClient.prototype.subscribe = function (options) {
    this.initStore();
    return this.queryManager.startGraphQLSubscription(options);
};
ApolloClient.prototype.readQuery = function (options) {
    return this.initProxy().readQuery(options);
};
ApolloClient.prototype.readFragment = function (options) {
    return this.initProxy().readFragment(options);
};
ApolloClient.prototype.writeQuery = function (options) {
    return this.initProxy().writeQuery(options);
};
...initStore = function () {
    var _this = this;
    if (this.store) {
        return;
    }
    if (this.reduxRootSelector) {
        throw new Error('Cannot initialize the store because "reduxRootSelector" is provided. ' +
            'reduxRootSelector should only be used when the store is created outside of the client. ' +
            'This may lead to unexpected results when querying the store internally. ' +
            "Please remove that option from ApolloClient constructor.");
    }
    this.setStore(createApolloStore({
        reduxRootKey: DEFAULT_REDUX_ROOT_KEY,
        initialState: this.initialState,
        config: this.reducerConfig,
        logger: function (store) { return function (next) { return function (action) {
            var result = next(action);
            if (_this.devToolsHookCb) {
                _this.devToolsHookCb({
                    action: action,
                    state: _this.queryManager.getApolloState(),
                    dataWithOptimisticResults: _this.queryManager.getDataWithOptimisticResults(),
                });
            }
            return result;
        }; }; },
    }));
}...
                }
            }
        }
    }
    this.version = version;
}
ApolloClient.prototype.watchQuery = function (options) {
    this.initStore();
    if (this.disableNetworkFetches && options.fetchPolicy === 'network-only') {
        options = __assign({}, options, { fetchPolicy: 'cache-first' });
    }
    return this.queryManager.watchQuery(options);
};
ApolloClient.prototype.query = function (options) {
    this.initStore();
...mutate = function (options) {
    this.initStore();
    return this.queryManager.mutate(options);
}...
    if (this.disableNetworkFetches && options.fetchPolicy === 'network-only') {
        options = __assign({}, options, { fetchPolicy: 'cache-first' });
    }
    return this.queryManager.query(options);
};
ApolloClient.prototype.mutate = function (options) {
    this.initStore();
    return this.queryManager.mutate(options);
};
ApolloClient.prototype.subscribe = function (options) {
    this.initStore();
    return this.queryManager.startGraphQLSubscription(options);
};
ApolloClient.prototype.readQuery = function (options) {
    return this.initProxy().readQuery(options);
...query = function (options) {
    this.initStore();
    if (options.fetchPolicy === 'cache-and-network') {
        throw new Error('cache-and-network fetchPolicy can only be used with watchQuery');
    }
    if (this.disableNetworkFetches && options.fetchPolicy === 'network-only') {
        options = __assign$13({}, options, { fetchPolicy: 'cache-first' });
    }
    return this.queryManager.query(options);
}...
    this.initStore();
    if (options.fetchPolicy === 'cache-and-network') {
        throw new Error('cache-and-network fetchPolicy can only be used with watchQuery');
    }
    if (this.disableNetworkFetches && options.fetchPolicy === 'network-only') {
        options = __assign({}, options, { fetchPolicy: 'cache-first' });
    }
    return this.queryManager.query(options);
};
ApolloClient.prototype.mutate = function (options) {
    this.initStore();
    return this.queryManager.mutate(options);
};
ApolloClient.prototype.subscribe = function (options) {
    this.initStore();
...readFragment = function (options) {
    return this.initProxy().readFragment(options);
}...
    this.initStore();
    return this.queryManager.startGraphQLSubscription(options);
};
ApolloClient.prototype.readQuery = function (options) {
    return this.initProxy().readQuery(options);
};
ApolloClient.prototype.readFragment = function (options) {
    return this.initProxy().readFragment(options);
};
ApolloClient.prototype.writeQuery = function (options) {
    return this.initProxy().writeQuery(options);
};
ApolloClient.prototype.writeFragment = function (options) {
    return this.initProxy().writeFragment(options);
};
...readQuery = function (options) {
    return this.initProxy().readQuery(options);
}...
    return this.queryManager.mutate(options);
};
ApolloClient.prototype.subscribe = function (options) {
    this.initStore();
    return this.queryManager.startGraphQLSubscription(options);
};
ApolloClient.prototype.readQuery = function (options) {
    return this.initProxy().readQuery(options);
};
ApolloClient.prototype.readFragment = function (options) {
    return this.initProxy().readFragment(options);
};
ApolloClient.prototype.writeQuery = function (options) {
    return this.initProxy().writeQuery(options);
};
...reducer = function () {
    return createApolloReducer(this.reducerConfig);
}n/a
resetStore = function () {
    if (this.queryManager) {
        this.queryManager.resetStore();
    }
}...
            }
            return result;
        }; }; },
    }));
};
ApolloClient.prototype.resetStore = function () {
    if (this.queryManager) {
        this.queryManager.resetStore();
    }
};
ApolloClient.prototype.getInitialState = function () {
    this.initStore();
    return this.queryManager.getInitialState();
};
ApolloClient.prototype.setStore = function (store) {
...setStore = function (store) {
    var reduxRootSelector;
    if (this.reduxRootSelector) {
        reduxRootSelector = this.reduxRootSelector;
    }
    else {
        reduxRootSelector = defaultReduxRootSelector;
    }
    if (typeof reduxRootSelector(store.getState()) === 'undefined') {
        throw new Error('Existing store does not use apolloReducer. Please make sure the store ' +
            'is properly configured and "reduxRootSelector" is correctly specified.');
    }
    this.store = store;
    this.queryManager = new QueryManager({
        networkInterface: this.networkInterface,
        reduxRootSelector: reduxRootSelector,
        store: store,
        addTypename: this.addTypename,
        reducerConfig: this.reducerConfig,
        queryDeduplication: this.queryDeduplication,
        fragmentMatcher: this.fragmentMatcher,
    });
}...
var hasSuggestedDevtools = false;
var ApolloClient = (function () {
function ApolloClient(options) {
    if (options === void 0) { options = {}; }
    var _this = this;
    this.middleware = function () {
        return function (store) {
            _this.setStore(store);
            return function (next) { return function (action) {
                var previousApolloState = _this.queryManager.selectApolloState(store);
                var returnValue = next(action);
                var newApolloState = _this.queryManager.selectApolloState(store);
                if (newApolloState !== previousApolloState) {
                    _this.queryManager.broadcastNewStore(store.getState());
                }
...subscribe = function (options) {
    this.initStore();
    return this.queryManager.startGraphQLSubscription(options);
}...
                    subscription.unsubscribe();
                }, 0);
            },
            error: function (error) {
                reject(error);
            },
        };
        subscription = that.subscribe(observer);
    });
};
ObservableQuery.prototype.currentResult = function () {
    var _a = this.queryManager.getCurrentQueryResult(this, true), data = _a.data, partial = _a.partial;
    var queryStoreValue = this.queryManager.getApolloState().queries[this.queryId];
    if (queryStoreValue && ((queryStoreValue.graphQLErrors && queryStoreValue.graphQLErrors.length > 0) ||
        queryStoreValue.networkError)) {
...watchQuery = function (options) {
    this.initStore();
    if (this.disableNetworkFetches && options.fetchPolicy === 'network-only') {
        options = __assign$13({}, options, { fetchPolicy: 'cache-first' });
    }
    return this.queryManager.watchQuery(options);
}...
    this.version = version;
}
ApolloClient.prototype.watchQuery = function (options) {
    this.initStore();
    if (this.disableNetworkFetches && options.fetchPolicy === 'network-only') {
        options = __assign({}, options, { fetchPolicy: 'cache-first' });
    }
    return this.queryManager.watchQuery(options);
};
ApolloClient.prototype.query = function (options) {
    this.initStore();
    if (options.fetchPolicy === 'cache-and-network') {
        throw new Error('cache-and-network fetchPolicy can only be used with watchQuery');
    }
    if (this.disableNetworkFetches && options.fetchPolicy === 'network-only') {
...writeFragment = function (options) {
    return this.initProxy().writeFragment(options);
}...
ApolloClient.prototype.readFragment = function (options) {
    return this.initProxy().readFragment(options);
};
ApolloClient.prototype.writeQuery = function (options) {
    return this.initProxy().writeQuery(options);
};
ApolloClient.prototype.writeFragment = function (options) {
    return this.initProxy().writeFragment(options);
};
ApolloClient.prototype.reducer = function () {
    return createApolloReducer(this.reducerConfig);
};
ApolloClient.prototype.__actionHookForDevTools = function (cb) {
    this.devToolsHookCb = cb;
};
...writeQuery = function (options) {
    return this.initProxy().writeQuery(options);
}...
ApolloClient.prototype.readQuery = function (options) {
    return this.initProxy().readQuery(options);
};
ApolloClient.prototype.readFragment = function (options) {
    return this.initProxy().readFragment(options);
};
ApolloClient.prototype.writeQuery = function (options) {
    return this.initProxy().writeQuery(options);
};
ApolloClient.prototype.writeFragment = function (options) {
    return this.initProxy().writeFragment(options);
};
ApolloClient.prototype.reducer = function () {
    return createApolloReducer(this.reducerConfig);
};
...function ApolloError(_a) {
    var graphQLErrors = _a.graphQLErrors, networkError = _a.networkError, errorMessage = _a.errorMessage, extraInfo = _a.extraInfo
;
    var _this = _super.call(this, errorMessage) || this;
    _this.graphQLErrors = graphQLErrors || [];
    _this.networkError = networkError || null;
    if (!errorMessage) {
        _this.message = generateErrorMessage(_this);
    }
    else {
        _this.message = errorMessage;
    }
    _this.extraInfo = extraInfo;
    return _this;
}n/a
function ApolloError(_a) {
    var graphQLErrors = _a.graphQLErrors, networkError = _a.networkError, errorMessage = _a.errorMessage, extraInfo = _a.extraInfo
;
    var _this = _super.call(this, errorMessage) || this;
    _this.graphQLErrors = graphQLErrors || [];
    _this.networkError = networkError || null;
    if (!errorMessage) {
        _this.message = generateErrorMessage(_this);
    }
    else {
        _this.message = errorMessage;
    }
    _this.extraInfo = extraInfo;
    return _this;
}n/a
function HTTPBatchedNetworkInterface(uri, batchInterval, fetchOpts) {
    var _this = _super.call(this, uri, fetchOpts) || this;
    if (typeof batchInterval !== 'number') {
        throw new Error("batchInterval must be a number, got " + batchInterval);
    }
    _this.batcher = new QueryBatcher({
        batchInterval: batchInterval,
        batchFetchFunction: _this.batchQuery.bind(_this),
    });
    return _this;
}n/a
applyBatchAfterwares = function (_a) {
    var _this = this;
    var responses = _a.responses, options = _a.options;
    return new Promise(function (resolve, reject) {
        var responseObject = { responses: responses, options: options };
        var queue = function (funcs, scope) {
            var next = function () {
                if (funcs.length > 0) {
                    var f = funcs.shift();
                    if (f) {
                        f.applyBatchAfterware.apply(scope, [responseObject, next]);
                    }
                }
                else {
                    resolve(responseObject);
                }
            };
            next();
        };
        queue(_this._afterwares.slice(), _this);
    });
}...
});
return new Promise(function (resolve, reject) {
    middlewarePromise.then(function (batchRequestAndOptions) {
        return _this.batchedFetchFromRemoteEndpoint(batchRequestAndOptions)
            .then(function (result) {
            var httpResponse = result;
            if (!httpResponse.ok) {
                return _this.applyBatchAfterwares({ responses: [httpResponse], options
: batchRequestAndOptions })
                    .then(function () {
                    var httpError = new Error("Network request failed with status " + httpResponse.status + " - \
x22;" + httpResponse.statusText + "\"");
                    httpError.response = httpResponse;
                    throw httpError;
                });
            }
            return result.json();
...applyBatchMiddlewares = function (_a) {
    var _this = this;
    var requests = _a.requests, options = _a.options;
    return new Promise(function (resolve, reject) {
        var queue = function (funcs, scope) {
            var next = function () {
                if (funcs.length > 0) {
                    var f = funcs.shift();
                    if (f) {
                        f.applyBatchMiddleware.apply(scope, [{ requests: requests, options: options }, next]);
                    }
                }
                else {
                    resolve({
                        requests: requests,
                        options: options,
                    });
                }
            };
            next();
        };
        queue(_this._middlewares.slice(), _this);
    });
}...
}
HTTPBatchedNetworkInterface.prototype.query = function (request) {
    return this.batcher.enqueueRequest(request);
};
HTTPBatchedNetworkInterface.prototype.batchQuery = function (requests) {
    var _this = this;
    var options = __assign$1({}, this._opts);
    var middlewarePromise = this.applyBatchMiddlewares({
        requests: requests,
        options: options,
    });
    return new Promise(function (resolve, reject) {
        middlewarePromise.then(function (batchRequestAndOptions) {
            return _this.batchedFetchFromRemoteEndpoint(batchRequestAndOptions)
                .then(function (result) {
...batchQuery = function (requests) {
    var _this = this;
    var options = __assign$1({}, this._opts);
    var middlewarePromise = this.applyBatchMiddlewares({
        requests: requests,
        options: options,
    });
    return new Promise(function (resolve, reject) {
        middlewarePromise.then(function (batchRequestAndOptions) {
            return _this.batchedFetchFromRemoteEndpoint(batchRequestAndOptions)
                .then(function (result) {
                var httpResponse = result;
                if (!httpResponse.ok) {
                    return _this.applyBatchAfterwares({ responses: [httpResponse], options: batchRequestAndOptions })
                        .then(function () {
                        var httpError = new Error("Network request failed with status " + httpResponse.status + " - \"" + httpResponse
.statusText + "\"");
                        httpError.response = httpResponse;
                        throw httpError;
                    });
                }
                return result.json();
            })
                .then(function (responses) {
                if (typeof responses.map !== 'function') {
                    throw new Error('BatchingNetworkInterface: server response is not an array');
                }
                _this.applyBatchAfterwares({
                    responses: responses,
                    options: batchRequestAndOptions.options,
                }).then(function (responseAndOptions) {
                    resolve(responseAndOptions.responses);
                }).catch(function (error) {
                    reject(error);
                });
            });
        }).catch(function (error) {
            reject(error);
        });
    });
}n/a
batchedFetchFromRemoteEndpoint = function (batchRequestAndOptions) {
    var options = {};
    assign(options, batchRequestAndOptions.options);
    var printedRequests = batchRequestAndOptions.requests.map(function (request) {
        return printRequest(request);
    });
    return fetch(this._uri, __assign$1({}, this._opts, { body: JSON.stringify(printedRequests), method: 'POST' }, options, { headers
: __assign$1({ Accept: '*/*', 'Content-Type': 'application/json' }, options.headers) }));
}...
var options = __assign$1({}, this._opts);
var middlewarePromise = this.applyBatchMiddlewares({
    requests: requests,
    options: options,
});
return new Promise(function (resolve, reject) {
    middlewarePromise.then(function (batchRequestAndOptions) {
        return _this.batchedFetchFromRemoteEndpoint(batchRequestAndOptions)
            .then(function (result) {
            var httpResponse = result;
            if (!httpResponse.ok) {
                return _this.applyBatchAfterwares({ responses: [httpResponse], options: batchRequestAndOptions })
                    .then(function () {
                    var httpError = new Error("Network request failed with status " + httpResponse.status + " - \
x22;" + httpResponse.statusText + "\"");
                    httpError.response = httpResponse;
...function HTTPBatchedNetworkInterface(uri, batchInterval, fetchOpts) {
    var _this = _super.call(this, uri, fetchOpts) || this;
    if (typeof batchInterval !== 'number') {
        throw new Error("batchInterval must be a number, got " + batchInterval);
    }
    _this.batcher = new QueryBatcher({
        batchInterval: batchInterval,
        batchFetchFunction: _this.batchQuery.bind(_this),
    });
    return _this;
}n/a
query = function (request) {
    return this.batcher.enqueueRequest(request);
}...
    this.initStore();
    if (options.fetchPolicy === 'cache-and-network') {
        throw new Error('cache-and-network fetchPolicy can only be used with watchQuery');
    }
    if (this.disableNetworkFetches && options.fetchPolicy === 'network-only') {
        options = __assign({}, options, { fetchPolicy: 'cache-first' });
    }
    return this.queryManager.query(options);
};
ApolloClient.prototype.mutate = function (options) {
    this.initStore();
    return this.queryManager.mutate(options);
};
ApolloClient.prototype.subscribe = function (options) {
    this.initStore();
...use = function (middlewares) {
    var _this = this;
    middlewares.map(function (middleware) {
        if (typeof middleware.applyBatchMiddleware === 'function') {
            _this._middlewares.push(middleware);
        }
        else {
            throw new Error('Batch middleware must implement the applyBatchMiddleware function');
        }
    });
    return this;
}n/a
useAfter = function (afterwares) {
    var _this = this;
    afterwares.map(function (afterware) {
        if (typeof afterware.applyBatchAfterware === 'function') {
            _this._afterwares.push(afterware);
        }
        else {
            throw new Error('Batch afterware must implement the applyBatchAfterware function');
        }
    });
    return this;
}n/a
function HTTPFetchNetworkInterface() {
    return _super !== null && _super.apply(this, arguments) || this;
}n/a
applyAfterwares = function (_a) {
    var _this = this;
    var response = _a.response, options = _a.options;
    return new Promise(function (resolve, reject) {
        var responseObject = { response: response, options: options };
        var queue = function (funcs, scope) {
            var next = function () {
                if (funcs.length > 0) {
                    var f = funcs.shift();
                    if (f) {
                        f.applyAfterware.apply(scope, [responseObject, next]);
                    }
                }
                else {
                    resolve(responseObject);
                }
            };
            next();
        };
        queue(_this._afterwares.slice(), _this);
    });
}...
    HTTPFetchNetworkInterface.prototype.query = function (request) {
var _this = this;
var options = __assign({}, this._opts);
return this.applyMiddlewares({
    request: request,
    options: options,
}).then(function (rao) { return _this.fetchFromRemoteEndpoint.call(_this, rao); })
    .then(function (response) { return _this.applyAfterwares({
    response: response,
    options: options,
}); })
    .then(function (_a) {
    var response = _a.response;
    var httpResponse = response;
    return httpResponse.json().catch(function () {
...applyMiddlewares = function (requestAndOptions) {
    var _this = this;
    return new Promise(function (resolve, reject) {
        var request = requestAndOptions.request, options = requestAndOptions.options;
        var queue = function (funcs, scope) {
            var next = function () {
                if (funcs.length > 0) {
                    var f = funcs.shift();
                    if (f) {
                        f.applyMiddleware.apply(scope, [{ request: request, options: options }, next]);
                    }
                }
                else {
                    resolve({
                        request: request,
                        options: options,
                    });
                }
            };
            next();
        };
        queue(_this._middlewares.slice(), _this);
    });
}...
HTTPFetchNetworkInterface.prototype.fetchFromRemoteEndpoint = function (_a) {
    var request = _a.request, options = _a.options;
    return fetch(this._uri, __assign({}, this._opts, { body: JSON.stringify(printRequest(request)), method: 'POST' },
options, { headers: __assign({ Accept: '*/*', 'Content-Type': 'application/json' }, options.headers
) }));
};
HTTPFetchNetworkInterface.prototype.query = function (request) {
    var _this = this;
    var options = __assign({}, this._opts);
    return this.applyMiddlewares({
        request: request,
        options: options,
    }).then(function (rao) { return _this.fetchFromRemoteEndpoint.call(_this, rao); })
        .then(function (response) { return _this.applyAfterwares({
        response: response,
        options: options,
    }); })
...function HTTPFetchNetworkInterface() {
    return _super !== null && _super.apply(this, arguments) || this;
}n/a
fetchFromRemoteEndpoint = function (_a) {
    var request = _a.request, options = _a.options;
    return fetch(this._uri, __assign({}, this._opts, { body: JSON.stringify(printRequest(request)), method: 'POST' }, options, {
headers: __assign({ Accept: '*/*', 'Content-Type': 'application/json' }, options.headers) }));
}n/a
query = function (request) {
    var _this = this;
    var options = __assign({}, this._opts);
    return this.applyMiddlewares({
        request: request,
        options: options,
    }).then(function (rao) { return _this.fetchFromRemoteEndpoint.call(_this, rao); })
        .then(function (response) { return _this.applyAfterwares({
        response: response,
        options: options,
    }); })
        .then(function (_a) {
        var response = _a.response;
        var httpResponse = response;
        return httpResponse.json().catch(function () {
            var httpError = new Error("Network request failed with status " + response.status + " - \"" + response.statusText + "\"");
            httpError.response = httpResponse;
            throw httpError;
        });
    })
        .then(function (payload) {
        if (!payload.hasOwnProperty('data') && !payload.hasOwnProperty('errors')) {
            throw new Error("Server response was missing for query '" + request.debugName + "'.");
        }
        else {
            return payload;
        }
    });
}...
    this.initStore();
    if (options.fetchPolicy === 'cache-and-network') {
        throw new Error('cache-and-network fetchPolicy can only be used with watchQuery');
    }
    if (this.disableNetworkFetches && options.fetchPolicy === 'network-only') {
        options = __assign({}, options, { fetchPolicy: 'cache-first' });
    }
    return this.queryManager.query(options);
};
ApolloClient.prototype.mutate = function (options) {
    this.initStore();
    return this.queryManager.mutate(options);
};
ApolloClient.prototype.subscribe = function (options) {
    this.initStore();
...use = function (middlewares) {
    var _this = this;
    middlewares.map(function (middleware) {
        if (typeof middleware.applyMiddleware === 'function') {
            _this._middlewares.push(middleware);
        }
        else {
            throw new Error('Middleware must implement the applyMiddleware function');
        }
    });
    return this;
}n/a
useAfter = function (afterwares) {
    var _this = this;
    afterwares.map(function (afterware) {
        if (typeof afterware.applyAfterware === 'function') {
            _this._afterwares.push(afterware);
        }
        else {
            throw new Error('Afterware must implement the applyAfterware function');
        }
    });
    return this;
}n/a
function IntrospectionFragmentMatcher(options) {
    if (options && options.introspectionQueryResultData) {
        this.possibleTypesMap = this.parseIntrospectionResult(options.introspectionQueryResultData);
        this.isReady = true;
    }
    else {
        this.isReady = false;
    }
    this.match = this.match.bind(this);
}n/a
match = function (idValue, typeCondition, context) {
    if (!this.isReady) {
        throw new Error('FragmentMatcher.match() was called before FragmentMatcher.init()');
    }
    var obj = context.store[idValue.id];
    if (!obj) {
        return false;
    }
    if (!obj.__typename) {
        throw new Error("Cannot match fragment because __typename property is missing: " + JSON.stringify(obj));
    }
    if (obj.__typename === typeCondition) {
        return true;
    }
    var implementingTypes = this.possibleTypesMap[typeCondition];
    if (implementingTypes && implementingTypes.indexOf(obj.__typename) > -1) {
        return true;
    }
    return false;
}...
    else {
        this.isReady = false;
    }
    this.match = this.match.bind(this);
}
IntrospectionFragmentMatcher.prototype.match = function (idValue, typeCondition, context) {
    if (!this.isReady) {
        throw new Error('FragmentMatcher.match() was called before FragmentMatcher
.init()');
    }
    var obj = context.store[idValue.id];
    if (!obj) {
        return false;
    }
    if (!obj.__typename) {
        throw new Error("Cannot match fragment because __typename property is missing: " + JSON.stringify(obj));
...parseIntrospectionResult = function (introspectionResultData) {
    var typeMap = {};
    introspectionResultData.__schema.types.forEach(function (type) {
        if (type.kind === 'UNION' || type.kind === 'INTERFACE') {
            typeMap[type.name] = type.possibleTypes.map(function (implementingType) { return implementingType.name; });
        }
    });
    return typeMap;
}...
};
return ObservableQuery;
}(Observable));
var IntrospectionFragmentMatcher = (function () {
function IntrospectionFragmentMatcher(options) {
    if (options && options.introspectionQueryResultData) {
        this.possibleTypesMap = this.parseIntrospectionResult(options.introspectionQueryResultData
);
        this.isReady = true;
    }
    else {
        this.isReady = false;
    }
    this.match = this.match.bind(this);
}
...function ObservableQuery(_a) {
    var scheduler = _a.scheduler, options = _a.options, _b = _a.shouldSubscribe, shouldSubscribe = _b === void 0 ? true : _b;
    var _this = this;
    var queryManager = scheduler.queryManager;
    var queryId = queryManager.generateQueryId();
    var subscriberFunction = function (observer) {
        return _this.onSubscribe(observer);
    };
    _this = _super.call(this, subscriberFunction) || this;
    _this.isCurrentlyPolling = false;
    _this.options = options;
    _this.variables = _this.options.variables || {};
    _this.scheduler = scheduler;
    _this.queryManager = queryManager;
    _this.queryId = queryId;
    _this.shouldSubscribe = shouldSubscribe;
    _this.observers = [];
    _this.subscriptionHandles = [];
    return _this;
}n/a
function ObservableQuery(_a) {
    var scheduler = _a.scheduler, options = _a.options, _b = _a.shouldSubscribe, shouldSubscribe = _b === void 0 ? true : _b;
    var _this = this;
    var queryManager = scheduler.queryManager;
    var queryId = queryManager.generateQueryId();
    var subscriberFunction = function (observer) {
        return _this.onSubscribe(observer);
    };
    _this = _super.call(this, subscriberFunction) || this;
    _this.isCurrentlyPolling = false;
    _this.options = options;
    _this.variables = _this.options.variables || {};
    _this.scheduler = scheduler;
    _this.queryManager = queryManager;
    _this.queryId = queryId;
    _this.shouldSubscribe = shouldSubscribe;
    _this.observers = [];
    _this.subscriptionHandles = [];
    return _this;
}n/a
currentResult = function () {
    var _a = this.queryManager.getCurrentQueryResult(this, true), data = _a.data, partial = _a.partial;
    var queryStoreValue = this.queryManager.getApolloState().queries[this.queryId];
    if (queryStoreValue && ((queryStoreValue.graphQLErrors && queryStoreValue.graphQLErrors.length > 0) ||
        queryStoreValue.networkError)) {
        var error = new ApolloError({
            graphQLErrors: queryStoreValue.graphQLErrors,
            networkError: queryStoreValue.networkError,
        });
        return { data: {}, loading: false, networkStatus: queryStoreValue.networkStatus, error: error };
    }
    var queryLoading = !queryStoreValue || queryStoreValue.networkStatus === exports.NetworkStatus.loading;
    var loading = (this.options.fetchPolicy === 'network-only' && queryLoading)
        || (partial && this.options.fetchPolicy !== 'cache-only');
    var networkStatus;
    if (queryStoreValue) {
        networkStatus = queryStoreValue.networkStatus;
    }
    else {
        networkStatus = loading ? exports.NetworkStatus.loading : exports.NetworkStatus.ready;
    }
    return {
        data: data,
        loading: isNetworkRequestInFlight(networkStatus),
        networkStatus: networkStatus,
        partial: partial,
    };
}n/a
fetchMore = function (fetchMoreOptions) {
    var _this = this;
    if (!fetchMoreOptions.updateQuery) {
        throw new Error('updateQuery option is required. This function defines how to update the query data with the new results
.');
    }
    return Promise.resolve()
        .then(function () {
        var qid = _this.queryManager.generateQueryId();
        var combinedOptions = null;
        if (fetchMoreOptions.query) {
            combinedOptions = fetchMoreOptions;
        }
        else {
            var variables = __assign$12({}, _this.variables, fetchMoreOptions.variables);
            combinedOptions = __assign$12({}, _this.options, fetchMoreOptions, { variables: variables });
        }
        combinedOptions = __assign$12({}, combinedOptions, { query: combinedOptions.query, fetchPolicy: 'network-only' });
        return _this.queryManager.fetchQuery(qid, combinedOptions, FetchType.normal, _this.queryId);
    })
        .then(function (fetchMoreResult) {
        var data = fetchMoreResult.data;
        var reducer = fetchMoreOptions.updateQuery;
        var mapFn = function (previousResult, _a) {
            var variables = _a.variables;
            var queryVariables = variables;
            return reducer(previousResult, {
                fetchMoreResult: data,
                queryVariables: queryVariables,
            });
        };
        _this.updateQuery(mapFn);
        return fetchMoreResult;
    });
}n/a
getLastResult = function () {
    return this.lastResult;
}...
QueryManager.prototype.stopQuery = function (queryId) {
    this.removeQuery(queryId);
    this.stopQueryInStore(queryId);
};
QueryManager.prototype.getCurrentQueryResult = function (observableQuery, isOptimistic) {
    if (isOptimistic === void 0) { isOptimistic = false; }
    var _a = this.getQueryParts(observableQuery), variables = _a.variables, document = _a.document;
    var lastResult = observableQuery.getLastResult();
    var queryOptions = observableQuery.options;
    var readOptions = {
        store: isOptimistic ? this.getDataWithOptimisticResults() : this.getApolloState().data,
        query: document,
        variables: variables,
        config: this.reducerConfig,
        previousResult: lastResult ? lastResult.data : undefined,
...onSubscribe = function (observer) {
    var _this = this;
    this.observers.push(observer);
    if (observer.next && this.lastResult) {
        observer.next(this.lastResult);
    }
    if (observer.error && this.lastError) {
        observer.error(this.lastError);
    }
    if (this.observers.length === 1) {
        this.setUpQuery();
    }
    var retQuerySubscription = {
        unsubscribe: function () {
            if (!_this.observers.some(function (el) { return el === observer; })) {
                return;
            }
            _this.observers = _this.observers.filter(function (obs) { return obs !== observer; });
            if (_this.observers.length === 0) {
                _this.tearDownQuery();
            }
        },
    };
    return retQuerySubscription;
}...
__extends$2(ObservableQuery, _super);
function ObservableQuery(_a) {
    var scheduler = _a.scheduler, options = _a.options, _b = _a.shouldSubscribe, shouldSubscribe = _b === void 0 ? true : _b;
    var _this = this;
    var queryManager = scheduler.queryManager;
    var queryId = queryManager.generateQueryId();
    var subscriberFunction = function (observer) {
        return _this.onSubscribe(observer);
    };
    _this = _super.call(this, subscriberFunction) || this;
    _this.isCurrentlyPolling = false;
    _this.options = options;
    _this.variables = _this.options.variables || {};
    _this.scheduler = scheduler;
    _this.queryManager = queryManager;
...refetch = function (variables) {
    this.variables = __assign$12({}, this.variables, variables);
    if (this.options.fetchPolicy === 'cache-only') {
        return Promise.reject(new Error('cache-only fetchPolicy option should not be used together with query refetch.'));
    }
    this.options.variables = __assign$12({}, this.options.variables, this.variables);
    var combinedOptions = __assign$12({}, this.options, { fetchPolicy: 'network-only' });
    return this.queryManager.fetchQuery(this.queryId, combinedOptions, FetchType.refetch)
        .then(function (result) { return maybeDeepFreeze(result); });
}...
        type: 'APOLLO_STORE_RESET',
        observableQueryIds: Object.keys(this.observableQueries),
    });
    Object.keys(this.observableQueries).forEach(function (queryId) {
        var storeQuery = _this.reduxRootSelector(_this.store.getState()).queries[queryId];
        var fetchPolicy = _this.observableQueries[queryId].observableQuery.options.fetchPolicy;
        if (fetchPolicy !== 'cache-only') {
            _this.observableQueries[queryId].observableQuery.refetch();
        }
    });
};
QueryManager.prototype.startQuery = function (queryId, options, listener) {
    this.addQueryListener(queryId, listener);
    this.fetchQuery(queryId, options)
        .catch(function (error) { return undefined; });
...result = function () {
    var that = this;
    return new Promise(function (resolve, reject) {
        var subscription = null;
        var observer = {
            next: function (result) {
                resolve(result);
                var selectedObservers = that.observers.filter(function (obs) { return obs !== observer; });
                if (selectedObservers.length === 0) {
                    that.queryManager.removeQuery(that.queryId);
                }
                setTimeout(function () {
                    subscription.unsubscribe();
                }, 0);
            },
            error: function (error) {
                reject(error);
            },
        };
        subscription = that.subscribe(observer);
    });
}...
    ObservableQuery.prototype.setVariables = function (variables, tryFetch) {
if (tryFetch === void 0) { tryFetch = false; }
var newVariables = __assign$12({}, this.variables, variables);
if (isEqual(newVariables, this.variables) && !tryFetch) {
    if (this.observers.length === 0) {
        return new Promise(function (resolve) { return resolve(); });
    }
    return this.result();
}
else {
    this.variables = newVariables;
    if (this.observers.length === 0) {
        return new Promise(function (resolve) { return resolve(); });
    }
    return this.queryManager.fetchQuery(this.queryId, __assign$12({}, this.options, { variables: this.variables }))
...setOptions = function (opts) {
    var oldOptions = this.options;
    this.options = __assign$12({}, this.options, opts);
    if (opts.pollInterval) {
        this.startPolling(opts.pollInterval);
    }
    else if (opts.pollInterval === 0) {
        this.stopPolling();
    }
    var tryFetch = (oldOptions.fetchPolicy !== 'network-only' && opts.fetchPolicy === 'network-only')
        || (oldOptions.fetchPolicy === 'cache-only' && opts.fetchPolicy !== 'cache-only')
        || false;
    return this.setVariables(this.options.variables, tryFetch);
}n/a
setUpQuery = function () {
    var _this = this;
    if (this.shouldSubscribe) {
        this.queryManager.addObservableQuery(this.queryId, this);
    }
    if (!!this.options.pollInterval) {
        if (this.options.fetchPolicy === 'cache-first' || (this.options.fetchPolicy === 'cache-only')) {
            throw new Error('Queries that specify the cache-first and cache-only fetchPolicies cannot also be polling queries.');
        }
        this.isCurrentlyPolling = true;
        this.scheduler.startPollingQuery(this.options, this.queryId);
    }
    var observer = {
        next: function (result) {
            _this.lastResult = result;
            _this.observers.forEach(function (obs) {
                if (obs.next) {
                    obs.next(result);
                }
            });
        },
        error: function (error) {
            _this.observers.forEach(function (obs) {
                if (obs.error) {
                    obs.error(error);
                }
                else {
                    console.error('Unhandled error', error.message, error.stack);
                }
            });
            _this.lastError = error;
        },
    };
    this.queryManager.startQuery(this.queryId, this.options, this.queryManager.queryListenerForObserver(this.queryId, this.options
, observer));
}...
if (observer.next && this.lastResult) {
    observer.next(this.lastResult);
}
if (observer.error && this.lastError) {
    observer.error(this.lastError);
}
if (this.observers.length === 1) {
    this.setUpQuery();
}
var retQuerySubscription = {
    unsubscribe: function () {
        if (!_this.observers.some(function (el) { return el === observer; })) {
            return;
        }
        _this.observers = _this.observers.filter(function (obs) { return obs !== observer; });
...setVariables = function (variables, tryFetch) {
    if (tryFetch === void 0) { tryFetch = false; }
    var newVariables = __assign$12({}, this.variables, variables);
    if (isEqual(newVariables, this.variables) && !tryFetch) {
        if (this.observers.length === 0) {
            return new Promise(function (resolve) { return resolve(); });
        }
        return this.result();
    }
    else {
        this.variables = newVariables;
        if (this.observers.length === 0) {
            return new Promise(function (resolve) { return resolve(); });
        }
        return this.queryManager.fetchQuery(this.queryId, __assign$12({}, this.options, { variables: this.variables }))
            .then(function (result) { return maybeDeepFreeze(result); });
    }
}...
    }
    else if (opts.pollInterval === 0) {
        this.stopPolling();
    }
    var tryFetch = (oldOptions.fetchPolicy !== 'network-only' && opts.fetchPolicy === 'network-only'
;)
        || (oldOptions.fetchPolicy === 'cache-only' && opts.fetchPolicy !== 'cache-only')
        || false;
    return this.setVariables(this.options.variables, tryFetch);
};
ObservableQuery.prototype.setVariables = function (variables, tryFetch) {
    if (tryFetch === void 0) { tryFetch = false; }
    var newVariables = __assign$12({}, this.variables, variables);
    if (isEqual(newVariables, this.variables) && !tryFetch) {
        if (this.observers.length === 0) {
            return new Promise(function (resolve) { return resolve(); });
...startPolling = function (pollInterval) {
    if (this.options.fetchPolicy === 'cache-first' || (this.options.fetchPolicy === 'cache-only')) {
        throw new Error('Queries that specify the cache-first and cache-only fetchPolicies cannot also be polling queries.');
    }
    if (this.isCurrentlyPolling) {
        this.scheduler.stopPollingQuery(this.queryId);
        this.isCurrentlyPolling = false;
    }
    this.options.pollInterval = pollInterval;
    this.isCurrentlyPolling = true;
    this.scheduler.startPollingQuery(this.options, this.queryId);
}...
        }
    };
};
ObservableQuery.prototype.setOptions = function (opts) {
    var oldOptions = this.options;
    this.options = __assign$12({}, this.options, opts);
    if (opts.pollInterval) {
        this.startPolling(opts.pollInterval);
    }
    else if (opts.pollInterval === 0) {
        this.stopPolling();
    }
    var tryFetch = (oldOptions.fetchPolicy !== 'network-only' && opts.fetchPolicy === 'network-only'
;)
        || (oldOptions.fetchPolicy === 'cache-only' && opts.fetchPolicy !== 'cache-only')
        || false;
...stopPolling = function () {
    if (this.isCurrentlyPolling) {
        this.scheduler.stopPollingQuery(this.queryId);
        this.options.pollInterval = undefined;
        this.isCurrentlyPolling = false;
    }
}...
ObservableQuery.prototype.setOptions = function (opts) {
    var oldOptions = this.options;
    this.options = __assign$12({}, this.options, opts);
    if (opts.pollInterval) {
        this.startPolling(opts.pollInterval);
    }
    else if (opts.pollInterval === 0) {
        this.stopPolling();
    }
    var tryFetch = (oldOptions.fetchPolicy !== 'network-only' && opts.fetchPolicy === 'network-only'
;)
        || (oldOptions.fetchPolicy === 'cache-only' && opts.fetchPolicy !== 'cache-only')
        || false;
    return this.setVariables(this.options.variables, tryFetch);
};
ObservableQuery.prototype.setVariables = function (variables, tryFetch) {
...subscribeToMore = function (options) {
    var _this = this;
    var observable = this.queryManager.startGraphQLSubscription({
        query: options.document,
        variables: options.variables,
    });
    var subscription = observable.subscribe({
        next: function (data) {
            if (options.updateQuery) {
                var reducer_1 = options.updateQuery;
                var mapFn = function (previousResult, _a) {
                    var variables = _a.variables;
                    return reducer_1(previousResult, {
                        subscriptionData: { data: data },
                        variables: variables,
                    });
                };
                _this.updateQuery(mapFn);
            }
        },
        error: function (err) {
            if (options.onError) {
                options.onError(err);
            }
            else {
                console.error('Unhandled GraphQL subscription error', err);
            }
        },
    });
    this.subscriptionHandles.push(subscription);
    return function () {
        var i = _this.subscriptionHandles.indexOf(subscription);
        if (i >= 0) {
            _this.subscriptionHandles.splice(i, 1);
            subscription.unsubscribe();
        }
    };
}n/a
tearDownQuery = function () {
    if (this.isCurrentlyPolling) {
        this.scheduler.stopPollingQuery(this.queryId);
        this.isCurrentlyPolling = false;
    }
    this.subscriptionHandles.forEach(function (sub) { return sub.unsubscribe(); });
    this.subscriptionHandles = [];
    this.queryManager.stopQuery(this.queryId);
    if (this.shouldSubscribe) {
        this.queryManager.removeObservableQuery(this.queryId);
    }
    this.observers = [];
}...
    var retQuerySubscription = {
        unsubscribe: function () {
            if (!_this.observers.some(function (el) { return el === observer; })) {
                return;
            }
            _this.observers = _this.observers.filter(function (obs) { return obs !== observer; });
            if (_this.observers.length === 0) {
                _this.tearDownQuery();
            }
        },
    };
    return retQuerySubscription;
};
ObservableQuery.prototype.setUpQuery = function () {
    var _this = this;
...updateQuery = function (mapFn) {
    var _a = this.queryManager.getQueryWithPreviousResult(this.queryId), previousResult = _a.previousResult, variables = _a.variables
, document = _a.document;
    var newResult = tryFunctionOrLogError(function () { return mapFn(previousResult, { variables: variables }); });
    if (newResult) {
        this.queryManager.store.dispatch({
            type: 'APOLLO_UPDATE_QUERY_RESULT',
            newResult: newResult,
            variables: variables,
            document: document,
        });
    }
}...
            var variables = _a.variables;
            var queryVariables = variables;
            return reducer(previousResult, {
                fetchMoreResult: data,
                queryVariables: queryVariables,
            });
        };
        _this.updateQuery(mapFn);
        return fetchMoreResult;
    });
};
ObservableQuery.prototype.subscribeToMore = function (options) {
    var _this = this;
    var observable = this.queryManager.startGraphQLSubscription({
        query: options.document,
...