"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var apollo_utilities_1 = require("apollo-utilities"); var DataStore = (function () { function DataStore(initialCache) { this.cache = initialCache; } DataStore.prototype.getCache = function () { return this.cache; }; DataStore.prototype.markQueryResult = function (result, document, variables, fetchMoreForQueryId, ignoreErrors) { if (ignoreErrors === void 0) { ignoreErrors = false; } var writeWithErrors = !apollo_utilities_1.graphQLResultHasError(result); if (ignoreErrors && apollo_utilities_1.graphQLResultHasError(result) && result.data) { writeWithErrors = true; } if (!fetchMoreForQueryId && writeWithErrors) { this.cache.write({ result: result.data, dataId: 'ROOT_QUERY', query: document, variables: variables, }); } }; DataStore.prototype.markSubscriptionResult = function (result, document, variables) { if (!apollo_utilities_1.graphQLResultHasError(result)) { this.cache.write({ result: result.data, dataId: 'ROOT_SUBSCRIPTION', query: document, variables: variables, }); } }; DataStore.prototype.markMutationInit = function (mutation) { var _this = this; if (mutation.optimisticResponse) { var optimistic_1; if (typeof mutation.optimisticResponse === 'function') { optimistic_1 = mutation.optimisticResponse(mutation.variables); } else { optimistic_1 = mutation.optimisticResponse; } this.cache.recordOptimisticTransaction(function (c) { var orig = _this.cache; _this.cache = c; try { _this.markMutationResult({ mutationId: mutation.mutationId, result: { data: optimistic_1 }, document: mutation.document, variables: mutation.variables, updateQueries: mutation.updateQueries, update: mutation.update, }); } finally { _this.cache = orig; } }, mutation.mutationId); } }; DataStore.prototype.markMutationResult = function (mutation) { var _this = this; if (!apollo_utilities_1.graphQLResultHasError(mutation.result)) { var cacheWrites_1 = [{ result: mutation.result.data, dataId: 'ROOT_MUTATION', query: mutation.document, variables: mutation.variables, }]; var updateQueries_1 = mutation.updateQueries; if (updateQueries_1) { Object.keys(updateQueries_1).forEach(function (id) { var _a = updateQueries_1[id], query = _a.query, updater = _a.updater; var _b = _this.cache.diff({ query: query.document, variables: query.variables, returnPartialData: true, optimistic: false, }), currentQueryResult = _b.result, complete = _b.complete; if (complete) { var nextQueryResult = apollo_utilities_1.tryFunctionOrLogError(function () { return updater(currentQueryResult, { mutationResult: mutation.result, queryName: apollo_utilities_1.getOperationName(query.document) || undefined, queryVariables: query.variables, }); }); if (nextQueryResult) { cacheWrites_1.push({ result: nextQueryResult, dataId: 'ROOT_QUERY', query: query.document, variables: query.variables, }); } } }); } this.cache.performTransaction(function (c) { cacheWrites_1.forEach(function (write) { return c.write(write); }); var update = mutation.update; if (update) { apollo_utilities_1.tryFunctionOrLogError(function () { return update(c, mutation.result); }); } }); } }; DataStore.prototype.markMutationComplete = function (_a) { var mutationId = _a.mutationId, optimisticResponse = _a.optimisticResponse; if (optimisticResponse) { this.cache.removeOptimistic(mutationId); } }; DataStore.prototype.markUpdateQueryResult = function (document, variables, newResult) { this.cache.write({ result: newResult, dataId: 'ROOT_QUERY', variables: variables, query: document, }); }; DataStore.prototype.reset = function () { return this.cache.reset(); }; return DataStore; }()); exports.DataStore = DataStore; //# sourceMappingURL=store.js.map