UNPKG

apollo-cache-inmemory

Version:

Core abstract of Caching layer for Apollo Client

65 lines 2.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var optimism_1 = require("optimism"); var hasOwn = Object.prototype.hasOwnProperty; var DepTrackingCache = (function () { function DepTrackingCache(data) { var _this = this; if (data === void 0) { data = Object.create(null); } this.data = data; this.depend = optimism_1.wrap(function (dataId) { return _this.data[dataId]; }, { disposable: true, makeCacheKey: function (dataId) { return dataId; }, }); } DepTrackingCache.prototype.toObject = function () { return this.data; }; DepTrackingCache.prototype.get = function (dataId) { this.depend(dataId); return this.data[dataId]; }; DepTrackingCache.prototype.set = function (dataId, value) { var oldValue = this.data[dataId]; if (value !== oldValue) { this.data[dataId] = value; this.depend.dirty(dataId); } }; DepTrackingCache.prototype.delete = function (dataId) { if (hasOwn.call(this.data, dataId)) { delete this.data[dataId]; this.depend.dirty(dataId); } }; DepTrackingCache.prototype.clear = function () { this.replace(null); }; DepTrackingCache.prototype.replace = function (newData) { var _this = this; if (newData) { Object.keys(newData).forEach(function (dataId) { _this.set(dataId, newData[dataId]); }); Object.keys(this.data).forEach(function (dataId) { if (!hasOwn.call(newData, dataId)) { _this.delete(dataId); } }); } else { Object.keys(this.data).forEach(function (dataId) { _this.delete(dataId); }); } }; return DepTrackingCache; }()); exports.DepTrackingCache = DepTrackingCache; function defaultNormalizedCacheFactory(seed) { return new DepTrackingCache(seed); } exports.defaultNormalizedCacheFactory = defaultNormalizedCacheFactory; //# sourceMappingURL=depTrackingCache.js.map