UNPKG

301 kBSource Map (JSON)View Raw
1{"version":3,"file":"apollo.umd.js","sources":["src/data/storeUtils.js","src/util/assign.js","src/queries/getFromAST.js","src/util/cloneDeep.js","src/queries/queryTransform.js","src/transport/networkInterface.js","src/transport/batching.js","src/transport/batchedNetworkInterface.js","src/actions.js","src/queries/directives.js","src/util/environment.js","src/data/writeToStore.js","src/optimistic-data/store.js","src/util/isEqual.js","src/data/readFromStore.js","src/data/proxy.js","src/data/replaceQueryResults.js","src/util/errorHandling.js","src/data/store.js","src/store.js","src/util/Observable.js","src/errors/ApolloError.js","src/core/types.js","src/util/maybeDeepFreeze.js","src/queries/networkStatus.js","src/core/ObservableQuery.js","src/util/warnOnce.js","src/data/fragmentMatcher.js","src/transport/Deduplicator.js","src/queries/store.js","src/data/resultReducers.js","src/mutations/store.js","src/scheduler/scheduler.js","src/core/QueryManager.js","src/version.js","src/ApolloClient.js"],"sourcesContent":["function isStringValue(value) {\n return value.kind === 'StringValue';\n}\nfunction isBooleanValue(value) {\n return value.kind === 'BooleanValue';\n}\nfunction isIntValue(value) {\n return value.kind === 'IntValue';\n}\nfunction isFloatValue(value) {\n return value.kind === 'FloatValue';\n}\nfunction isVariable(value) {\n return value.kind === 'Variable';\n}\nfunction isObjectValue(value) {\n return value.kind === 'ObjectValue';\n}\nfunction isListValue(value) {\n return value.kind === 'ListValue';\n}\nfunction isEnumValue(value) {\n return value.kind === 'EnumValue';\n}\nexport function valueToObjectRepresentation(argObj, name, value, variables) {\n if (isIntValue(value) || isFloatValue(value)) {\n argObj[name.value] = Number(value.value);\n }\n else if (isBooleanValue(value) || isStringValue(value)) {\n argObj[name.value] = value.value;\n }\n else if (isObjectValue(value)) {\n var nestedArgObj_1 = {};\n value.fields.map(function (obj) {\n return valueToObjectRepresentation(nestedArgObj_1, obj.name, obj.value, variables);\n });\n argObj[name.value] = nestedArgObj_1;\n }\n else if (isVariable(value)) {\n var variableValue = (variables || {})[value.name.value];\n argObj[name.value] = variableValue;\n }\n else if (isListValue(value)) {\n argObj[name.value] = value.values.map(function (listValue) {\n var nestedArgArrayObj = {};\n valueToObjectRepresentation(nestedArgArrayObj, name, listValue, variables);\n return nestedArgArrayObj[name.value];\n });\n }\n else if (isEnumValue(value)) {\n argObj[name.value] = value.value;\n }\n else {\n throw new Error(\"The inline argument \\\"\" + name.value + \"\\\" of kind \\\"\" + value\n .kind + \"\\\" is not supported.\\n Use variables instead of inline arguments to overcome this limitation.\");\n }\n}\nexport function storeKeyNameFromField(field, variables) {\n var directivesObj = null;\n if (field.directives) {\n directivesObj = {};\n field.directives.forEach(function (directive) {\n directivesObj[directive.name.value] = {};\n if (directive.arguments) {\n directive.arguments.forEach(function (_a) {\n var name = _a.name, value = _a.value;\n return valueToObjectRepresentation(directivesObj[directive.name.value], name, value, variables);\n });\n }\n });\n }\n var argObj = null;\n if (field.arguments && field.arguments.length) {\n argObj = {};\n field.arguments.forEach(function (_a) {\n var name = _a.name, value = _a.value;\n return valueToObjectRepresentation(argObj, name, value, variables);\n });\n }\n return getStoreKeyName(field.name.value, argObj, directivesObj);\n}\nexport function getStoreKeyName(fieldName, args, directives) {\n if (directives &&\n directives['connection'] &&\n directives['connection']['key']) {\n if (directives['connection']['filter'] &&\n directives['connection']['filter'].length > 0) {\n var filterKeys = directives['connection']['filter']\n ? directives['connection']['filter']\n : [];\n filterKeys.sort();\n var queryArgs_1 = args;\n var filteredArgs_1 = {};\n filterKeys.forEach(function (key) {\n filteredArgs_1[key] = queryArgs_1[key];\n });\n return directives['connection']['key'] + \"(\" + JSON.stringify(filteredArgs_1) + \")\";\n }\n else {\n return directives['connection']['key'];\n }\n }\n if (args) {\n var stringifiedArgs = JSON.stringify(args);\n return fieldName + \"(\" + stringifiedArgs + \")\";\n }\n return fieldName;\n}\nexport function resultKeyNameFromField(field) {\n return field.alias ? field.alias.value : field.name.value;\n}\nexport function isField(selection) {\n return selection.kind === 'Field';\n}\nexport function isInlineFragment(selection) {\n return selection.kind === 'InlineFragment';\n}\nexport function graphQLResultHasError(result) {\n return result.errors && result.errors.length;\n}\nexport function isIdValue(idObject) {\n return (idObject != null &&\n typeof idObject === 'object' &&\n idObject.type === 'id');\n}\nexport function toIdValue(id, generated) {\n if (generated === void 0) { generated = false; }\n return {\n type: 'id',\n id: id,\n generated: generated,\n };\n}\nexport function isJsonValue(jsonObject) {\n return (jsonObject != null &&\n typeof jsonObject === 'object' &&\n jsonObject.type === 'json');\n}\n//# sourceMappingURL=storeUtils.js.map","export function assign(target) {\n var sources = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n sources[_i - 1] = arguments[_i];\n }\n sources.forEach(function (source) {\n if (typeof source === 'undefined' || source === null) {\n return;\n }\n Object.keys(source).forEach(function (key) {\n target[key] = source[key];\n });\n });\n return target;\n}\n//# sourceMappingURL=assign.js.map","var __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};\nimport { valueToObjectRepresentation } from '../data/storeUtils';\nimport { assign } from '../util/assign';\nexport function getMutationDefinition(doc) {\n checkDocument(doc);\n var mutationDef = null;\n doc.definitions.forEach(function (definition) {\n if (definition.kind === 'OperationDefinition' &&\n definition.operation === 'mutation') {\n mutationDef = definition;\n }\n });\n if (!mutationDef) {\n throw new Error('Must contain a mutation definition.');\n }\n return mutationDef;\n}\nexport function checkDocument(doc) {\n if (doc.kind !== 'Document') {\n throw new Error(\"Expecting a parsed GraphQL document. Perhaps you need to wrap the query string in a \\\"gql\\\" tag? http://docs.apollostack.com/apollo-client/core.html#gql\");\n }\n var foundOperation = false;\n doc.definitions.forEach(function (definition) {\n switch (definition.kind) {\n case 'FragmentDefinition':\n break;\n case 'OperationDefinition':\n if (foundOperation) {\n throw new Error('Queries must have exactly one operation definition.');\n }\n foundOperation = true;\n break;\n default:\n throw new Error(\"Schema type definitions not allowed in queries. Found: \\\"\" + definition.kind + \"\\\"\");\n }\n });\n}\nexport function getOperationName(doc) {\n var res = null;\n doc.definitions.forEach(function (definition) {\n if (definition.kind === 'OperationDefinition' && definition.name) {\n res = definition.name.value;\n }\n });\n return res;\n}\nexport function getFragmentDefinitions(doc) {\n var fragmentDefinitions = doc.definitions.filter(function (definition) {\n if (definition.kind === 'FragmentDefinition') {\n return true;\n }\n else {\n return false;\n }\n });\n return fragmentDefinitions;\n}\nexport function getQueryDefinition(doc) {\n checkDocument(doc);\n var queryDef = null;\n doc.definitions.map(function (definition) {\n if (definition.kind === 'OperationDefinition' &&\n definition.operation === 'query') {\n queryDef = definition;\n }\n });\n if (!queryDef) {\n throw new Error('Must contain a query definition.');\n }\n return queryDef;\n}\nexport function getOperationDefinition(doc) {\n checkDocument(doc);\n var opDef = null;\n doc.definitions.map(function (definition) {\n if (definition.kind === 'OperationDefinition') {\n opDef = definition;\n }\n });\n if (!opDef) {\n throw new Error('Must contain a query definition.');\n }\n return opDef;\n}\nexport function getFragmentDefinition(doc) {\n if (doc.kind !== 'Document') {\n throw new Error(\"Expecting a parsed GraphQL document. Perhaps you need to wrap the query string in a \\\"gql\\\" tag? http://docs.apollostack.com/apollo-client/core.html#gql\");\n }\n if (doc.definitions.length > 1) {\n throw new Error('Fragment must have exactly one definition.');\n }\n var fragmentDef = doc.definitions[0];\n if (fragmentDef.kind !== 'FragmentDefinition') {\n throw new Error('Must be a fragment definition.');\n }\n return fragmentDef;\n}\nexport function createFragmentMap(fragments) {\n if (fragments === void 0) { fragments = []; }\n var symTable = {};\n fragments.forEach(function (fragment) {\n symTable[fragment.name.value] = fragment;\n });\n return symTable;\n}\nexport function getFragmentQueryDocument(document, fragmentName) {\n var actualFragmentName = fragmentName;\n var fragments = [];\n document.definitions.forEach(function (definition) {\n if (definition.kind === 'OperationDefinition') {\n throw new Error(\"Found a \" + definition.operation + \" operation\" + (definition.name\n ? \" named '\" + definition.name.value + \"'\"\n : '') + \". \" +\n 'No operations are allowed when using a fragment as a query. Only fragments are allowed.');\n }\n if (definition.kind === 'FragmentDefinition') {\n fragments.push(definition);\n }\n });\n if (typeof actualFragmentName === 'undefined') {\n if (fragments.length !== 1) {\n throw new Error(\"Found \" + fragments.length + \" fragments. `fragmentName` must be provided when there is not exactly 1 fragment.\");\n }\n actualFragmentName = fragments[0].name.value;\n }\n var query = __assign({}, document, { definitions: [\n {\n kind: 'OperationDefinition',\n operation: 'query',\n selectionSet: {\n kind: 'SelectionSet',\n selections: [\n {\n kind: 'FragmentSpread',\n name: {\n kind: 'Name',\n value: actualFragmentName,\n },\n },\n ],\n },\n }\n ].concat(document.definitions) });\n return query;\n}\nexport function getDefaultValues(definition) {\n if (definition.variableDefinitions && definition.variableDefinitions.length) {\n var defaultValues = definition.variableDefinitions\n .filter(function (_a) {\n var defaultValue = _a.defaultValue;\n return defaultValue;\n })\n .map(function (_a) {\n var variable = _a.variable, defaultValue = _a.defaultValue;\n var defaultValueObj = {};\n valueToObjectRepresentation(defaultValueObj, variable.name, defaultValue);\n return defaultValueObj;\n });\n return assign.apply(void 0, [{}].concat(defaultValues));\n }\n return {};\n}\n//# sourceMappingURL=getFromAST.js.map","export function cloneDeep(value) {\n if (Array.isArray(value)) {\n return value.map(function (item) { return cloneDeep(item); });\n }\n if (value !== null && typeof value === 'object') {\n var nextValue = {};\n for (var key in value) {\n if (value.hasOwnProperty(key)) {\n nextValue[key] = cloneDeep(value[key]);\n }\n }\n return nextValue;\n }\n return value;\n}\n//# sourceMappingURL=cloneDeep.js.map","import { checkDocument } from './getFromAST';\nimport { cloneDeep } from '../util/cloneDeep';\nvar TYPENAME_FIELD = {\n kind: 'Field',\n name: {\n kind: 'Name',\n value: '__typename',\n },\n};\nfunction addTypenameToSelectionSet(selectionSet, isRoot) {\n if (isRoot === void 0) { isRoot = false; }\n if (selectionSet.selections) {\n if (!isRoot) {\n var alreadyHasThisField = selectionSet.selections.some(function (selection) {\n return (selection.kind === 'Field' &&\n selection.name.value === '__typename');\n });\n if (!alreadyHasThisField) {\n selectionSet.selections.push(TYPENAME_FIELD);\n }\n }\n selectionSet.selections.forEach(function (selection) {\n if (selection.kind === 'Field') {\n if (selection.name.value.lastIndexOf('__', 0) !== 0 &&\n selection.selectionSet) {\n addTypenameToSelectionSet(selection.selectionSet);\n }\n }\n else if (selection.kind === 'InlineFragment') {\n if (selection.selectionSet) {\n addTypenameToSelectionSet(selection.selectionSet);\n }\n }\n });\n }\n}\nfunction removeConnectionDirectiveFromSelectionSet(selectionSet) {\n if (selectionSet.selections) {\n selectionSet.selections.forEach(function (selection) {\n if (selection.kind === 'Field' &&\n selection &&\n selection.directives) {\n selection.directives = selection.directives.filter(function (directive) {\n var willRemove = directive.name.value === 'connection';\n if (willRemove) {\n if (!directive.arguments ||\n !directive.arguments.some(function (arg) { return arg.name.value === 'key'; })) {\n console.warn('Removing an @connection directive even though it does not have a key. ' +\n 'You may want to use the key parameter to specify a store key.');\n }\n }\n return !willRemove;\n });\n }\n });\n selectionSet.selections.forEach(function (selection) {\n if (selection.kind === 'Field') {\n if (selection.selectionSet) {\n removeConnectionDirectiveFromSelectionSet(selection.selectionSet);\n }\n }\n else if (selection.kind === 'InlineFragment') {\n if (selection.selectionSet) {\n removeConnectionDirectiveFromSelectionSet(selection.selectionSet);\n }\n }\n });\n }\n}\nexport function addTypenameToDocument(doc) {\n checkDocument(doc);\n var docClone = cloneDeep(doc);\n docClone.definitions.forEach(function (definition) {\n var isRoot = definition.kind === 'OperationDefinition';\n addTypenameToSelectionSet(definition.selectionSet, isRoot);\n });\n return docClone;\n}\nexport function removeConnectionDirectiveFromDocument(doc) {\n checkDocument(doc);\n var docClone = cloneDeep(doc);\n docClone.definitions.forEach(function (definition) {\n removeConnectionDirectiveFromSelectionSet(definition.selectionSet);\n });\n return docClone;\n}\n//# sourceMappingURL=queryTransform.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};\nimport 'whatwg-fetch';\nimport { print } from 'graphql/language/printer';\nimport { removeConnectionDirectiveFromDocument } from '../queries/queryTransform';\nexport function printRequest(request) {\n return __assign({}, request, { query: print(request.query) });\n}\nvar BaseNetworkInterface = (function () {\n function BaseNetworkInterface(uri, opts) {\n if (opts === void 0) { opts = {}; }\n if (!uri) {\n throw new Error('A remote endpoint is required for a network layer');\n }\n if (typeof uri !== 'string') {\n throw new Error('Remote endpoint must be a string');\n }\n this._uri = uri;\n this._opts = __assign({}, opts);\n this._middlewares = [];\n this._afterwares = [];\n }\n BaseNetworkInterface.prototype.query = function (request) {\n return new Promise(function (resolve, reject) {\n reject(new Error('BaseNetworkInterface should not be used directly'));\n });\n };\n return BaseNetworkInterface;\n}());\nexport { BaseNetworkInterface };\nvar HTTPFetchNetworkInterface = (function (_super) {\n __extends(HTTPFetchNetworkInterface, _super);\n function HTTPFetchNetworkInterface() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n HTTPFetchNetworkInterface.prototype.applyMiddlewares = function (requestAndOptions) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n var request = requestAndOptions.request, options = requestAndOptions.options;\n var queue = function (funcs, scope) {\n var next = function () {\n if (funcs.length > 0) {\n var f = funcs.shift();\n if (f) {\n f.applyMiddleware.apply(scope, [{ request: request, options: options }, next]);\n }\n }\n else {\n resolve({\n request: request,\n options: options,\n });\n }\n };\n next();\n };\n queue(_this._middlewares.slice(), _this);\n });\n };\n HTTPFetchNetworkInterface.prototype.applyAfterwares = function (_a) {\n var _this = this;\n var response = _a.response, options = _a.options;\n return new Promise(function (resolve, reject) {\n var responseObject = { response: response, options: options };\n var queue = function (funcs, scope) {\n var next = function () {\n if (funcs.length > 0) {\n var f = funcs.shift();\n if (f) {\n f.applyAfterware.apply(scope, [responseObject, next]);\n }\n }\n else {\n resolve(responseObject);\n }\n };\n next();\n };\n queue(_this._afterwares.slice(), _this);\n });\n };\n HTTPFetchNetworkInterface.prototype.fetchFromRemoteEndpoint = function (_a) {\n var request = _a.request, options = _a.options;\n 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 };\n HTTPFetchNetworkInterface.prototype.query = function (request) {\n var _this = this;\n var options = __assign({}, this._opts);\n return this.applyMiddlewares({\n request: request,\n options: options,\n })\n .then(function (rao) {\n if (rao.request.query) {\n rao.request.query = removeConnectionDirectiveFromDocument(rao.request.query);\n }\n return rao;\n })\n .then(function (rao) { return _this.fetchFromRemoteEndpoint.call(_this, rao); })\n .then(function (response) {\n return _this.applyAfterwares({\n response: response,\n options: options,\n });\n })\n .then(function (_a) {\n var response = _a.response;\n var httpResponse = response;\n return httpResponse.json().catch(function (error) {\n var httpError = new Error(\"Network request failed with status \" + response.status + \" - \\\"\" + response.statusText + \"\\\"\");\n httpError.response = httpResponse;\n httpError.parseError = error;\n throw httpError;\n });\n })\n .then(function (payload) {\n if (!payload.hasOwnProperty('data') &&\n !payload.hasOwnProperty('errors')) {\n throw new Error(\"Server response was missing for query '\" + request.debugName + \"'.\");\n }\n else {\n return payload;\n }\n });\n };\n HTTPFetchNetworkInterface.prototype.use = function (middlewares) {\n var _this = this;\n middlewares.map(function (middleware) {\n if (typeof middleware.applyMiddleware === 'function') {\n _this._middlewares.push(middleware);\n }\n else {\n throw new Error('Middleware must implement the applyMiddleware function');\n }\n });\n return this;\n };\n HTTPFetchNetworkInterface.prototype.useAfter = function (afterwares) {\n var _this = this;\n afterwares.map(function (afterware) {\n if (typeof afterware.applyAfterware === 'function') {\n _this._afterwares.push(afterware);\n }\n else {\n throw new Error('Afterware must implement the applyAfterware function');\n }\n });\n return this;\n };\n return HTTPFetchNetworkInterface;\n}(BaseNetworkInterface));\nexport { HTTPFetchNetworkInterface };\nexport function createNetworkInterface(uriOrInterfaceOpts, secondArgOpts) {\n if (secondArgOpts === void 0) { secondArgOpts = {}; }\n if (!uriOrInterfaceOpts) {\n throw new Error('You must pass an options argument to createNetworkInterface.');\n }\n var uri;\n var opts;\n if (typeof uriOrInterfaceOpts === 'string') {\n 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.\");\n opts = secondArgOpts.opts;\n uri = uriOrInterfaceOpts;\n }\n else {\n opts = uriOrInterfaceOpts.opts;\n uri = uriOrInterfaceOpts.uri;\n }\n return new HTTPFetchNetworkInterface(uri, opts);\n}\n//# sourceMappingURL=networkInterface.js.map","var QueryBatcher = (function () {\n function QueryBatcher(_a) {\n var batchInterval = _a.batchInterval, _b = _a.batchMax, batchMax = _b === void 0 ? 0 : _b, batchFetchFunction = _a.batchFetchFunction;\n this.queuedRequests = [];\n this.queuedRequests = [];\n this.batchInterval = batchInterval;\n this.batchMax = batchMax;\n this.batchFetchFunction = batchFetchFunction;\n }\n QueryBatcher.prototype.enqueueRequest = function (request) {\n var fetchRequest = {\n request: request,\n };\n this.queuedRequests.push(fetchRequest);\n fetchRequest.promise = new Promise(function (resolve, reject) {\n fetchRequest.resolve = resolve;\n fetchRequest.reject = reject;\n });\n if (this.queuedRequests.length === 1) {\n this.scheduleQueueConsumption();\n }\n if (this.queuedRequests.length === this.batchMax) {\n this.consumeQueue();\n }\n return fetchRequest.promise;\n };\n QueryBatcher.prototype.consumeQueue = function () {\n var requests = this.queuedRequests.map(function (queuedRequest) { return queuedRequest.request; });\n var promises = [];\n var resolvers = [];\n var rejecters = [];\n this.queuedRequests.forEach(function (fetchRequest, index) {\n promises.push(fetchRequest.promise);\n resolvers.push(fetchRequest.resolve);\n rejecters.push(fetchRequest.reject);\n });\n this.queuedRequests = [];\n var batchedPromise = this.batchFetchFunction(requests);\n batchedPromise\n .then(function (results) {\n results.forEach(function (result, index) {\n resolvers[index](result);\n });\n })\n .catch(function (error) {\n rejecters.forEach(function (rejecter, index) {\n rejecters[index](error);\n });\n });\n return promises;\n };\n QueryBatcher.prototype.scheduleQueueConsumption = function () {\n var _this = this;\n setTimeout(function () {\n if (_this.queuedRequests.length) {\n _this.consumeQueue();\n }\n }, this.batchInterval);\n };\n return QueryBatcher;\n}());\nexport { QueryBatcher };\n//# sourceMappingURL=batching.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};\nimport 'whatwg-fetch';\nimport { BaseNetworkInterface, printRequest, } from './networkInterface';\nimport { removeConnectionDirectiveFromDocument } from '../queries/queryTransform';\nimport { QueryBatcher } from './batching';\nimport { assign } from '../util/assign';\nvar HTTPBatchedNetworkInterface = (function (_super) {\n __extends(HTTPBatchedNetworkInterface, _super);\n function HTTPBatchedNetworkInterface(_a) {\n var uri = _a.uri, _b = _a.batchInterval, batchInterval = _b === void 0 ? 10 : _b, _c = _a.batchMax, batchMax = _c === void 0 ? 0 : _c, fetchOpts = _a.fetchOpts;\n var _this = _super.call(this, uri, fetchOpts) || this;\n if (typeof batchInterval !== 'number') {\n throw new Error(\"batchInterval must be a number, got \" + batchInterval);\n }\n if (typeof batchMax !== 'number') {\n throw new Error(\"batchMax must be a number, got \" + batchMax);\n }\n _this.batcher = new QueryBatcher({\n batchInterval: batchInterval,\n batchMax: batchMax,\n batchFetchFunction: _this.batchQuery.bind(_this),\n });\n return _this;\n }\n HTTPBatchedNetworkInterface.prototype.query = function (request) {\n return this.batcher.enqueueRequest(request);\n };\n HTTPBatchedNetworkInterface.prototype.batchQuery = function (requests) {\n var _this = this;\n var options = __assign({}, this._opts);\n var middlewarePromise = this.applyBatchMiddlewares({\n requests: requests,\n options: options,\n });\n return new Promise(function (resolve, reject) {\n middlewarePromise\n .then(function (batchRequestAndOptions) {\n batchRequestAndOptions.requests.forEach(function (r) {\n if (r.query)\n r.query = removeConnectionDirectiveFromDocument(r.query);\n });\n return _this.batchedFetchFromRemoteEndpoint(batchRequestAndOptions)\n .then(function (result) {\n var httpResponse = result;\n if (!httpResponse.ok) {\n return _this.applyBatchAfterwares({\n responses: [httpResponse],\n options: batchRequestAndOptions.options,\n }).then(function () {\n var httpError = new Error(\"Network request failed with status \" + httpResponse.status + \" - \\\"\" + httpResponse.statusText + \"\\\"\");\n httpError.response = httpResponse;\n throw httpError;\n });\n }\n return result.json();\n })\n .then(function (responses) {\n if (typeof responses.map !== 'function') {\n throw new Error('BatchingNetworkInterface: server response is not an array');\n }\n _this.applyBatchAfterwares({\n responses: responses,\n options: batchRequestAndOptions.options,\n })\n .then(function (responseAndOptions) {\n resolve(responseAndOptions.responses);\n })\n .catch(function (error) {\n reject(error);\n });\n });\n })\n .catch(function (error) {\n reject(error);\n });\n });\n };\n HTTPBatchedNetworkInterface.prototype.applyBatchMiddlewares = function (_a) {\n var _this = this;\n var requests = _a.requests, options = _a.options;\n return new Promise(function (resolve, reject) {\n var queue = function (funcs, scope) {\n var next = function () {\n if (funcs.length > 0) {\n var f = funcs.shift();\n if (f) {\n f.applyBatchMiddleware.apply(scope, [\n { requests: requests, options: options },\n next,\n ]);\n }\n }\n else {\n resolve({\n requests: requests,\n options: options,\n });\n }\n };\n next();\n };\n queue(_this._middlewares.slice(), _this);\n });\n };\n HTTPBatchedNetworkInterface.prototype.applyBatchAfterwares = function (_a) {\n var _this = this;\n var responses = _a.responses, options = _a.options;\n return new Promise(function (resolve, reject) {\n var responseObject = { responses: responses, options: options };\n var queue = function (funcs, scope) {\n var next = function () {\n if (funcs.length > 0) {\n var f = funcs.shift();\n if (f) {\n f.applyBatchAfterware.apply(scope, [responseObject, next]);\n }\n }\n else {\n resolve(responseObject);\n }\n };\n next();\n };\n queue(_this._afterwares.slice(), _this);\n });\n };\n HTTPBatchedNetworkInterface.prototype.use = function (middlewares) {\n var _this = this;\n middlewares.map(function (middleware) {\n if (typeof middleware.applyBatchMiddleware === 'function') {\n _this._middlewares.push(middleware);\n }\n else {\n throw new Error('Batch middleware must implement the applyBatchMiddleware function');\n }\n });\n return this;\n };\n HTTPBatchedNetworkInterface.prototype.useAfter = function (afterwares) {\n var _this = this;\n afterwares.map(function (afterware) {\n if (typeof afterware.applyBatchAfterware === 'function') {\n _this._afterwares.push(afterware);\n }\n else {\n throw new Error('Batch afterware must implement the applyBatchAfterware function');\n }\n });\n return this;\n };\n HTTPBatchedNetworkInterface.prototype.batchedFetchFromRemoteEndpoint = function (batchRequestAndOptions) {\n var options = {};\n assign(options, batchRequestAndOptions.options);\n var printedRequests = batchRequestAndOptions.requests.map(function (request) {\n return printRequest(request);\n });\n return fetch(this._uri, __assign({}, this._opts, { body: JSON.stringify(printedRequests), method: 'POST' }, options, { headers: __assign({ Accept: '*/*', 'Content-Type': 'application/json' }, options.headers) }));\n };\n return HTTPBatchedNetworkInterface;\n}(BaseNetworkInterface));\nexport { HTTPBatchedNetworkInterface };\nexport function createBatchingNetworkInterface(options) {\n if (!options) {\n throw new Error('You must pass an options argument to createNetworkInterface.');\n }\n return new HTTPBatchedNetworkInterface({\n uri: options.uri,\n batchInterval: options.batchInterval,\n batchMax: options.batchMax,\n fetchOpts: options.opts || {},\n });\n}\n//# sourceMappingURL=batchedNetworkInterface.js.map","export function isQueryResultAction(action) {\n return action.type === 'APOLLO_QUERY_RESULT';\n}\nexport function isQueryErrorAction(action) {\n return action.type === 'APOLLO_QUERY_ERROR';\n}\nexport function isQueryInitAction(action) {\n return action.type === 'APOLLO_QUERY_INIT';\n}\nexport function isQueryResultClientAction(action) {\n return action.type === 'APOLLO_QUERY_RESULT_CLIENT';\n}\nexport function isQueryStopAction(action) {\n return action.type === 'APOLLO_QUERY_STOP';\n}\nexport function isMutationInitAction(action) {\n return action.type === 'APOLLO_MUTATION_INIT';\n}\nexport function isMutationResultAction(action) {\n return action.type === 'APOLLO_MUTATION_RESULT';\n}\nexport function isMutationErrorAction(action) {\n return action.type === 'APOLLO_MUTATION_ERROR';\n}\nexport function isUpdateQueryResultAction(action) {\n return action.type === 'APOLLO_UPDATE_QUERY_RESULT';\n}\nexport function isStoreResetAction(action) {\n return action.type === 'APOLLO_STORE_RESET';\n}\nexport function isSubscriptionResultAction(action) {\n return action.type === 'APOLLO_SUBSCRIPTION_RESULT';\n}\nexport function isWriteAction(action) {\n return action.type === 'APOLLO_WRITE';\n}\n//# sourceMappingURL=actions.js.map","export function shouldInclude(selection, variables) {\n if (variables === void 0) { variables = {}; }\n if (!selection.directives) {\n return true;\n }\n var res = true;\n selection.directives.forEach(function (directive) {\n if (directive.name.value !== 'skip' && directive.name.value !== 'include') {\n return;\n }\n var directiveArguments = directive.arguments || [];\n var directiveName = directive.name.value;\n if (directiveArguments.length !== 1) {\n throw new Error(\"Incorrect number of arguments for the @\" + directiveName + \" directive.\");\n }\n var ifArgument = directiveArguments[0];\n if (!ifArgument.name || ifArgument.name.value !== 'if') {\n throw new Error(\"Invalid argument for the @\" + directiveName + \" directive.\");\n }\n var ifValue = directiveArguments[0].value;\n var evaledValue = false;\n if (!ifValue || ifValue.kind !== 'BooleanValue') {\n if (ifValue.kind !== 'Variable') {\n throw new Error(\"Argument for the @\" + directiveName + \" directive must be a variable or a bool ean value.\");\n }\n else {\n evaledValue = variables[ifValue.name.value];\n if (evaledValue === undefined) {\n throw new Error(\"Invalid variable referenced in @\" + directiveName + \" directive.\");\n }\n }\n }\n else {\n evaledValue = ifValue.value;\n }\n if (directiveName === 'skip') {\n evaledValue = !evaledValue;\n }\n if (!evaledValue) {\n res = false;\n }\n });\n return res;\n}\n//# sourceMappingURL=directives.js.map","export function getEnv() {\n if (typeof process !== 'undefined' && process.env.NODE_ENV) {\n return process.env.NODE_ENV;\n }\n return 'development';\n}\nexport function isEnv(env) {\n return getEnv() === env;\n}\nexport function isProduction() {\n return isEnv('production') === true;\n}\nexport function isDevelopment() {\n return isEnv('development') === true;\n}\nexport function isTest() {\n return isEnv('test') === true;\n}\n//# sourceMappingURL=environment.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};\nimport { getDefaultValues, getOperationDefinition, getQueryDefinition, getFragmentDefinitions, createFragmentMap, } from '../queries/getFromAST';\nimport { storeKeyNameFromField, resultKeyNameFromField, isField, isInlineFragment, } from './storeUtils';\nimport { isIdValue } from './storeUtils';\nimport { shouldInclude } from '../queries/directives';\nimport { isProduction } from '../util/environment';\nimport { assign } from '../util/assign';\nvar WriteError = (function (_super) {\n __extends(WriteError, _super);\n function WriteError() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'WriteError';\n return _this;\n }\n return WriteError;\n}(Error));\nfunction enhanceErrorWithDocument(error, document) {\n var enhancedError = new WriteError(\"Error writing result to store for query \" + (document.loc &&\n document.loc.source &&\n document.loc.source.body));\n enhancedError.message += '/n' + error.message;\n enhancedError.stack = error.stack;\n return enhancedError;\n}\nexport function writeQueryToStore(_a) {\n 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, fragmentMatcherFunction = _a.fragmentMatcherFunction;\n var queryDefinition = getQueryDefinition(query);\n variables = assign({}, getDefaultValues(queryDefinition), variables);\n try {\n return writeSelectionSetToStore({\n dataId: 'ROOT_QUERY',\n result: result,\n selectionSet: queryDefinition.selectionSet,\n context: {\n store: store,\n processedData: {},\n variables: variables,\n dataIdFromObject: dataIdFromObject,\n fragmentMap: fragmentMap,\n fragmentMatcherFunction: fragmentMatcherFunction,\n },\n });\n }\n catch (e) {\n throw enhanceErrorWithDocument(e, query);\n }\n}\nexport function writeResultToStore(_a) {\n var dataId = _a.dataId, result = _a.result, document = _a.document, _b = _a.store, store = _b === void 0 ? {} : _b, variables = _a.variables, dataIdFromObject = _a.dataIdFromObject, fragmentMatcherFunction = _a.fragmentMatcherFunction;\n var operationDefinition = getOperationDefinition(document);\n var selectionSet = operationDefinition.selectionSet;\n var fragmentMap = createFragmentMap(getFragmentDefinitions(document));\n variables = assign({}, getDefaultValues(operationDefinition), variables);\n try {\n return writeSelectionSetToStore({\n result: result,\n dataId: dataId,\n selectionSet: selectionSet,\n context: {\n store: store,\n processedData: {},\n variables: variables,\n dataIdFromObject: dataIdFromObject,\n fragmentMap: fragmentMap,\n fragmentMatcherFunction: fragmentMatcherFunction,\n },\n });\n }\n catch (e) {\n throw enhanceErrorWithDocument(e, document);\n }\n}\nexport function writeSelectionSetToStore(_a) {\n var result = _a.result, dataId = _a.dataId, selectionSet = _a.selectionSet, context = _a.context;\n var variables = context.variables, store = context.store, dataIdFromObject = context.dataIdFromObject, fragmentMap = context.fragmentMap;\n selectionSet.selections.forEach(function (selection) {\n var included = shouldInclude(selection, variables);\n if (isField(selection)) {\n var resultFieldKey = resultKeyNameFromField(selection);\n var value = result[resultFieldKey];\n if (included) {\n if (typeof value !== 'undefined') {\n writeFieldToStore({\n dataId: dataId,\n value: value,\n field: selection,\n context: context,\n });\n }\n else {\n if (context.fragmentMatcherFunction) {\n if (!isProduction()) {\n console.warn(\"Missing field \" + resultFieldKey + \" in \" + JSON.stringify(result, null, 2).substring(0, 100));\n }\n }\n }\n }\n }\n else {\n var fragment = void 0;\n if (isInlineFragment(selection)) {\n fragment = selection;\n }\n else {\n fragment = (fragmentMap || {})[selection.name.value];\n if (!fragment) {\n throw new Error(\"No fragment named \" + selection.name.value + \".\");\n }\n }\n var matches = true;\n if (context.fragmentMatcherFunction && fragment.typeCondition) {\n var idValue = { type: 'id', id: 'self', generated: false };\n var fakeContext = {\n store: { self: result },\n returnPartialData: false,\n hasMissingField: false,\n customResolvers: {},\n };\n matches = context.fragmentMatcherFunction(idValue, fragment.typeCondition.name.value, fakeContext);\n if (fakeContext.returnPartialData) {\n console.error('WARNING: heuristic fragment matching going on!');\n }\n }\n if (included && matches) {\n writeSelectionSetToStore({\n result: result,\n selectionSet: fragment.selectionSet,\n dataId: dataId,\n context: context,\n });\n }\n }\n });\n return store;\n}\nfunction isGeneratedId(id) {\n return id[0] === '$';\n}\nfunction mergeWithGenerated(generatedKey, realKey, cache) {\n var generated = cache[generatedKey];\n var real = cache[realKey];\n Object.keys(generated).forEach(function (key) {\n var value = generated[key];\n var realValue = real[key];\n if (isIdValue(value) && isGeneratedId(value.id) && isIdValue(realValue)) {\n mergeWithGenerated(value.id, realValue.id, cache);\n }\n delete cache[generatedKey];\n cache[realKey] = __assign({}, generated, real);\n });\n}\nfunction isDataProcessed(dataId, field, processedData) {\n if (!processedData) {\n return false;\n }\n if (processedData[dataId]) {\n if (processedData[dataId].indexOf(field) >= 0) {\n return true;\n }\n else {\n processedData[dataId].push(field);\n }\n }\n else {\n processedData[dataId] = [field];\n }\n return false;\n}\nfunction writeFieldToStore(_a) {\n var field = _a.field, value = _a.value, dataId = _a.dataId, context = _a.context;\n var variables = context.variables, dataIdFromObject = context.dataIdFromObject, store = context.store, fragmentMap = context.fragmentMap;\n var storeValue;\n var storeFieldName = storeKeyNameFromField(field, variables);\n var shouldMerge = false;\n var generatedKey = '';\n if (!field.selectionSet || value === null) {\n storeValue =\n value != null && typeof value === 'object'\n ?\n { type: 'json', json: value }\n :\n value;\n }\n else if (Array.isArray(value)) {\n var generatedId = dataId + \".\" + storeFieldName;\n storeValue = processArrayValue(value, generatedId, field.selectionSet, context);\n }\n else {\n var valueDataId = dataId + \".\" + storeFieldName;\n var generated = true;\n if (!isGeneratedId(valueDataId)) {\n valueDataId = '$' + valueDataId;\n }\n if (dataIdFromObject) {\n var semanticId = dataIdFromObject(value);\n if (semanticId && isGeneratedId(semanticId)) {\n throw new Error('IDs returned by dataIdFromObject cannot begin with the \"$\" character.');\n }\n if (semanticId) {\n valueDataId = semanticId;\n generated = false;\n }\n }\n if (!isDataProcessed(valueDataId, field, context.processedData)) {\n writeSelectionSetToStore({\n dataId: valueDataId,\n result: value,\n selectionSet: field.selectionSet,\n context: context,\n });\n }\n storeValue = {\n type: 'id',\n id: valueDataId,\n generated: generated,\n };\n if (store[dataId] && store[dataId][storeFieldName] !== storeValue) {\n var escapedId = store[dataId][storeFieldName];\n if (isIdValue(storeValue) &&\n storeValue.generated &&\n isIdValue(escapedId) &&\n !escapedId.generated) {\n throw new Error(\"Store error: the application attempted to write an object with no provided id\" +\n (\" but the store already contains an id of \" + escapedId.id + \" for this object.\"));\n }\n if (isIdValue(escapedId) && escapedId.generated) {\n generatedKey = escapedId.id;\n shouldMerge = true;\n }\n }\n }\n var newStoreObj = __assign({}, store[dataId], (_b = {}, _b[storeFieldName] = storeValue, _b));\n if (shouldMerge) {\n mergeWithGenerated(generatedKey, storeValue.id, store);\n }\n if (!store[dataId] || storeValue !== store[dataId][storeFieldName]) {\n store[dataId] = newStoreObj;\n }\n var _b;\n}\nfunction processArrayValue(value, generatedId, selectionSet, context) {\n return value.map(function (item, index) {\n if (item === null) {\n return null;\n }\n var itemDataId = generatedId + \".\" + index;\n if (Array.isArray(item)) {\n return processArrayValue(item, itemDataId, selectionSet, context);\n }\n var generated = true;\n if (context.dataIdFromObject) {\n var semanticId = context.dataIdFromObject(item);\n if (semanticId) {\n itemDataId = semanticId;\n generated = false;\n }\n }\n if (!isDataProcessed(itemDataId, selectionSet, context.processedData)) {\n writeSelectionSetToStore({\n dataId: itemDataId,\n result: item,\n selectionSet: selectionSet,\n context: context,\n });\n }\n var idStoreValue = {\n type: 'id',\n id: itemDataId,\n generated: generated,\n };\n return idStoreValue;\n });\n}\n//# sourceMappingURL=writeToStore.js.map","var __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};\nimport { isMutationInitAction, isMutationResultAction, isMutationErrorAction, } from '../actions';\nimport { data } from '../data/store';\nimport { assign } from '../util/assign';\nvar optimisticDefaultState = [];\nexport function getDataWithOptimisticResults(store) {\n if (store.optimistic.length === 0) {\n return store.data;\n }\n var patches = store.optimistic.map(function (opt) { return opt.data; });\n return assign.apply(void 0, [{}, store.data].concat(patches));\n}\nexport function optimistic(previousState, action, store, config) {\n if (previousState === void 0) { previousState = optimisticDefaultState; }\n if (isMutationInitAction(action) && action.optimisticResponse) {\n var optimisticResponse = void 0;\n if (typeof action.optimisticResponse === 'function') {\n optimisticResponse = action.optimisticResponse(action.variables);\n }\n else {\n optimisticResponse = action.optimisticResponse;\n }\n var fakeMutationResultAction = {\n type: 'APOLLO_MUTATION_RESULT',\n result: { data: optimisticResponse },\n document: action.mutation,\n operationName: action.operationName,\n variables: action.variables,\n mutationId: action.mutationId,\n extraReducers: action.extraReducers,\n updateQueries: action.updateQueries,\n update: action.update,\n };\n var optimisticData = getDataWithOptimisticResults(__assign({}, store, { optimistic: previousState }));\n var patch = getOptimisticDataPatch(optimisticData, fakeMutationResultAction, store.queries, store.mutations, config);\n var optimisticState = {\n action: fakeMutationResultAction,\n data: patch,\n mutationId: action.mutationId,\n };\n var newState = previousState.concat([optimisticState]);\n return newState;\n }\n else if ((isMutationErrorAction(action) || isMutationResultAction(action)) &&\n previousState.some(function (change) { return change.mutationId === action.mutationId; })) {\n return rollbackOptimisticData(function (change) { return change.mutationId === action.mutationId; }, previousState, store, config);\n }\n return previousState;\n}\nfunction getOptimisticDataPatch(previousData, optimisticAction, queries, mutations, config) {\n var optimisticData = data(previousData, optimisticAction, config);\n var patch = {};\n Object.keys(optimisticData).forEach(function (key) {\n if (optimisticData[key] !== previousData[key]) {\n patch[key] = optimisticData[key];\n }\n });\n return patch;\n}\nfunction rollbackOptimisticData(filterFn, previousState, store, config) {\n if (previousState === void 0) { previousState = optimisticDefaultState; }\n var optimisticData = assign({}, store.data);\n var newState = previousState\n .filter(function (item) { return !filterFn(item); })\n .map(function (change) {\n var patch = getOptimisticDataPatch(optimisticData, change.action, store.queries, store.mutations, config);\n assign(optimisticData, patch);\n return __assign({}, change, { data: patch });\n });\n return newState;\n}\n//# sourceMappingURL=store.js.map","export function isEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (a != null &&\n typeof a === 'object' &&\n b != null &&\n typeof b === 'object') {\n for (var key in a) {\n if (a.hasOwnProperty(key)) {\n if (!b.hasOwnProperty(key)) {\n return false;\n }\n if (!isEqual(a[key], b[key])) {\n return false;\n }\n }\n }\n for (var key in b) {\n if (!a.hasOwnProperty(key)) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n//# sourceMappingURL=isEqual.js.map","var __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};\nimport graphqlAnywhere from 'graphql-anywhere';\nimport { isJsonValue, isIdValue } from './storeUtils';\nimport { getStoreKeyName } from './storeUtils';\nimport { getDefaultValues, getQueryDefinition } from '../queries/getFromAST';\nimport { isEqual } from '../util/isEqual';\nimport { assign } from '../util/assign';\nexport var ID_KEY = typeof Symbol !== 'undefined' ? Symbol('id') : '@@id';\nexport function readQueryFromStore(options) {\n var optsPatch = { returnPartialData: false };\n return diffQueryAgainstStore(__assign({}, options, optsPatch)).result;\n}\nvar readStoreResolver = function (fieldName, idValue, args, context, _a) {\n var resultKey = _a.resultKey, directives = _a.directives;\n assertIdValue(idValue);\n var objId = idValue.id;\n var obj = context.store[objId];\n var storeKeyName = getStoreKeyName(fieldName, args, directives);\n var fieldValue = (obj || {})[storeKeyName];\n if (typeof fieldValue === 'undefined') {\n if (context.customResolvers &&\n obj &&\n (obj.__typename || objId === 'ROOT_QUERY')) {\n var typename = obj.__typename || 'Query';\n var type = context.customResolvers[typename];\n if (type) {\n var resolver = type[fieldName];\n if (resolver) {\n return resolver(obj, args);\n }\n }\n }\n if (!context.returnPartialData) {\n throw new Error(\"Can't find field \" + storeKeyName + \" on object (\" + objId + \") \" + JSON.stringify(obj, null, 2) + \".\");\n }\n context.hasMissingField = true;\n return fieldValue;\n }\n if (isJsonValue(fieldValue)) {\n if (idValue.previousResult &&\n isEqual(idValue.previousResult[resultKey], fieldValue.json)) {\n return idValue.previousResult[resultKey];\n }\n return fieldValue.json;\n }\n if (idValue.previousResult) {\n fieldValue = addPreviousResultToIdValues(fieldValue, idValue.previousResult[resultKey]);\n }\n return fieldValue;\n};\nexport function diffQueryAgainstStore(_a) {\n var store = _a.store, query = _a.query, variables = _a.variables, previousResult = _a.previousResult, _b = _a.returnPartialData, returnPartialData = _b === void 0 ? true : _b, _c = _a.rootId, rootId = _c === void 0 ? 'ROOT_QUERY' : _c, fragmentMatcherFunction = _a.fragmentMatcherFunction, config = _a.config;\n var queryDefinition = getQueryDefinition(query);\n variables = assign({}, getDefaultValues(queryDefinition), variables);\n var context = {\n store: store,\n returnPartialData: returnPartialData,\n customResolvers: (config && config.customResolvers) || {},\n hasMissingField: false,\n };\n var rootIdValue = {\n type: 'id',\n id: rootId,\n previousResult: previousResult,\n };\n var result = graphqlAnywhere(readStoreResolver, query, rootIdValue, context, variables, {\n fragmentMatcher: fragmentMatcherFunction,\n resultMapper: resultMapper,\n });\n return {\n result: result,\n isMissing: context.hasMissingField,\n };\n}\nexport function assertIdValue(idValue) {\n if (!isIdValue(idValue)) {\n throw new Error(\"Encountered a sub-selection on the query, but the store doesn't have an object reference. This should never happen during normal use unless you have custom code that is directly manipulating the store; please file an issue.\");\n }\n}\nfunction addPreviousResultToIdValues(value, previousResult) {\n if (isIdValue(value)) {\n return __assign({}, value, { previousResult: previousResult });\n }\n else if (Array.isArray(value)) {\n var idToPreviousResult_1 = {};\n if (Array.isArray(previousResult)) {\n previousResult.forEach(function (item) {\n if (item && item[ID_KEY]) {\n idToPreviousResult_1[item[ID_KEY]] = item;\n }\n });\n }\n return value.map(function (item, i) {\n var itemPreviousResult = previousResult && previousResult[i];\n if (isIdValue(item)) {\n itemPreviousResult = idToPreviousResult_1[item.id] || itemPreviousResult;\n }\n return addPreviousResultToIdValues(item, itemPreviousResult);\n });\n }\n return value;\n}\nfunction resultMapper(resultFields, idValue) {\n if (idValue.previousResult) {\n var currentResultKeys_1 = Object.keys(resultFields);\n var sameAsPreviousResult = Object.keys(idValue.previousResult).reduce(function (sameKeys, key) { return sameKeys && currentResultKeys_1.indexOf(key) > -1; }, true) &&\n currentResultKeys_1.reduce(function (same, key) {\n return same &&\n areNestedArrayItemsStrictlyEqual(resultFields[key], idValue.previousResult[key]);\n }, true);\n if (sameAsPreviousResult) {\n return idValue.previousResult;\n }\n }\n Object.defineProperty(resultFields, ID_KEY, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: idValue.id,\n });\n return resultFields;\n}\nfunction areNestedArrayItemsStrictlyEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length) {\n return false;\n }\n return a.reduce(function (same, item, i) { return same && areNestedArrayItemsStrictlyEqual(item, b[i]); }, true);\n}\n//# sourceMappingURL=readFromStore.js.map","var __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};\nimport { getFragmentQueryDocument, getOperationName, } from '../queries/getFromAST';\nimport { getDataWithOptimisticResults } from '../optimistic-data/store';\nimport { readQueryFromStore } from './readFromStore';\nimport { writeResultToStore } from './writeToStore';\nimport { addTypenameToDocument } from '../queries/queryTransform';\nvar ReduxDataProxy = (function () {\n function ReduxDataProxy(store, reduxRootSelector, fragmentMatcher, reducerConfig) {\n this.store = store;\n this.reduxRootSelector = reduxRootSelector;\n this.reducerConfig = reducerConfig;\n this.fragmentMatcher = fragmentMatcher;\n }\n ReduxDataProxy.prototype.readQuery = function (_a) {\n var query = _a.query, variables = _a.variables;\n if (this.reducerConfig.addTypename) {\n query = addTypenameToDocument(query);\n }\n return readQueryFromStore({\n rootId: 'ROOT_QUERY',\n store: getDataWithOptimisticResults(this.reduxRootSelector(this.store.getState())),\n query: query,\n variables: variables,\n fragmentMatcherFunction: this.fragmentMatcher.match,\n config: this.reducerConfig,\n });\n };\n ReduxDataProxy.prototype.readFragment = function (_a) {\n var id = _a.id, fragment = _a.fragment, fragmentName = _a.fragmentName, variables = _a.variables;\n var query = getFragmentQueryDocument(fragment, fragmentName);\n var data = getDataWithOptimisticResults(this.reduxRootSelector(this.store.getState()));\n if (typeof data[id] === 'undefined') {\n return null;\n }\n if (this.reducerConfig.addTypename) {\n query = addTypenameToDocument(query);\n }\n return readQueryFromStore({\n rootId: id,\n store: data,\n query: query,\n variables: variables,\n fragmentMatcherFunction: this.fragmentMatcher.match,\n config: this.reducerConfig,\n });\n };\n ReduxDataProxy.prototype.writeQuery = function (_a) {\n var data = _a.data, query = _a.query, variables = _a.variables;\n if (this.reducerConfig.addTypename) {\n query = addTypenameToDocument(query);\n }\n this.store.dispatch({\n type: 'APOLLO_WRITE',\n writes: [\n {\n rootId: 'ROOT_QUERY',\n result: data,\n document: query,\n operationName: getOperationName(query),\n variables: variables || {},\n },\n ],\n });\n };\n ReduxDataProxy.prototype.writeFragment = function (_a) {\n var data = _a.data, id = _a.id, fragment = _a.fragment, fragmentName = _a.fragmentName, variables = _a.variables;\n var document = getFragmentQueryDocument(fragment, fragmentName);\n if (this.reducerConfig.addTypename) {\n document = addTypenameToDocument(document);\n }\n this.store.dispatch({\n type: 'APOLLO_WRITE',\n writes: [\n {\n rootId: id,\n result: data,\n document: document,\n operationName: getOperationName(document),\n variables: variables || {},\n },\n ],\n });\n };\n return ReduxDataProxy;\n}());\nexport { ReduxDataProxy };\nvar TransactionDataProxy = (function () {\n function TransactionDataProxy(data, reducerConfig) {\n this.data = __assign({}, data);\n this.reducerConfig = reducerConfig;\n this.writes = [];\n this.isFinished = false;\n }\n TransactionDataProxy.prototype.finish = function () {\n this.assertNotFinished();\n var writes = this.writes;\n this.writes = [];\n this.isFinished = true;\n return writes;\n };\n TransactionDataProxy.prototype.readQuery = function (_a) {\n var query = _a.query, variables = _a.variables;\n this.assertNotFinished();\n if (this.reducerConfig.addTypename) {\n query = addTypenameToDocument(query);\n }\n return readQueryFromStore({\n rootId: 'ROOT_QUERY',\n store: this.data,\n query: query,\n variables: variables,\n config: this.reducerConfig,\n fragmentMatcherFunction: this.reducerConfig.fragmentMatcher,\n });\n };\n TransactionDataProxy.prototype.readFragment = function (_a) {\n var id = _a.id, fragment = _a.fragment, fragmentName = _a.fragmentName, variables = _a.variables;\n this.assertNotFinished();\n if (!fragment) {\n throw new Error('fragment option is required. Please pass a GraphQL fragment to readFragment.');\n }\n var data = this.data;\n var query = getFragmentQueryDocument(fragment, fragmentName);\n if (this.reducerConfig.addTypename) {\n query = addTypenameToDocument(query);\n }\n if (typeof data[id] === 'undefined') {\n return null;\n }\n return readQueryFromStore({\n rootId: id,\n store: data,\n query: query,\n variables: variables,\n config: this.reducerConfig,\n fragmentMatcherFunction: this.reducerConfig.fragmentMatcher,\n });\n };\n TransactionDataProxy.prototype.writeQuery = function (_a) {\n var data = _a.data, query = _a.query, variables = _a.variables;\n this.assertNotFinished();\n if (this.reducerConfig.addTypename) {\n query = addTypenameToDocument(query);\n }\n this.applyWrite({\n rootId: 'ROOT_QUERY',\n result: data,\n document: query,\n operationName: getOperationName(query),\n variables: variables || {},\n });\n };\n TransactionDataProxy.prototype.writeFragment = function (_a) {\n var data = _a.data, id = _a.id, fragment = _a.fragment, fragmentName = _a.fragmentName, variables = _a.variables;\n this.assertNotFinished();\n if (!fragment) {\n throw new Error('fragment option is required. Please pass a GraphQL fragment to writeFragment.');\n }\n var query = getFragmentQueryDocument(fragment, fragmentName);\n if (this.reducerConfig.addTypename) {\n query = addTypenameToDocument(query);\n }\n this.applyWrite({\n rootId: id,\n result: data,\n document: query,\n operationName: getOperationName(query),\n variables: variables || {},\n });\n };\n TransactionDataProxy.prototype.assertNotFinished = function () {\n if (this.isFinished) {\n throw new Error('Cannot call transaction methods after the transaction has finished.');\n }\n };\n TransactionDataProxy.prototype.applyWrite = function (write) {\n writeResultToStore({\n result: write.result,\n dataId: write.rootId,\n document: write.document,\n variables: write.variables,\n store: this.data,\n dataIdFromObject: this.reducerConfig.dataIdFromObject || (function () { return null; }),\n fragmentMatcherFunction: this.reducerConfig.fragmentMatcher,\n });\n this.writes.push(write);\n };\n return TransactionDataProxy;\n}());\nexport { TransactionDataProxy };\n//# sourceMappingURL=proxy.js.map","var __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};\nimport { writeResultToStore } from './writeToStore';\nexport function replaceQueryResults(state, _a, config) {\n var variables = _a.variables, document = _a.document, newResult = _a.newResult;\n var clonedState = __assign({}, state);\n return writeResultToStore({\n result: newResult,\n dataId: 'ROOT_QUERY',\n variables: variables,\n document: document,\n store: clonedState,\n dataIdFromObject: config.dataIdFromObject,\n fragmentMatcherFunction: config.fragmentMatcher,\n });\n}\n//# sourceMappingURL=replaceQueryResults.js.map","export function tryFunctionOrLogError(f) {\n try {\n return f();\n }\n catch (e) {\n if (console.error) {\n console.error(e);\n }\n }\n}\n//# sourceMappingURL=errorHandling.js.map","var __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};\nimport { isQueryResultAction, isMutationResultAction, isUpdateQueryResultAction, isStoreResetAction, isSubscriptionResultAction, isWriteAction, } from '../actions';\nimport { writeResultToStore } from './writeToStore';\nimport { TransactionDataProxy } from '../data/proxy';\nimport { getOperationName } from '../queries/getFromAST';\nimport { graphQLResultHasError } from './storeUtils';\nimport { replaceQueryResults } from './replaceQueryResults';\nimport { diffQueryAgainstStore } from './readFromStore';\nimport { tryFunctionOrLogError } from '../util/errorHandling';\nexport function data(previousState, action, config) {\n if (previousState === void 0) { previousState = {}; }\n var constAction = action;\n if (isQueryResultAction(action)) {\n if (action.fetchMoreForQueryId) {\n return previousState;\n }\n if (!graphQLResultHasError(action.result)) {\n var clonedState = __assign({}, previousState);\n var newState_1 = writeResultToStore({\n result: action.result.data,\n dataId: 'ROOT_QUERY',\n document: action.document,\n variables: action.variables,\n store: clonedState,\n dataIdFromObject: config.dataIdFromObject,\n fragmentMatcherFunction: config.fragmentMatcher,\n });\n if (action.extraReducers) {\n action.extraReducers.forEach(function (reducer) {\n newState_1 = reducer(newState_1, constAction);\n });\n }\n return newState_1;\n }\n }\n else if (isSubscriptionResultAction(action)) {\n if (!graphQLResultHasError(action.result)) {\n var clonedState = __assign({}, previousState);\n var newState_2 = writeResultToStore({\n result: action.result.data,\n dataId: 'ROOT_SUBSCRIPTION',\n document: action.document,\n variables: action.variables,\n store: clonedState,\n dataIdFromObject: config.dataIdFromObject,\n fragmentMatcherFunction: config.fragmentMatcher,\n });\n if (action.extraReducers) {\n action.extraReducers.forEach(function (reducer) {\n newState_2 = reducer(newState_2, constAction);\n });\n }\n return newState_2;\n }\n }\n else if (isMutationResultAction(constAction)) {\n if (!constAction.result.errors) {\n var clonedState = __assign({}, previousState);\n var newState_3 = writeResultToStore({\n result: constAction.result.data,\n dataId: 'ROOT_MUTATION',\n document: constAction.document,\n variables: constAction.variables,\n store: clonedState,\n dataIdFromObject: config.dataIdFromObject,\n fragmentMatcherFunction: config.fragmentMatcher,\n });\n var updateQueries_1 = constAction.updateQueries;\n if (updateQueries_1) {\n Object.keys(updateQueries_1)\n .filter(function (id) { return updateQueries_1[id]; })\n .forEach(function (queryId) {\n var _a = updateQueries_1[queryId], query = _a.query, reducer = _a.reducer;\n var _b = diffQueryAgainstStore({\n store: previousState,\n query: query.document,\n variables: query.variables,\n returnPartialData: true,\n fragmentMatcherFunction: config.fragmentMatcher,\n config: config,\n }), currentQueryResult = _b.result, isMissing = _b.isMissing;\n if (isMissing) {\n return;\n }\n var nextQueryResult = tryFunctionOrLogError(function () {\n return reducer(currentQueryResult, {\n mutationResult: constAction.result,\n queryName: getOperationName(query.document),\n queryVariables: query.variables,\n });\n });\n if (nextQueryResult) {\n newState_3 = writeResultToStore({\n result: nextQueryResult,\n dataId: 'ROOT_QUERY',\n document: query.document,\n variables: query.variables,\n store: newState_3,\n dataIdFromObject: config.dataIdFromObject,\n fragmentMatcherFunction: config.fragmentMatcher,\n });\n }\n });\n }\n if (constAction.update) {\n var update_1 = constAction.update;\n var proxy_1 = new TransactionDataProxy(newState_3, config);\n tryFunctionOrLogError(function () { return update_1(proxy_1, constAction.result); });\n var writes = proxy_1.finish();\n newState_3 = data(newState_3, { type: 'APOLLO_WRITE', writes: writes }, config);\n }\n if (constAction.extraReducers) {\n constAction.extraReducers.forEach(function (reducer) {\n newState_3 = reducer(newState_3, constAction);\n });\n }\n return newState_3;\n }\n }\n else if (isUpdateQueryResultAction(constAction)) {\n return replaceQueryResults(previousState, constAction, config);\n }\n else if (isStoreResetAction(action)) {\n return {};\n }\n else if (isWriteAction(action)) {\n return action.writes.reduce(function (currentState, write) {\n return writeResultToStore({\n result: write.result,\n dataId: write.rootId,\n document: write.document,\n variables: write.variables,\n store: currentState,\n dataIdFromObject: config.dataIdFromObject,\n fragmentMatcherFunction: config.fragmentMatcher,\n });\n }, __assign({}, previousState));\n }\n return previousState;\n}\n//# sourceMappingURL=store.js.map","var __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};\nimport { createStore, compose as reduxCompose, applyMiddleware, combineReducers, } from 'redux';\nimport { data } from './data/store';\nimport { optimistic, getDataWithOptimisticResults, } from './optimistic-data/store';\nexport { getDataWithOptimisticResults };\nimport { isQueryResultAction, isMutationResultAction, isSubscriptionResultAction, } from './actions';\nvar crashReporter = function (store) { return function (next) { return function (action) {\n try {\n return next(action);\n }\n catch (err) {\n console.error('Caught an exception!', err);\n console.error(err.stack);\n throw err;\n }\n}; }; };\nvar createReducerError = function (error, action) {\n var reducerError = { error: error };\n if (isQueryResultAction(action)) {\n reducerError.queryId = action.queryId;\n }\n else if (isSubscriptionResultAction(action)) {\n reducerError.subscriptionId = action.subscriptionId;\n }\n else if (isMutationResultAction(action)) {\n reducerError.mutationId = action.mutationId;\n }\n return reducerError;\n};\nexport function createApolloReducer(config) {\n return function apolloReducer(state, action) {\n if (state === void 0) { state = {}; }\n try {\n var newState = {\n data: data(state.data, action, config),\n optimistic: [],\n reducerError: null,\n };\n newState.optimistic = optimistic(state.optimistic, action, newState, config);\n if (state.data === newState.data &&\n state.optimistic === newState.optimistic &&\n state.reducerError === newState.reducerError) {\n return state;\n }\n return newState;\n }\n catch (reducerError) {\n return __assign({}, state, { reducerError: createReducerError(reducerError, action) });\n }\n };\n}\nexport function createApolloStore(_a) {\n 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;\n var enhancers = [];\n var middlewares = [];\n if (reportCrashes) {\n middlewares.push(crashReporter);\n }\n if (logger) {\n middlewares.push(logger);\n }\n if (middlewares.length > 0) {\n enhancers.push(applyMiddleware.apply(void 0, middlewares));\n }\n if (typeof window !== 'undefined') {\n var anyWindow = window;\n if (anyWindow.devToolsExtension) {\n enhancers.push(anyWindow.devToolsExtension());\n }\n }\n var compose = reduxCompose;\n if (initialState &&\n initialState[reduxRootKey] &&\n initialState[reduxRootKey]['queries']) {\n throw new Error('Apollo initial state may not contain queries, only data');\n }\n if (initialState &&\n initialState[reduxRootKey] &&\n initialState[reduxRootKey]['mutations']) {\n throw new Error('Apollo initial state may not contain mutations, only data');\n }\n return createStore(combineReducers((_f = {}, _f[reduxRootKey] = createApolloReducer(config), _f)), initialState, compose.apply(void 0, enhancers));\n var _f;\n}\n//# sourceMappingURL=store.js.map","import $$observable from 'symbol-observable';\nfunction isSubscription(subscription) {\n return subscription.unsubscribe !== undefined;\n}\nvar Observable = (function () {\n function Observable(subscriberFunction) {\n this.subscriberFunction = subscriberFunction;\n }\n Observable.prototype[$$observable] = function () {\n return this;\n };\n Observable.prototype.subscribe = function (observer) {\n var subscriptionOrCleanupFunction = this.subscriberFunction(observer);\n if (isSubscription(subscriptionOrCleanupFunction)) {\n return subscriptionOrCleanupFunction;\n }\n else {\n return {\n unsubscribe: subscriptionOrCleanupFunction,\n };\n }\n };\n return Observable;\n}());\nexport { Observable };\n//# sourceMappingURL=Observable.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nexport function isApolloError(err) {\n return err.hasOwnProperty('graphQLErrors');\n}\nvar generateErrorMessage = function (err) {\n var message = '';\n if (Array.isArray(err.graphQLErrors) && err.graphQLErrors.length !== 0) {\n err.graphQLErrors.forEach(function (graphQLError) {\n var errorMessage = graphQLError\n ? graphQLError.message\n : 'Error message not found.';\n message += \"GraphQL error: \" + errorMessage + \"\\n\";\n });\n }\n if (err.networkError) {\n message += 'Network error: ' + err.networkError.message + '\\n';\n }\n message = message.replace(/\\n$/, '');\n return message;\n};\nvar ApolloError = (function (_super) {\n __extends(ApolloError, _super);\n function ApolloError(_a) {\n var graphQLErrors = _a.graphQLErrors, networkError = _a.networkError, errorMessage = _a.errorMessage, extraInfo = _a.extraInfo;\n var _this = _super.call(this, errorMessage) || this;\n _this.graphQLErrors = graphQLErrors || [];\n _this.networkError = networkError || null;\n if (!errorMessage) {\n _this.message = generateErrorMessage(_this);\n }\n else {\n _this.message = errorMessage;\n }\n _this.extraInfo = extraInfo;\n return _this;\n }\n return ApolloError;\n}(Error));\nexport { ApolloError };\n//# sourceMappingURL=ApolloError.js.map","export var FetchType;\n(function (FetchType) {\n FetchType[FetchType[\"normal\"] = 1] = \"normal\";\n FetchType[FetchType[\"refetch\"] = 2] = \"refetch\";\n FetchType[FetchType[\"poll\"] = 3] = \"poll\";\n})(FetchType || (FetchType = {}));\n//# sourceMappingURL=types.js.map","import { isDevelopment, isTest } from './environment';\nfunction deepFreeze(o) {\n Object.freeze(o);\n Object.getOwnPropertyNames(o).forEach(function (prop) {\n if (o.hasOwnProperty(prop) &&\n o[prop] !== null &&\n (typeof o[prop] === 'object' || typeof o[prop] === 'function') &&\n !Object.isFrozen(o[prop])) {\n deepFreeze(o[prop]);\n }\n });\n return o;\n}\nexport default function maybeDeepFreeze(obj) {\n if (isDevelopment() || isTest()) {\n return deepFreeze(obj);\n }\n return obj;\n}\n//# sourceMappingURL=maybeDeepFreeze.js.map","export var NetworkStatus;\n(function (NetworkStatus) {\n NetworkStatus[NetworkStatus[\"loading\"] = 1] = \"loading\";\n NetworkStatus[NetworkStatus[\"setVariables\"] = 2] = \"setVariables\";\n NetworkStatus[NetworkStatus[\"fetchMore\"] = 3] = \"fetchMore\";\n NetworkStatus[NetworkStatus[\"refetch\"] = 4] = \"refetch\";\n NetworkStatus[NetworkStatus[\"poll\"] = 6] = \"poll\";\n NetworkStatus[NetworkStatus[\"ready\"] = 7] = \"ready\";\n NetworkStatus[NetworkStatus[\"error\"] = 8] = \"error\";\n})(NetworkStatus || (NetworkStatus = {}));\nexport function isNetworkRequestInFlight(networkStatus) {\n return networkStatus < 7;\n}\n//# sourceMappingURL=networkStatus.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};\nimport { Observable } from '../util/Observable';\nimport { ApolloError } from '../errors/ApolloError';\nimport { FetchType } from './types';\nimport { tryFunctionOrLogError } from '../util/errorHandling';\nimport { isEqual } from '../util/isEqual';\nimport maybeDeepFreeze from '../util/maybeDeepFreeze';\nimport { NetworkStatus, isNetworkRequestInFlight, } from '../queries/networkStatus';\nimport { getOperationName } from '../queries/getFromAST';\nvar ObservableQuery = (function (_super) {\n __extends(ObservableQuery, _super);\n function ObservableQuery(_a) {\n var scheduler = _a.scheduler, options = _a.options, _b = _a.shouldSubscribe, shouldSubscribe = _b === void 0 ? true : _b;\n var _this = this;\n var queryManager = scheduler.queryManager;\n var queryId = queryManager.generateQueryId();\n var subscriberFunction = function (observer) {\n return _this.onSubscribe(observer);\n };\n _this = _super.call(this, subscriberFunction) || this;\n _this.isCurrentlyPolling = false;\n _this.options = options;\n _this.variables = _this.options.variables || {};\n _this.scheduler = scheduler;\n _this.queryManager = queryManager;\n _this.queryId = queryId;\n _this.shouldSubscribe = shouldSubscribe;\n _this.observers = [];\n _this.subscriptionHandles = [];\n return _this;\n }\n ObservableQuery.prototype.result = function () {\n var that = this;\n return new Promise(function (resolve, reject) {\n var subscription = null;\n var observer = {\n next: function (result) {\n resolve(result);\n var selectedObservers = that.observers.filter(function (obs) { return obs !== observer; });\n if (selectedObservers.length === 0) {\n that.queryManager.removeQuery(that.queryId);\n }\n setTimeout(function () {\n subscription.unsubscribe();\n }, 0);\n },\n error: function (error) {\n reject(error);\n },\n };\n subscription = that.subscribe(observer);\n });\n };\n ObservableQuery.prototype.currentResult = function () {\n var _a = this.queryManager.getCurrentQueryResult(this, true), data = _a.data, partial = _a.partial;\n var queryStoreValue = this.queryManager.queryStore.get(this.queryId);\n if (queryStoreValue &&\n ((queryStoreValue.graphQLErrors &&\n queryStoreValue.graphQLErrors.length > 0) ||\n queryStoreValue.networkError)) {\n var error = new ApolloError({\n graphQLErrors: queryStoreValue.graphQLErrors,\n networkError: queryStoreValue.networkError,\n });\n return {\n data: {},\n loading: false,\n networkStatus: queryStoreValue.networkStatus,\n error: error,\n };\n }\n var queryLoading = !queryStoreValue ||\n queryStoreValue.networkStatus === NetworkStatus.loading;\n var loading = (this.options.fetchPolicy === 'network-only' && queryLoading) ||\n (partial && this.options.fetchPolicy !== 'cache-only');\n var networkStatus;\n if (queryStoreValue) {\n networkStatus = queryStoreValue.networkStatus;\n }\n else {\n networkStatus = loading ? NetworkStatus.loading : NetworkStatus.ready;\n }\n var result = {\n data: data,\n loading: isNetworkRequestInFlight(networkStatus),\n networkStatus: networkStatus,\n };\n if (!partial) {\n var stale = false;\n this.lastResult = __assign({}, result, { stale: stale });\n }\n return __assign({}, result, { partial: partial });\n };\n ObservableQuery.prototype.getLastResult = function () {\n return this.lastResult;\n };\n ObservableQuery.prototype.refetch = function (variables) {\n this.variables = __assign({}, this.variables, variables);\n if (this.options.fetchPolicy === 'cache-only') {\n return Promise.reject(new Error('cache-only fetchPolicy option should not be used together with query refetch.'));\n }\n this.options.variables = __assign({}, this.options.variables, this.variables);\n var combinedOptions = __assign({}, this.options, { fetchPolicy: 'network-only' });\n return this.queryManager\n .fetchQuery(this.queryId, combinedOptions, FetchType.refetch)\n .then(function (result) { return maybeDeepFreeze(result); });\n };\n ObservableQuery.prototype.fetchMore = function (fetchMoreOptions) {\n var _this = this;\n if (!fetchMoreOptions.updateQuery) {\n throw new Error('updateQuery option is required. This function defines how to update the query data with the new results.');\n }\n return Promise.resolve()\n .then(function () {\n var qid = _this.queryManager.generateQueryId();\n var combinedOptions = null;\n if (fetchMoreOptions.query) {\n combinedOptions = fetchMoreOptions;\n }\n else {\n var variables = __assign({}, _this.variables, fetchMoreOptions.variables);\n combinedOptions = __assign({}, _this.options, fetchMoreOptions, { variables: variables });\n }\n combinedOptions = __assign({}, combinedOptions, { query: combinedOptions.query, fetchPolicy: 'network-only' });\n return _this.queryManager.fetchQuery(qid, combinedOptions, FetchType.normal, _this.queryId);\n })\n .then(function (fetchMoreResult) {\n var data = fetchMoreResult.data;\n var reducer = fetchMoreOptions.updateQuery;\n var mapFn = function (previousResult, _a) {\n var variables = _a.variables;\n var queryVariables = variables;\n return reducer(previousResult, {\n fetchMoreResult: data,\n queryVariables: queryVariables,\n });\n };\n _this.updateQuery(mapFn);\n return fetchMoreResult;\n });\n };\n ObservableQuery.prototype.subscribeToMore = function (options) {\n var _this = this;\n var observable = this.queryManager.startGraphQLSubscription({\n query: options.document,\n variables: options.variables,\n });\n var subscription = observable.subscribe({\n next: function (data) {\n if (options.updateQuery) {\n var reducer_1 = options.updateQuery;\n var mapFn = function (previousResult, _a) {\n var variables = _a.variables;\n return reducer_1(previousResult, {\n subscriptionData: { data: data },\n variables: variables,\n });\n };\n _this.updateQuery(mapFn);\n }\n },\n error: function (err) {\n if (options.onError) {\n options.onError(err);\n }\n else {\n console.error('Unhandled GraphQL subscription error', err);\n }\n },\n });\n this.subscriptionHandles.push(subscription);\n return function () {\n var i = _this.subscriptionHandles.indexOf(subscription);\n if (i >= 0) {\n _this.subscriptionHandles.splice(i, 1);\n subscription.unsubscribe();\n }\n };\n };\n ObservableQuery.prototype.setOptions = function (opts) {\n var oldOptions = this.options;\n this.options = __assign({}, this.options, opts);\n if (opts.pollInterval) {\n this.startPolling(opts.pollInterval);\n }\n else if (opts.pollInterval === 0) {\n this.stopPolling();\n }\n var tryFetch = (oldOptions.fetchPolicy !== 'network-only' &&\n opts.fetchPolicy === 'network-only') ||\n (oldOptions.fetchPolicy === 'cache-only' &&\n opts.fetchPolicy !== 'cache-only') ||\n (oldOptions.fetchPolicy === 'standby' &&\n opts.fetchPolicy !== 'standby') ||\n false;\n return this.setVariables(this.options.variables, tryFetch, opts.fetchResults);\n };\n ObservableQuery.prototype.setVariables = function (variables, tryFetch, fetchResults) {\n if (tryFetch === void 0) { tryFetch = false; }\n if (fetchResults === void 0) { fetchResults = true; }\n var newVariables = __assign({}, this.variables, variables);\n if (isEqual(newVariables, this.variables) && !tryFetch) {\n if (this.observers.length === 0 || !fetchResults) {\n return new Promise(function (resolve) { return resolve(); });\n }\n return this.result();\n }\n else {\n this.variables = newVariables;\n this.options.variables = newVariables;\n if (this.observers.length === 0) {\n return new Promise(function (resolve) { return resolve(); });\n }\n return this.queryManager\n .fetchQuery(this.queryId, __assign({}, this.options, { variables: this.variables }))\n .then(function (result) { return maybeDeepFreeze(result); });\n }\n };\n ObservableQuery.prototype.updateQuery = function (mapFn) {\n var _a = this.queryManager.getQueryWithPreviousResult(this.queryId), previousResult = _a.previousResult, variables = _a.variables, document = _a.document;\n var newResult = tryFunctionOrLogError(function () {\n return mapFn(previousResult, { variables: variables });\n });\n if (newResult) {\n this.queryManager.store.dispatch({\n type: 'APOLLO_UPDATE_QUERY_RESULT',\n newResult: newResult,\n variables: variables,\n document: document,\n operationName: getOperationName(document),\n });\n }\n };\n ObservableQuery.prototype.stopPolling = function () {\n if (this.isCurrentlyPolling) {\n this.scheduler.stopPollingQuery(this.queryId);\n this.options.pollInterval = undefined;\n this.isCurrentlyPolling = false;\n }\n };\n ObservableQuery.prototype.startPolling = function (pollInterval) {\n if (this.options.fetchPolicy === 'cache-first' ||\n this.options.fetchPolicy === 'cache-only') {\n throw new Error('Queries that specify the cache-first and cache-only fetchPolicies cannot also be polling queries.');\n }\n if (this.isCurrentlyPolling) {\n this.scheduler.stopPollingQuery(this.queryId);\n this.isCurrentlyPolling = false;\n }\n this.options.pollInterval = pollInterval;\n this.isCurrentlyPolling = true;\n this.scheduler.startPollingQuery(this.options, this.queryId);\n };\n ObservableQuery.prototype.onSubscribe = function (observer) {\n var _this = this;\n this.observers.push(observer);\n if (observer.next && this.lastResult) {\n observer.next(this.lastResult);\n }\n if (observer.error && this.lastError) {\n observer.error(this.lastError);\n }\n if (this.observers.length === 1) {\n this.setUpQuery();\n }\n var retQuerySubscription = {\n unsubscribe: function () {\n if (!_this.observers.some(function (el) { return el === observer; })) {\n return;\n }\n _this.observers = _this.observers.filter(function (obs) { return obs !== observer; });\n if (_this.observers.length === 0) {\n _this.tearDownQuery();\n }\n },\n };\n return retQuerySubscription;\n };\n ObservableQuery.prototype.setUpQuery = function () {\n var _this = this;\n if (this.shouldSubscribe) {\n this.queryManager.addObservableQuery(this.queryId, this);\n }\n if (!!this.options.pollInterval) {\n if (this.options.fetchPolicy === 'cache-first' ||\n this.options.fetchPolicy === 'cache-only') {\n throw new Error('Queries that specify the cache-first and cache-only fetchPolicies cannot also be polling queries.');\n }\n this.isCurrentlyPolling = true;\n this.scheduler.startPollingQuery(this.options, this.queryId);\n }\n var observer = {\n next: function (result) {\n _this.lastResult = result;\n _this.observers.forEach(function (obs) {\n if (obs.next) {\n obs.next(result);\n }\n });\n },\n error: function (error) {\n _this.observers.forEach(function (obs) {\n if (obs.error) {\n obs.error(error);\n }\n else {\n console.error('Unhandled error', error.message, error.stack);\n }\n });\n _this.lastError = error;\n },\n };\n this.queryManager.startQuery(this.queryId, this.options, this.queryManager.queryListenerForObserver(this.queryId, this.options, observer));\n };\n ObservableQuery.prototype.tearDownQuery = function () {\n if (this.isCurrentlyPolling) {\n this.scheduler.stopPollingQuery(this.queryId);\n this.isCurrentlyPolling = false;\n }\n this.subscriptionHandles.forEach(function (sub) { return sub.unsubscribe(); });\n this.subscriptionHandles = [];\n this.queryManager.stopQuery(this.queryId);\n if (this.shouldSubscribe) {\n this.queryManager.removeObservableQuery(this.queryId);\n }\n this.observers = [];\n };\n return ObservableQuery;\n}(Observable));\nexport { ObservableQuery };\n//# sourceMappingURL=ObservableQuery.js.map","import { isProduction, isTest } from './environment';\nvar haveWarned = Object.create({});\nexport function warnOnceInDevelopment(msg, type) {\n if (type === void 0) { type = 'warn'; }\n if (isProduction()) {\n return;\n }\n if (!haveWarned[msg]) {\n if (!isTest()) {\n haveWarned[msg] = true;\n }\n switch (type) {\n case 'error':\n console.error(msg);\n break;\n default:\n console.warn(msg);\n }\n }\n}\n//# sourceMappingURL=warnOnce.js.map","import { isTest } from '../util/environment';\nimport { warnOnceInDevelopment } from '../util/warnOnce';\nvar IntrospectionFragmentMatcher = (function () {\n function IntrospectionFragmentMatcher(options) {\n if (options && options.introspectionQueryResultData) {\n this.possibleTypesMap = this.parseIntrospectionResult(options.introspectionQueryResultData);\n this.isReady = true;\n }\n else {\n this.isReady = false;\n }\n this.match = this.match.bind(this);\n }\n IntrospectionFragmentMatcher.prototype.match = function (idValue, typeCondition, context) {\n if (!this.isReady) {\n throw new Error('FragmentMatcher.match() was called before FragmentMatcher.init()');\n }\n var obj = context.store[idValue.id];\n if (!obj) {\n return false;\n }\n if (!obj.__typename) {\n throw new Error(\"Cannot match fragment because __typename property is missing: \" + JSON.stringify(obj));\n }\n if (obj.__typename === typeCondition) {\n return true;\n }\n var implementingTypes = this.possibleTypesMap[typeCondition];\n if (implementingTypes && implementingTypes.indexOf(obj.__typename) > -1) {\n return true;\n }\n return false;\n };\n IntrospectionFragmentMatcher.prototype.parseIntrospectionResult = function (introspectionResultData) {\n var typeMap = {};\n introspectionResultData.__schema.types.forEach(function (type) {\n if (type.kind === 'UNION' || type.kind === 'INTERFACE') {\n typeMap[type.name] = type.possibleTypes.map(function (implementingType) { return implementingType.name; });\n }\n });\n return typeMap;\n };\n return IntrospectionFragmentMatcher;\n}());\nexport { IntrospectionFragmentMatcher };\nvar haveWarned = false;\nvar HeuristicFragmentMatcher = (function () {\n function HeuristicFragmentMatcher() {\n }\n HeuristicFragmentMatcher.prototype.ensureReady = function () {\n return Promise.resolve();\n };\n HeuristicFragmentMatcher.prototype.canBypassInit = function () {\n return true;\n };\n HeuristicFragmentMatcher.prototype.match = function (idValue, typeCondition, context) {\n var obj = context.store[idValue.id];\n if (!obj) {\n return false;\n }\n if (!obj.__typename) {\n if (!haveWarned) {\n console.warn(\"You're using fragments in your queries, but either don't have the addTypename:\\n true option set in Apollo Client, or you are trying to write a fragment to the store without the __typename.\\n Please turn on the addTypename option and include __typename when writing fragments so that Apollo Client\\n can accurately match fragments.\");\n console.warn('Could not find __typename on Fragment ', typeCondition, obj);\n console.warn(\"DEPRECATION WARNING: using fragments without __typename is unsupported behavior \" +\n \"and will be removed in future versions of Apollo client. You should fix this and set addTypename to true now.\");\n if (!isTest()) {\n haveWarned = true;\n }\n }\n context.returnPartialData = true;\n return true;\n }\n if (obj.__typename === typeCondition) {\n return true;\n }\n warnOnceInDevelopment(\"You are using the simple (heuristic) fragment matcher, but your queries contain union or interface types.\\n Apollo Client will not be able to able to accurately map fragments.\" +\n \"To make this error go away, use the IntrospectionFragmentMatcher as described in the docs: \" +\n \"http://dev.apollodata.com/react/initialization.html#fragment-matcher\", 'error');\n context.returnPartialData = true;\n return true;\n };\n return HeuristicFragmentMatcher;\n}());\nexport { HeuristicFragmentMatcher };\n//# sourceMappingURL=fragmentMatcher.js.map","import { print } from 'graphql/language/printer';\nvar Deduplicator = (function () {\n function Deduplicator(networkInterface) {\n this.networkInterface = networkInterface;\n this.inFlightRequestPromises = {};\n }\n Deduplicator.prototype.query = function (request, deduplicate) {\n var _this = this;\n if (deduplicate === void 0) { deduplicate = true; }\n if (!deduplicate) {\n return this.networkInterface.query(request);\n }\n var key = this.getKey(request);\n if (!this.inFlightRequestPromises[key]) {\n this.inFlightRequestPromises[key] = this.networkInterface.query(request);\n }\n return this.inFlightRequestPromises[key]\n .then(function (res) {\n delete _this.inFlightRequestPromises[key];\n return res;\n })\n .catch(function (err) {\n delete _this.inFlightRequestPromises[key];\n throw err;\n });\n };\n Deduplicator.prototype.getKey = function (request) {\n return print(request.query) + \"|\" + JSON.stringify(request.variables) + \"|\" + request.operationName;\n };\n return Deduplicator;\n}());\nexport { Deduplicator };\n//# sourceMappingURL=Deduplicator.js.map","var __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};\nimport { isEqual } from '../util/isEqual';\nimport { NetworkStatus } from './networkStatus';\nvar QueryStore = (function () {\n function QueryStore() {\n this.store = {};\n }\n QueryStore.prototype.getStore = function () {\n return this.store;\n };\n QueryStore.prototype.get = function (queryId) {\n return this.store[queryId];\n };\n QueryStore.prototype.initQuery = function (query) {\n var previousQuery = this.store[query.queryId];\n if (previousQuery && previousQuery.queryString !== query.queryString) {\n throw new Error('Internal Error: may not update existing query string in store');\n }\n var isSetVariables = false;\n var previousVariables = null;\n if (query.storePreviousVariables &&\n previousQuery &&\n previousQuery.networkStatus !== NetworkStatus.loading) {\n if (!isEqual(previousQuery.variables, query.variables)) {\n isSetVariables = true;\n previousVariables = previousQuery.variables;\n }\n }\n var networkStatus;\n if (isSetVariables) {\n networkStatus = NetworkStatus.setVariables;\n }\n else if (query.isPoll) {\n networkStatus = NetworkStatus.poll;\n }\n else if (query.isRefetch) {\n networkStatus = NetworkStatus.refetch;\n }\n else {\n networkStatus = NetworkStatus.loading;\n }\n this.store[query.queryId] = {\n queryString: query.queryString,\n document: query.document,\n variables: query.variables,\n previousVariables: previousVariables,\n networkError: null,\n graphQLErrors: [],\n networkStatus: networkStatus,\n metadata: query.metadata,\n };\n if (typeof query.fetchMoreForQueryId === 'string') {\n this.store[query.fetchMoreForQueryId].networkStatus =\n NetworkStatus.fetchMore;\n }\n };\n QueryStore.prototype.markQueryResult = function (queryId, result, fetchMoreForQueryId) {\n if (!this.store[queryId]) {\n return;\n }\n this.store[queryId].networkError = null;\n this.store[queryId].graphQLErrors =\n result.errors && result.errors.length ? result.errors : [];\n this.store[queryId].previousVariables = null;\n this.store[queryId].networkStatus = NetworkStatus.ready;\n if (typeof fetchMoreForQueryId === 'string') {\n this.store[fetchMoreForQueryId].networkStatus = NetworkStatus.ready;\n }\n };\n QueryStore.prototype.markQueryError = function (queryId, error, fetchMoreForQueryId) {\n if (!this.store[queryId]) {\n return;\n }\n this.store[queryId].networkError = error;\n this.store[queryId].networkStatus = NetworkStatus.error;\n if (typeof fetchMoreForQueryId === 'string') {\n this.markQueryError(fetchMoreForQueryId, error, undefined);\n }\n };\n QueryStore.prototype.markQueryResultClient = function (queryId, complete) {\n if (!this.store[queryId]) {\n return;\n }\n this.store[queryId].networkError = null;\n this.store[queryId].previousVariables = null;\n this.store[queryId].networkStatus = complete\n ? NetworkStatus.ready\n : NetworkStatus.loading;\n };\n QueryStore.prototype.stopQuery = function (queryId) {\n delete this.store[queryId];\n };\n QueryStore.prototype.reset = function (observableQueryIds) {\n var _this = this;\n this.store = Object.keys(this.store)\n .filter(function (queryId) {\n return observableQueryIds.indexOf(queryId) > -1;\n })\n .reduce(function (res, key) {\n res[key] = __assign({}, _this.store[key], { networkStatus: NetworkStatus.loading });\n return res;\n }, {});\n };\n return QueryStore;\n}());\nexport { QueryStore };\n//# sourceMappingURL=store.js.map","import { diffQueryAgainstStore } from './readFromStore';\nimport { writeResultToStore } from './writeToStore';\nexport function createStoreReducer(resultReducer, document, variables, config) {\n return function (store, action) {\n var _a = diffQueryAgainstStore({\n store: store,\n query: document,\n variables: variables,\n returnPartialData: true,\n fragmentMatcherFunction: config.fragmentMatcher,\n config: config,\n }), result = _a.result, isMissing = _a.isMissing;\n if (isMissing) {\n return store;\n }\n var nextResult;\n try {\n nextResult = resultReducer(result, action, variables);\n }\n catch (err) {\n console.warn('Unhandled error in result reducer', err);\n throw err;\n }\n if (result !== nextResult) {\n return writeResultToStore({\n dataId: 'ROOT_QUERY',\n result: nextResult,\n store: store,\n document: document,\n variables: variables,\n dataIdFromObject: config.dataIdFromObject,\n fragmentMatcherFunction: config.fragmentMatcher,\n });\n }\n return store;\n };\n}\n//# sourceMappingURL=resultReducers.js.map","var MutationStore = (function () {\n function MutationStore() {\n this.store = {};\n }\n MutationStore.prototype.getStore = function () {\n return this.store;\n };\n MutationStore.prototype.get = function (mutationId) {\n return this.store[mutationId];\n };\n MutationStore.prototype.initMutation = function (mutationId, mutationString, variables) {\n this.store[mutationId] = {\n mutationString: mutationString,\n variables: variables || {},\n loading: true,\n error: null,\n };\n };\n MutationStore.prototype.markMutationError = function (mutationId, error) {\n this.store[mutationId].loading = false;\n this.store[mutationId].error = error;\n };\n MutationStore.prototype.markMutationResult = function (mutationId) {\n this.store[mutationId].loading = false;\n this.store[mutationId].error = null;\n };\n MutationStore.prototype.reset = function () {\n this.store = {};\n };\n return MutationStore;\n}());\nexport { MutationStore };\n//# sourceMappingURL=store.js.map","var __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};\nimport { FetchType } from '../core/types';\nimport { ObservableQuery } from '../core/ObservableQuery';\nimport { NetworkStatus } from '../queries/networkStatus';\nvar QueryScheduler = (function () {\n function QueryScheduler(_a) {\n var queryManager = _a.queryManager;\n this.queryManager = queryManager;\n this.pollingTimers = {};\n this.inFlightQueries = {};\n this.registeredQueries = {};\n this.intervalQueries = {};\n }\n QueryScheduler.prototype.checkInFlight = function (queryId) {\n var query = this.queryManager.queryStore.get(queryId);\n return (query &&\n query.networkStatus !== NetworkStatus.ready &&\n query.networkStatus !== NetworkStatus.error);\n };\n QueryScheduler.prototype.fetchQuery = function (queryId, options, fetchType) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n _this.queryManager\n .fetchQuery(queryId, options, fetchType)\n .then(function (result) {\n resolve(result);\n })\n .catch(function (error) {\n reject(error);\n });\n });\n };\n QueryScheduler.prototype.startPollingQuery = function (options, queryId, listener) {\n if (!options.pollInterval) {\n throw new Error('Attempted to start a polling query without a polling interval.');\n }\n if (this.queryManager.ssrMode) {\n return queryId;\n }\n this.registeredQueries[queryId] = options;\n if (listener) {\n this.queryManager.addQueryListener(queryId, listener);\n }\n this.addQueryOnInterval(queryId, options);\n return queryId;\n };\n QueryScheduler.prototype.stopPollingQuery = function (queryId) {\n delete this.registeredQueries[queryId];\n };\n QueryScheduler.prototype.fetchQueriesOnInterval = function (interval) {\n var _this = this;\n this.intervalQueries[interval] = this.intervalQueries[interval].filter(function (queryId) {\n if (!_this.registeredQueries.hasOwnProperty(queryId)) {\n return false;\n }\n if (_this.checkInFlight(queryId)) {\n return true;\n }\n var queryOptions = _this.registeredQueries[queryId];\n var pollingOptions = __assign({}, queryOptions);\n pollingOptions.fetchPolicy = 'network-only';\n _this.fetchQuery(queryId, pollingOptions, FetchType.poll);\n return true;\n });\n if (this.intervalQueries[interval].length === 0) {\n clearInterval(this.pollingTimers[interval]);\n delete this.intervalQueries[interval];\n }\n };\n QueryScheduler.prototype.addQueryOnInterval = function (queryId, queryOptions) {\n var _this = this;\n var interval = queryOptions.pollInterval;\n if (!interval) {\n throw new Error(\"A poll interval is required to start polling query with id '\" + queryId + \"'.\");\n }\n if (this.intervalQueries.hasOwnProperty(interval.toString()) &&\n this.intervalQueries[interval].length > 0) {\n this.intervalQueries[interval].push(queryId);\n }\n else {\n this.intervalQueries[interval] = [queryId];\n this.pollingTimers[interval] = setInterval(function () {\n _this.fetchQueriesOnInterval(interval);\n }, interval);\n }\n };\n QueryScheduler.prototype.registerPollingQuery = function (queryOptions) {\n if (!queryOptions.pollInterval) {\n throw new Error('Attempted to register a non-polling query with the scheduler.');\n }\n return new ObservableQuery({\n scheduler: this,\n options: queryOptions,\n });\n };\n return QueryScheduler;\n}());\nexport { QueryScheduler };\n//# sourceMappingURL=scheduler.js.map","var __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};\nimport { Deduplicator } from '../transport/Deduplicator';\nimport { isEqual } from '../util/isEqual';\nimport { assign } from '../util/assign';\nimport { FetchType, } from './types';\nimport { QueryStore } from '../queries/store';\nimport { NetworkStatus, isNetworkRequestInFlight, } from '../queries/networkStatus';\nimport { getDataWithOptimisticResults, } from '../store';\nimport { getQueryDefinition, getOperationDefinition, getOperationName, getDefaultValues, getMutationDefinition, } from '../queries/getFromAST';\nimport { addTypenameToDocument } from '../queries/queryTransform';\nimport { createStoreReducer } from '../data/resultReducers';\nimport { HeuristicFragmentMatcher, } from '../data/fragmentMatcher';\nimport { isProduction } from '../util/environment';\nimport maybeDeepFreeze from '../util/maybeDeepFreeze';\nimport { print } from 'graphql/language/printer';\nimport { readQueryFromStore } from '../data/readFromStore';\nimport { diffQueryAgainstStore } from '../data/readFromStore';\nimport { MutationStore } from '../mutations/store';\nimport { QueryScheduler } from '../scheduler/scheduler';\nimport { Observable } from '../util/Observable';\nimport { isApolloError, ApolloError } from '../errors/ApolloError';\nimport { ObservableQuery } from './ObservableQuery';\nvar QueryManager = (function () {\n function QueryManager(_a) {\n var networkInterface = _a.networkInterface, store = _a.store, reduxRootSelector = _a.reduxRootSelector, _b = _a.reducerConfig, reducerConfig = _b === void 0 ? {} : _b, fragmentMatcher = _a.fragmentMatcher, _c = _a.addTypename, addTypename = _c === void 0 ? true : _c, _d = _a.queryDeduplication, queryDeduplication = _d === void 0 ? false : _d, _e = _a.ssrMode, ssrMode = _e === void 0 ? false : _e;\n var _this = this;\n this.mutationStore = new MutationStore();\n this.queryStore = new QueryStore();\n this.idCounter = 1;\n this.lastRequestId = {};\n this.disableBroadcasting = false;\n this.networkInterface = networkInterface;\n this.deduplicator = new Deduplicator(networkInterface);\n this.store = store;\n this.reduxRootSelector = reduxRootSelector;\n this.reducerConfig = reducerConfig;\n this.pollingTimers = {};\n this.queryListeners = {};\n this.queryDocuments = {};\n this.addTypename = addTypename;\n this.queryDeduplication = queryDeduplication;\n this.ssrMode = ssrMode;\n if (typeof fragmentMatcher === 'undefined') {\n this.fragmentMatcher = new HeuristicFragmentMatcher();\n }\n else {\n this.fragmentMatcher = fragmentMatcher;\n }\n this.scheduler = new QueryScheduler({\n queryManager: this,\n });\n this.fetchQueryPromises = {};\n this.observableQueries = {};\n this.queryIdsByName = {};\n if (this.store['subscribe']) {\n var currentStoreData_1;\n this.store['subscribe'](function () {\n var previousStoreData = currentStoreData_1 || {};\n var previousStoreHasData = Object.keys(previousStoreData).length;\n currentStoreData_1 = _this.getApolloState();\n if (isEqual(previousStoreData, currentStoreData_1) &&\n previousStoreHasData) {\n return;\n }\n _this.broadcastQueries();\n });\n }\n }\n QueryManager.prototype.broadcastNewStore = function (store) {\n this.broadcastQueries();\n };\n QueryManager.prototype.mutate = function (_a) {\n var _this = this;\n var mutation = _a.mutation, variables = _a.variables, optimisticResponse = _a.optimisticResponse, updateQueriesByName = _a.updateQueries, _b = _a.refetchQueries, refetchQueries = _b === void 0 ? [] : _b, updateWithProxyFn = _a.update;\n if (!mutation) {\n throw new Error('mutation option is required. You must specify your GraphQL document in the mutation option.');\n }\n var mutationId = this.generateQueryId();\n if (this.addTypename) {\n mutation = addTypenameToDocument(mutation);\n }\n variables = assign({}, getDefaultValues(getMutationDefinition(mutation)), variables);\n var mutationString = print(mutation);\n var request = {\n query: mutation,\n variables: variables,\n operationName: getOperationName(mutation),\n };\n this.queryDocuments[mutationId] = mutation;\n var generateUpdateQueriesInfo = function () {\n var ret = {};\n if (updateQueriesByName) {\n Object.keys(updateQueriesByName).forEach(function (queryName) {\n return (_this.queryIdsByName[queryName] || []).forEach(function (queryId) {\n ret[queryId] = {\n reducer: updateQueriesByName[queryName],\n query: _this.queryStore.get(queryId),\n };\n });\n });\n }\n return ret;\n };\n this.store.dispatch({\n type: 'APOLLO_MUTATION_INIT',\n mutationString: mutationString,\n mutation: mutation,\n variables: variables || {},\n operationName: getOperationName(mutation),\n mutationId: mutationId,\n optimisticResponse: optimisticResponse,\n extraReducers: this.getExtraReducers(),\n updateQueries: generateUpdateQueriesInfo(),\n update: updateWithProxyFn,\n });\n this.mutationStore.initMutation(mutationId, mutationString, variables);\n return new Promise(function (resolve, reject) {\n _this.networkInterface\n .query(request)\n .then(function (result) {\n if (result.errors) {\n var error = new ApolloError({\n graphQLErrors: result.errors,\n });\n _this.store.dispatch({\n type: 'APOLLO_MUTATION_ERROR',\n error: error,\n mutationId: mutationId,\n });\n _this.mutationStore.markMutationError(mutationId, error);\n delete _this.queryDocuments[mutationId];\n reject(error);\n return;\n }\n _this.store.dispatch({\n type: 'APOLLO_MUTATION_RESULT',\n result: result,\n mutationId: mutationId,\n document: mutation,\n operationName: getOperationName(mutation),\n variables: variables || {},\n extraReducers: _this.getExtraReducers(),\n updateQueries: generateUpdateQueriesInfo(),\n update: updateWithProxyFn,\n });\n _this.mutationStore.markMutationResult(mutationId);\n var reducerError = _this.getApolloState().reducerError;\n if (reducerError && reducerError.mutationId === mutationId) {\n reject(reducerError.error);\n return;\n }\n if (typeof refetchQueries[0] === 'string') {\n refetchQueries.forEach(function (name) {\n _this.refetchQueryByName(name);\n });\n }\n else {\n refetchQueries.forEach(function (pureQuery) {\n _this.query({\n query: pureQuery.query,\n variables: pureQuery.variables,\n fetchPolicy: 'network-only',\n });\n });\n }\n delete _this.queryDocuments[mutationId];\n resolve(result);\n })\n .catch(function (err) {\n _this.store.dispatch({\n type: 'APOLLO_MUTATION_ERROR',\n error: err,\n mutationId: mutationId,\n });\n delete _this.queryDocuments[mutationId];\n reject(new ApolloError({\n networkError: err,\n }));\n });\n });\n };\n QueryManager.prototype.fetchQuery = function (queryId, options, fetchType, fetchMoreForQueryId) {\n var _this = this;\n var _a = options.variables, variables = _a === void 0 ? {} : _a, _b = options.metadata, metadata = _b === void 0 ? null : _b, _c = options.fetchPolicy, fetchPolicy = _c === void 0 ? 'cache-first' : _c;\n var queryDoc = this.transformQueryDocument(options).queryDoc;\n var queryString = print(queryDoc);\n var storeResult;\n var needToFetch = fetchPolicy === 'network-only';\n if (fetchType !== FetchType.refetch && fetchPolicy !== 'network-only') {\n var _d = diffQueryAgainstStore({\n query: queryDoc,\n store: this.reduxRootSelector(this.store.getState()).data,\n variables: variables,\n returnPartialData: true,\n fragmentMatcherFunction: this.fragmentMatcher.match,\n config: this.reducerConfig,\n }), isMissing = _d.isMissing, result = _d.result;\n needToFetch = isMissing || fetchPolicy === 'cache-and-network';\n storeResult = result;\n }\n var shouldFetch = needToFetch && fetchPolicy !== 'cache-only' && fetchPolicy !== 'standby';\n var requestId = this.generateRequestId();\n this.queryDocuments[queryId] = queryDoc;\n this.queryStore.initQuery({\n queryId: queryId,\n queryString: queryString,\n document: queryDoc,\n storePreviousVariables: shouldFetch,\n variables: variables,\n isPoll: fetchType === FetchType.poll,\n isRefetch: fetchType === FetchType.refetch,\n metadata: metadata,\n fetchMoreForQueryId: fetchMoreForQueryId,\n });\n this.broadcastQueries();\n if (QueryManager.EMIT_REDUX_ACTIONS) {\n this.store.dispatch({\n type: 'APOLLO_QUERY_INIT',\n queryString: queryString,\n document: queryDoc,\n operationName: getOperationName(queryDoc),\n variables: variables,\n fetchPolicy: fetchPolicy,\n queryId: queryId,\n requestId: requestId,\n storePreviousVariables: shouldFetch,\n isPoll: fetchType === FetchType.poll,\n isRefetch: fetchType === FetchType.refetch,\n fetchMoreForQueryId: fetchMoreForQueryId,\n metadata: metadata,\n });\n }\n this.lastRequestId[queryId] = requestId;\n var shouldDispatchClientResult = !shouldFetch || fetchPolicy === 'cache-and-network';\n if (shouldDispatchClientResult) {\n this.queryStore.markQueryResultClient(queryId, !shouldFetch);\n this.broadcastQueries();\n if (QueryManager.EMIT_REDUX_ACTIONS) {\n this.store.dispatch({\n type: 'APOLLO_QUERY_RESULT_CLIENT',\n result: { data: storeResult },\n variables: variables,\n document: queryDoc,\n operationName: getOperationName(queryDoc),\n complete: !shouldFetch,\n queryId: queryId,\n requestId: requestId,\n });\n }\n }\n if (shouldFetch) {\n var networkResult = this.fetchRequest({\n requestId: requestId,\n queryId: queryId,\n document: queryDoc,\n options: options,\n fetchMoreForQueryId: fetchMoreForQueryId,\n }).catch(function (error) {\n if (isApolloError(error)) {\n throw error;\n }\n else {\n if (requestId >= (_this.lastRequestId[queryId] || 1)) {\n if (QueryManager.EMIT_REDUX_ACTIONS) {\n _this.store.dispatch({\n type: 'APOLLO_QUERY_ERROR',\n error: error,\n queryId: queryId,\n requestId: requestId,\n fetchMoreForQueryId: fetchMoreForQueryId,\n });\n }\n _this.queryStore.markQueryError(queryId, error, fetchMoreForQueryId);\n _this.broadcastQueries();\n }\n _this.removeFetchQueryPromise(requestId);\n throw new ApolloError({\n networkError: error,\n });\n }\n });\n if (fetchPolicy !== 'cache-and-network') {\n return networkResult;\n }\n }\n return Promise.resolve({ data: storeResult });\n };\n QueryManager.prototype.queryListenerForObserver = function (queryId, options, observer) {\n var _this = this;\n var previouslyHadError = false;\n return function (queryStoreValue) {\n if (!queryStoreValue) {\n return;\n }\n queryStoreValue = _this.queryStore.get(queryId);\n var storedQuery = _this.observableQueries[queryId];\n var observableQuery = storedQuery ? storedQuery.observableQuery : null;\n var fetchPolicy = observableQuery\n ? observableQuery.options.fetchPolicy\n : options.fetchPolicy;\n if (fetchPolicy === 'standby') {\n return;\n }\n var lastResult = observableQuery\n ? observableQuery.getLastResult()\n : null;\n var shouldNotifyIfLoading = queryStoreValue.previousVariables ||\n fetchPolicy === 'cache-only' ||\n fetchPolicy === 'cache-and-network';\n var networkStatusChanged = lastResult &&\n queryStoreValue.networkStatus !== lastResult.networkStatus;\n if (!isNetworkRequestInFlight(queryStoreValue.networkStatus) ||\n (networkStatusChanged && options.notifyOnNetworkStatusChange) ||\n shouldNotifyIfLoading) {\n if ((queryStoreValue.graphQLErrors &&\n queryStoreValue.graphQLErrors.length > 0) ||\n queryStoreValue.networkError) {\n var apolloError_1 = new ApolloError({\n graphQLErrors: queryStoreValue.graphQLErrors,\n networkError: queryStoreValue.networkError,\n });\n previouslyHadError = true;\n if (observer.error) {\n try {\n observer.error(apolloError_1);\n }\n catch (e) {\n setTimeout(function () {\n throw e;\n }, 0);\n }\n }\n else {\n setTimeout(function () {\n throw apolloError_1;\n }, 0);\n if (!isProduction()) {\n console.info('An unhandled error was thrown because no error handler is registered ' +\n 'for the query ' +\n queryStoreValue.queryString);\n }\n }\n }\n else {\n try {\n var _a = diffQueryAgainstStore({\n store: _this.getDataWithOptimisticResults(),\n query: _this.queryDocuments[queryId],\n variables: queryStoreValue.previousVariables || queryStoreValue.variables,\n config: _this.reducerConfig,\n fragmentMatcherFunction: _this.fragmentMatcher.match,\n previousResult: lastResult && lastResult.data,\n }), data = _a.result, isMissing = _a.isMissing;\n var resultFromStore = void 0;\n if (isMissing && fetchPolicy !== 'cache-only') {\n resultFromStore = {\n data: lastResult && lastResult.data,\n loading: isNetworkRequestInFlight(queryStoreValue.networkStatus),\n networkStatus: queryStoreValue.networkStatus,\n stale: true,\n };\n }\n else {\n resultFromStore = {\n data: data,\n loading: isNetworkRequestInFlight(queryStoreValue.networkStatus),\n networkStatus: queryStoreValue.networkStatus,\n stale: false,\n };\n }\n if (observer.next) {\n var isDifferentResult = !(lastResult &&\n resultFromStore &&\n lastResult.networkStatus === resultFromStore.networkStatus &&\n lastResult.stale === resultFromStore.stale &&\n lastResult.data === resultFromStore.data);\n if (isDifferentResult || previouslyHadError) {\n try {\n observer.next(maybeDeepFreeze(resultFromStore));\n }\n catch (e) {\n setTimeout(function () {\n throw e;\n }, 0);\n }\n }\n }\n previouslyHadError = false;\n }\n catch (error) {\n previouslyHadError = true;\n if (observer.error) {\n observer.error(new ApolloError({\n networkError: error,\n }));\n }\n return;\n }\n }\n }\n };\n };\n QueryManager.prototype.watchQuery = function (options, shouldSubscribe) {\n if (shouldSubscribe === void 0) { shouldSubscribe = true; }\n if (options.returnPartialData) {\n throw new Error('returnPartialData option is no longer supported since Apollo Client 1.0.');\n }\n if (options.forceFetch) {\n throw new Error('forceFetch option is no longer supported since Apollo Client 1.0. Use fetchPolicy instead.');\n }\n if (options.noFetch) {\n throw new Error('noFetch option is no longer supported since Apollo Client 1.0. Use fetchPolicy instead.');\n }\n if (options.fetchPolicy === 'standby') {\n throw new Error('client.watchQuery cannot be called with fetchPolicy set to \"standby\"');\n }\n var queryDefinition = getQueryDefinition(options.query);\n if (queryDefinition.variableDefinitions &&\n queryDefinition.variableDefinitions.length) {\n var defaultValues = getDefaultValues(queryDefinition);\n options.variables = assign({}, defaultValues, options.variables);\n }\n if (typeof options.notifyOnNetworkStatusChange === 'undefined') {\n options.notifyOnNetworkStatusChange = false;\n }\n var transformedOptions = __assign({}, options);\n var observableQuery = new ObservableQuery({\n scheduler: this.scheduler,\n options: transformedOptions,\n shouldSubscribe: shouldSubscribe,\n });\n return observableQuery;\n };\n QueryManager.prototype.query = function (options) {\n var _this = this;\n if (!options.query) {\n throw new Error('query option is required. You must specify your GraphQL document in the query option.');\n }\n if (options.query.kind !== 'Document') {\n throw new Error('You must wrap the query string in a \"gql\" tag.');\n }\n if (options.returnPartialData) {\n throw new Error('returnPartialData option only supported on watchQuery.');\n }\n if (options.pollInterval) {\n throw new Error('pollInterval option only supported on watchQuery.');\n }\n if (options.forceFetch) {\n throw new Error('forceFetch option is no longer supported since Apollo Client 1.0. Use fetchPolicy instead.');\n }\n if (options.noFetch) {\n throw new Error('noFetch option is no longer supported since Apollo Client 1.0. Use fetchPolicy instead.');\n }\n if (typeof options.notifyOnNetworkStatusChange !== 'undefined') {\n throw new Error('Cannot call \"query\" with \"notifyOnNetworkStatusChange\" option. Only \"watchQuery\" has that option.');\n }\n options.notifyOnNetworkStatusChange = false;\n var requestId = this.idCounter;\n var resPromise = new Promise(function (resolve, reject) {\n _this.addFetchQueryPromise(requestId, resPromise, resolve, reject);\n return _this.watchQuery(options, false)\n .result()\n .then(function (result) {\n _this.removeFetchQueryPromise(requestId);\n resolve(result);\n })\n .catch(function (error) {\n _this.removeFetchQueryPromise(requestId);\n reject(error);\n });\n });\n return resPromise;\n };\n QueryManager.prototype.generateQueryId = function () {\n var queryId = this.idCounter.toString();\n this.idCounter++;\n return queryId;\n };\n QueryManager.prototype.stopQueryInStore = function (queryId) {\n this.queryStore.stopQuery(queryId);\n this.broadcastQueries();\n if (QueryManager.EMIT_REDUX_ACTIONS) {\n this.store.dispatch({\n type: 'APOLLO_QUERY_STOP',\n queryId: queryId,\n });\n }\n };\n QueryManager.prototype.getApolloState = function () {\n return this.reduxRootSelector(this.store.getState());\n };\n QueryManager.prototype.selectApolloState = function (store) {\n return this.reduxRootSelector(store.getState());\n };\n QueryManager.prototype.getInitialState = function () {\n return { data: this.getApolloState().data };\n };\n QueryManager.prototype.getDataWithOptimisticResults = function () {\n return getDataWithOptimisticResults(this.getApolloState());\n };\n QueryManager.prototype.addQueryListener = function (queryId, listener) {\n this.queryListeners[queryId] = this.queryListeners[queryId] || [];\n this.queryListeners[queryId].push(listener);\n };\n QueryManager.prototype.addFetchQueryPromise = function (requestId, promise, resolve, reject) {\n this.fetchQueryPromises[requestId.toString()] = {\n promise: promise,\n resolve: resolve,\n reject: reject,\n };\n };\n QueryManager.prototype.removeFetchQueryPromise = function (requestId) {\n delete this.fetchQueryPromises[requestId.toString()];\n };\n QueryManager.prototype.addObservableQuery = function (queryId, observableQuery) {\n this.observableQueries[queryId] = { observableQuery: observableQuery };\n var queryDef = getQueryDefinition(observableQuery.options.query);\n if (queryDef.name && queryDef.name.value) {\n var queryName = queryDef.name.value;\n this.queryIdsByName[queryName] = this.queryIdsByName[queryName] || [];\n this.queryIdsByName[queryName].push(observableQuery.queryId);\n }\n };\n QueryManager.prototype.removeObservableQuery = function (queryId) {\n var observableQuery = this.observableQueries[queryId].observableQuery;\n var definition = getQueryDefinition(observableQuery.options.query);\n var queryName = definition.name ? definition.name.value : null;\n delete this.observableQueries[queryId];\n if (queryName) {\n this.queryIdsByName[queryName] = this.queryIdsByName[queryName].filter(function (val) {\n return !(observableQuery.queryId === val);\n });\n }\n };\n QueryManager.prototype.resetStore = function () {\n var _this = this;\n Object.keys(this.fetchQueryPromises).forEach(function (key) {\n var reject = _this.fetchQueryPromises[key].reject;\n reject(new Error('Store reset while query was in flight.'));\n });\n this.queryStore.reset(Object.keys(this.observableQueries));\n this.store.dispatch({\n type: 'APOLLO_STORE_RESET',\n observableQueryIds: Object.keys(this.observableQueries),\n });\n this.mutationStore.reset();\n var observableQueryPromises = [];\n Object.keys(this.observableQueries).forEach(function (queryId) {\n var storeQuery = _this.queryStore.get(queryId);\n var fetchPolicy = _this.observableQueries[queryId].observableQuery\n .options.fetchPolicy;\n if (fetchPolicy !== 'cache-only' && fetchPolicy !== 'standby') {\n observableQueryPromises.push(_this.observableQueries[queryId].observableQuery.refetch());\n }\n });\n return Promise.all(observableQueryPromises);\n };\n QueryManager.prototype.startQuery = function (queryId, options, listener) {\n this.addQueryListener(queryId, listener);\n this.fetchQuery(queryId, options)\n .catch(function (error) { return undefined; });\n return queryId;\n };\n QueryManager.prototype.startGraphQLSubscription = function (options) {\n var _this = this;\n var query = options.query;\n var transformedDoc = query;\n if (this.addTypename) {\n transformedDoc = addTypenameToDocument(transformedDoc);\n }\n var variables = assign({}, getDefaultValues(getOperationDefinition(query)), options.variables);\n var request = {\n query: transformedDoc,\n variables: variables,\n operationName: getOperationName(transformedDoc),\n };\n var subId;\n var observers = [];\n return new Observable(function (observer) {\n observers.push(observer);\n if (observers.length === 1) {\n var handler = function (error, result) {\n if (error) {\n observers.forEach(function (obs) {\n if (obs.error) {\n obs.error(error);\n }\n });\n }\n else {\n _this.store.dispatch({\n type: 'APOLLO_SUBSCRIPTION_RESULT',\n document: transformedDoc,\n operationName: getOperationName(transformedDoc),\n result: { data: result },\n variables: variables,\n subscriptionId: subId,\n extraReducers: _this.getExtraReducers(),\n });\n observers.forEach(function (obs) {\n if (obs.next) {\n obs.next(result);\n }\n });\n }\n };\n subId = _this\n .networkInterface.subscribe(request, handler);\n }\n return {\n unsubscribe: function () {\n observers = observers.filter(function (obs) { return obs !== observer; });\n if (observers.length === 0) {\n _this.networkInterface.unsubscribe(subId);\n }\n },\n _networkSubscriptionId: subId,\n };\n });\n };\n QueryManager.prototype.removeQuery = function (queryId) {\n delete this.queryListeners[queryId];\n delete this.queryDocuments[queryId];\n };\n QueryManager.prototype.stopQuery = function (queryId) {\n this.removeQuery(queryId);\n this.stopQueryInStore(queryId);\n };\n QueryManager.prototype.getCurrentQueryResult = function (observableQuery, isOptimistic) {\n if (isOptimistic === void 0) { isOptimistic = false; }\n var _a = this.getQueryParts(observableQuery), variables = _a.variables, document = _a.document;\n var lastResult = observableQuery.getLastResult();\n var queryOptions = observableQuery.options;\n var readOptions = {\n store: isOptimistic\n ? this.getDataWithOptimisticResults()\n : this.getApolloState().data,\n query: document,\n variables: variables,\n config: this.reducerConfig,\n previousResult: lastResult ? lastResult.data : undefined,\n fragmentMatcherFunction: this.fragmentMatcher.match,\n };\n try {\n var data = readQueryFromStore(readOptions);\n return maybeDeepFreeze({ data: data, partial: false });\n }\n catch (e) {\n return maybeDeepFreeze({ data: {}, partial: true });\n }\n };\n QueryManager.prototype.getQueryWithPreviousResult = function (queryIdOrObservable, isOptimistic) {\n if (isOptimistic === void 0) { isOptimistic = false; }\n var observableQuery;\n if (typeof queryIdOrObservable === 'string') {\n if (!this.observableQueries[queryIdOrObservable]) {\n throw new Error(\"ObservableQuery with this id doesn't exist: \" + queryIdOrObservable);\n }\n observableQuery = this.observableQueries[queryIdOrObservable]\n .observableQuery;\n }\n else {\n observableQuery = queryIdOrObservable;\n }\n var _a = this.getQueryParts(observableQuery), variables = _a.variables, document = _a.document;\n var data = this.getCurrentQueryResult(observableQuery, isOptimistic).data;\n return {\n previousResult: data,\n variables: variables,\n document: document,\n };\n };\n QueryManager.prototype.getQueryParts = function (observableQuery) {\n var queryOptions = observableQuery.options;\n var transformedDoc = observableQuery.options.query;\n if (this.addTypename) {\n transformedDoc = addTypenameToDocument(transformedDoc);\n }\n return {\n variables: queryOptions.variables,\n document: transformedDoc,\n };\n };\n QueryManager.prototype.transformQueryDocument = function (options) {\n var queryDoc = options.query;\n if (this.addTypename) {\n queryDoc = addTypenameToDocument(queryDoc);\n }\n return {\n queryDoc: queryDoc,\n };\n };\n QueryManager.prototype.getExtraReducers = function () {\n var _this = this;\n return Object.keys(this.observableQueries)\n .map(function (obsQueryId) {\n var query = _this.observableQueries[obsQueryId].observableQuery;\n var queryOptions = query.options;\n if (queryOptions.reducer) {\n return createStoreReducer(queryOptions.reducer, _this.addTypename\n ? addTypenameToDocument(queryOptions.query)\n : queryOptions.query, query.variables || {}, _this.reducerConfig);\n }\n return null;\n })\n .filter(function (reducer) { return reducer !== null; });\n };\n QueryManager.prototype.fetchRequest = function (_a) {\n var _this = this;\n var requestId = _a.requestId, queryId = _a.queryId, document = _a.document, options = _a.options, fetchMoreForQueryId = _a.fetchMoreForQueryId;\n var variables = options.variables;\n var request = {\n query: document,\n variables: variables,\n operationName: getOperationName(document),\n };\n var retPromise = new Promise(function (resolve, reject) {\n _this.addFetchQueryPromise(requestId, retPromise, resolve, reject);\n _this.deduplicator\n .query(request, _this.queryDeduplication)\n .then(function (result) {\n var extraReducers = _this.getExtraReducers();\n if (requestId >= (_this.lastRequestId[queryId] || 1)) {\n _this.disableBroadcasting = true;\n _this.store.dispatch({\n type: 'APOLLO_QUERY_RESULT',\n document: document,\n variables: variables ? variables : {},\n operationName: getOperationName(document),\n result: result,\n queryId: queryId,\n requestId: requestId,\n fetchMoreForQueryId: fetchMoreForQueryId,\n extraReducers: extraReducers,\n });\n _this.disableBroadcasting = false;\n var reducerError = _this.getApolloState().reducerError;\n if (!reducerError || reducerError.queryId !== queryId) {\n _this.queryStore.markQueryResult(queryId, result, fetchMoreForQueryId);\n _this.broadcastQueries();\n }\n }\n _this.removeFetchQueryPromise(requestId);\n if (result.errors) {\n throw new ApolloError({\n graphQLErrors: result.errors,\n });\n }\n return result;\n })\n .then(function (result) {\n var resultFromStore;\n if (fetchMoreForQueryId) {\n resultFromStore = result.data;\n }\n else {\n try {\n resultFromStore = readQueryFromStore({\n store: _this.getApolloState().data,\n variables: variables,\n query: document,\n config: _this.reducerConfig,\n fragmentMatcherFunction: _this.fragmentMatcher.match,\n });\n }\n catch (e) { }\n }\n var reducerError = _this.getApolloState().reducerError;\n if (reducerError && reducerError.queryId === queryId) {\n return Promise.reject(reducerError.error);\n }\n _this.removeFetchQueryPromise(requestId);\n resolve({\n data: resultFromStore,\n loading: false,\n networkStatus: NetworkStatus.ready,\n stale: false,\n });\n return Promise.resolve();\n })\n .catch(function (error) {\n reject(error);\n });\n });\n return retPromise;\n };\n QueryManager.prototype.refetchQueryByName = function (queryName) {\n var _this = this;\n var refetchedQueries = this.queryIdsByName[queryName];\n if (refetchedQueries === undefined) {\n console.warn(\"Warning: unknown query with name \" + queryName + \" asked to refetch\");\n return;\n }\n else {\n return Promise.all(refetchedQueries.map(function (queryId) {\n return _this.observableQueries[queryId].observableQuery.refetch();\n }));\n }\n };\n QueryManager.prototype.broadcastQueries = function () {\n var _this = this;\n if (this.disableBroadcasting) {\n return;\n }\n Object.keys(this.queryListeners).forEach(function (queryId) {\n var listeners = _this.queryListeners[queryId];\n if (listeners) {\n listeners.forEach(function (listener) {\n if (listener) {\n var queryStoreValue = _this.queryStore.get(queryId);\n listener(queryStoreValue);\n }\n });\n }\n });\n };\n QueryManager.prototype.generateRequestId = function () {\n var requestId = this.idCounter;\n this.idCounter++;\n return requestId;\n };\n QueryManager.EMIT_REDUX_ACTIONS = true;\n return QueryManager;\n}());\nexport { QueryManager };\n//# sourceMappingURL=QueryManager.js.map","export var version = \"1.9.0\";\n//# sourceMappingURL=version.js.map","var __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};\nimport { createNetworkInterface, } from './transport/networkInterface';\nimport { execute, ApolloLink } from 'apollo-link-core';\nimport { HeuristicFragmentMatcher, } from './data/fragmentMatcher';\nimport { createApolloStore, createApolloReducer, } from './store';\nimport { QueryManager } from './core/QueryManager';\nimport { isProduction } from './util/environment';\nimport { getStoreKeyName } from './data/storeUtils';\nimport { ReduxDataProxy, } from './data/proxy';\nimport { version } from './version';\nvar DEFAULT_REDUX_ROOT_KEY = 'apollo';\nfunction defaultReduxRootSelector(state) {\n return state[DEFAULT_REDUX_ROOT_KEY];\n}\nfunction defaultDataIdFromObject(result) {\n if (result.__typename) {\n if (result.id !== undefined) {\n return result.__typename + \":\" + result.id;\n }\n if (result._id !== undefined) {\n return result.__typename + \":\" + result._id;\n }\n }\n return null;\n}\nvar hasSuggestedDevtools = false;\nvar ApolloClient = (function () {\n function ApolloClient(options) {\n if (options === void 0) { options = {}; }\n var _this = this;\n this.middleware = function () {\n return function (store) {\n _this.setStore(store);\n return function (next) { return function (action) {\n var previousApolloState = _this.queryManager.selectApolloState(store);\n var returnValue = next(action);\n var newApolloState = _this.queryManager.selectApolloState(store);\n if (newApolloState !== previousApolloState) {\n _this.queryManager.broadcastNewStore(store.getState());\n }\n if (_this.devToolsHookCb) {\n _this.devToolsHookCb({\n action: action,\n state: {\n queries: _this.queryManager.queryStore.getStore(),\n mutations: _this.queryManager.mutationStore.getStore(),\n },\n dataWithOptimisticResults: _this.queryManager.getDataWithOptimisticResults(),\n });\n }\n return returnValue;\n }; };\n };\n };\n var dataIdFromObject = options.dataIdFromObject;\n 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;\n if (typeof reduxRootSelector === 'function') {\n this.reduxRootSelector = reduxRootSelector;\n }\n else if (typeof reduxRootSelector !== 'undefined') {\n throw new Error('\"reduxRootSelector\" must be a function.');\n }\n if (typeof fragmentMatcher === 'undefined') {\n this.fragmentMatcher = new HeuristicFragmentMatcher();\n }\n else {\n this.fragmentMatcher = fragmentMatcher;\n }\n var createQuery = function (getResult) {\n var resolved = false;\n return function (request) {\n return new Promise(function (resolve, reject) {\n var subscription = getResult(request).subscribe({\n next: function (data) {\n if (!resolved) {\n resolve(data);\n resolved = true;\n }\n else {\n console.warn('Apollo Client does not support multiple results from an Observable');\n }\n },\n error: reject,\n complete: function () { return subscription.unsubscribe(); },\n });\n });\n };\n };\n if (networkInterface instanceof ApolloLink) {\n this.networkInterface = {\n query: createQuery(function (request) {\n return execute(networkInterface, request);\n }),\n };\n }\n else if (networkInterface &&\n typeof networkInterface.request ===\n 'function') {\n console.warn(\"The Observable Network interface will be deprecated\");\n this.networkInterface = __assign({}, networkInterface, { query: createQuery(networkInterface.request) });\n }\n else {\n this.networkInterface = networkInterface\n ? networkInterface\n : createNetworkInterface({ uri: '/graphql' });\n }\n this.initialState = initialState ? initialState : {};\n this.addTypename = addTypename;\n this.disableNetworkFetches = ssrMode || ssrForceFetchDelay > 0;\n this.dataId = dataIdFromObject =\n dataIdFromObject || defaultDataIdFromObject;\n this.dataIdFromObject = this.dataId;\n this.fieldWithArgs = getStoreKeyName;\n this.queryDeduplication = queryDeduplication;\n this.ssrMode = ssrMode;\n if (ssrForceFetchDelay) {\n setTimeout(function () { return (_this.disableNetworkFetches = false); }, ssrForceFetchDelay);\n }\n this.reducerConfig = {\n dataIdFromObject: dataIdFromObject,\n customResolvers: customResolvers,\n addTypename: addTypename,\n fragmentMatcher: this.fragmentMatcher.match,\n };\n this.watchQuery = this.watchQuery.bind(this);\n this.query = this.query.bind(this);\n this.mutate = this.mutate.bind(this);\n this.setStore = this.setStore.bind(this);\n this.resetStore = this.resetStore.bind(this);\n var defaultConnectToDevTools = !isProduction() &&\n typeof window !== 'undefined' &&\n !window.__APOLLO_CLIENT__;\n if (typeof connectToDevTools === 'undefined'\n ? defaultConnectToDevTools\n : connectToDevTools) {\n window.__APOLLO_CLIENT__ = this;\n }\n if (!hasSuggestedDevtools && !isProduction()) {\n hasSuggestedDevtools = true;\n if (typeof window !== 'undefined' &&\n window.document &&\n window.top === window.self) {\n if (typeof window.__APOLLO_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {\n if (navigator.userAgent.indexOf('Chrome') > -1) {\n console.debug('Download the Apollo DevTools ' +\n 'for a better development experience: ' +\n 'https://chrome.google.com/webstore/detail/apollo-client-developer-t/jdkknkkbebbapilgoeccciglkfbmbnfm');\n }\n }\n }\n }\n this.version = version;\n }\n ApolloClient.prototype.watchQuery = function (options) {\n this.initStore();\n if (this.disableNetworkFetches && options.fetchPolicy === 'network-only') {\n options = __assign({}, options, { fetchPolicy: 'cache-first' });\n }\n return this.queryManager.watchQuery(options);\n };\n ApolloClient.prototype.query = function (options) {\n this.initStore();\n if (options.fetchPolicy === 'cache-and-network') {\n throw new Error('cache-and-network fetchPolicy can only be used with watchQuery');\n }\n if (this.disableNetworkFetches && options.fetchPolicy === 'network-only') {\n options = __assign({}, options, { fetchPolicy: 'cache-first' });\n }\n return this.queryManager.query(options);\n };\n ApolloClient.prototype.mutate = function (options) {\n this.initStore();\n return this.queryManager.mutate(options);\n };\n ApolloClient.prototype.subscribe = function (options) {\n this.initStore();\n return this.queryManager.startGraphQLSubscription(options);\n };\n ApolloClient.prototype.readQuery = function (options) {\n return this.initProxy().readQuery(options);\n };\n ApolloClient.prototype.readFragment = function (options) {\n return this.initProxy().readFragment(options);\n };\n ApolloClient.prototype.writeQuery = function (options) {\n return this.initProxy().writeQuery(options);\n };\n ApolloClient.prototype.writeFragment = function (options) {\n return this.initProxy().writeFragment(options);\n };\n ApolloClient.prototype.reducer = function () {\n return createApolloReducer(this.reducerConfig);\n };\n ApolloClient.prototype.__actionHookForDevTools = function (cb) {\n this.devToolsHookCb = cb;\n };\n ApolloClient.prototype.initStore = function () {\n var _this = this;\n if (this.store) {\n return;\n }\n if (this.reduxRootSelector) {\n throw new Error('Cannot initialize the store because \"reduxRootSelector\" is provided. ' +\n 'reduxRootSelector should only be used when the store is created outside of the client. ' +\n 'This may lead to unexpected results when querying the store internally. ' +\n \"Please remove that option from ApolloClient constructor.\");\n }\n this.setStore(createApolloStore({\n reduxRootKey: DEFAULT_REDUX_ROOT_KEY,\n initialState: this.initialState,\n config: this.reducerConfig,\n logger: function (store) { return function (next) { return function (action) {\n var result = next(action);\n if (_this.devToolsHookCb) {\n _this.devToolsHookCb({\n action: action,\n state: {\n queries: _this.queryManager.queryStore.getStore(),\n mutations: _this.queryManager.mutationStore.getStore(),\n },\n dataWithOptimisticResults: _this.queryManager.getDataWithOptimisticResults(),\n });\n }\n return result;\n }; }; },\n }));\n };\n ApolloClient.prototype.resetStore = function () {\n return this.queryManager ? this.queryManager.resetStore() : null;\n };\n ApolloClient.prototype.getInitialState = function () {\n this.initStore();\n return this.queryManager.getInitialState();\n };\n ApolloClient.prototype.setStore = function (store) {\n var reduxRootSelector;\n if (this.reduxRootSelector) {\n reduxRootSelector = this.reduxRootSelector;\n }\n else {\n reduxRootSelector = defaultReduxRootSelector;\n }\n if (typeof reduxRootSelector(store.getState()) === 'undefined') {\n throw new Error('Existing store does not use apolloReducer. Please make sure the store ' +\n 'is properly configured and \"reduxRootSelector\" is correctly specified.');\n }\n this.store = store;\n this.queryManager = new QueryManager({\n networkInterface: this.networkInterface,\n reduxRootSelector: reduxRootSelector,\n store: store,\n addTypename: this.addTypename,\n reducerConfig: this.reducerConfig,\n queryDeduplication: this.queryDeduplication,\n fragmentMatcher: this.fragmentMatcher,\n ssrMode: this.ssrMode,\n });\n };\n ApolloClient.prototype.initProxy = function () {\n if (!this.proxy) {\n this.initStore();\n this.proxy = new ReduxDataProxy(this.store, this.reduxRootSelector || defaultReduxRootSelector, this.fragmentMatcher, this.reducerConfig);\n }\n return this.proxy;\n };\n return ApolloClient;\n}());\nexport default ApolloClient;\n//# sourceMappingURL=ApolloClient.js.map"],"names":["__assign","this","print","__extends","applyMiddleware","compose","reduxCompose","createStore","combineReducers","NetworkStatus","haveWarned","ApolloClient","ApolloLink","execute"],"mappings":"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"}
\No newline at end of file