UNPKG

nuclear-entity-cache

Version:

A simple nuclear.js cache module that can be used as a centralized cache for entities.

70 lines (53 loc) 1.81 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.load = load; exports.remove = remove; var _invariant = require('invariant'); var _invariant2 = _interopRequireDefault(_invariant); var _lodash = require('lodash.isobject'); var _lodash2 = _interopRequireDefault(_lodash); var _EntityInterface = require('./interfaces/EntityInterface'); var _EntityInterface2 = _interopRequireDefault(_EntityInterface); var _actionTypes = require('./actionTypes'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * Action to cache entity data. * * @public * @param {Nuclear.Reactor} reactor * @param {string} entityName * @param {object|array} data */ function load(reactor, entityName, data) { (0, _invariant2.default)(entityName, 'EntityCache.actions.load: expected an entity name provided.'); if (!Array.isArray(data)) { data = [data]; } data.forEach(function (entity) { (0, _invariant2.default)(_EntityInterface2.default.isInstance(entity), 'EntityCache.actions.load: expected entity like to satisfy ' + _EntityInterface2.default.toString() + '; got %s instead', entity.constructor.name); }); reactor.dispatch(_actionTypes.ENTITY_CACHE_LOAD, { name: entityName, data: data }); } /** * Action to remove entities. * * @public * @param {Nuclear.Reactor} reactor * @param {string} entityName * @param {array} selectors * @returns {Immutable.Map} */ function remove(reactor, entityName, selectors) { (0, _invariant2.default)(entityName, 'EntityCache.actions.remove: expected an entity name provided.'); if (!Array.isArray(selectors)) { selectors = [selectors]; } reactor.dispatch(_actionTypes.ENTITY_CACHE_REMOVE, { entityName: entityName, selectors: selectors }); }