UNPKG

@datorama/akita

Version:

State Management Tailored-Made for JS Applications

41 lines 4.54 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { hasEntity } from './hasEntity'; // @internal /** * @template S, E * @param {?} __0 * @return {?} */ export function addEntities({ state, entities, idKey, options = {}, preAddEntity }) { /** @type {?} */ let newEntities = {}; /** @type {?} */ let newIds = []; /** @type {?} */ let hasNewEntities = false; for (const entity of entities) { if (hasEntity(state.entities, entity[idKey]) === false) { // evaluate the middleware first to support dynamic ids /** @type {?} */ const current = preAddEntity(entity); /** @type {?} */ const entityId = current[idKey]; newEntities[entityId] = current; if (options.prepend) newIds.unshift(entityId); else newIds.push(entityId); hasNewEntities = true; } } return hasNewEntities ? { newState: Object.assign({}, state, { entities: Object.assign({}, state.entities, newEntities), ids: options.prepend ? [...newIds, ...state.ids] : [...state.ids, ...newIds] }), newIds } : null; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkRW50aXRpZXMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZGF0b3JhbWEvYWtpdGEvIiwic291cmNlcyI6WyJzcmMvYWRkRW50aXRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7Ozs7QUFheEMsTUFBTSxVQUFVLFdBQVcsQ0FBOEIsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEdBQUcsRUFBRSxFQUFFLFlBQVksRUFBMkI7O1FBQ2xJLFdBQVcsR0FBRyxFQUFFOztRQUNoQixNQUFNLEdBQUcsRUFBRTs7UUFDWCxjQUFjLEdBQUcsS0FBSztJQUUxQixLQUFLLE1BQU0sTUFBTSxJQUFJLFFBQVEsRUFBRTtRQUM3QixJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEtBQUssRUFBRTs7O2tCQUVoRCxPQUFPLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQzs7a0JBQzlCLFFBQVEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQy9CLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxPQUFPLENBQUM7WUFDaEMsSUFBSSxPQUFPLENBQUMsT0FBTztnQkFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDOztnQkFDekMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUUzQixjQUFjLEdBQUcsSUFBSSxDQUFDO1NBQ3ZCO0tBQ0Y7SUFFRCxPQUFPLGNBQWM7UUFDbkIsQ0FBQyxDQUFDO1lBQ0UsUUFBUSxvQkFDSCxLQUFLLElBQ1IsUUFBUSxvQkFDSCxLQUFLLENBQUMsUUFBUSxFQUNkLFdBQVcsR0FFaEIsR0FBRyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLEdBQzdFO1lBQ0QsTUFBTTtTQUNQO1FBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHlTdGF0ZSwgUHJlQWRkRW50aXR5IH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBoYXNFbnRpdHkgfSBmcm9tICcuL2hhc0VudGl0eSc7XG5cbmV4cG9ydCB0eXBlIEFkZEVudGl0aWVzUGFyYW1zPFN0YXRlLCBFbnRpdHk+ID0ge1xuICBzdGF0ZTogU3RhdGU7XG4gIGVudGl0aWVzOiBFbnRpdHlbXTtcbiAgaWRLZXk6IHN0cmluZztcbiAgb3B0aW9uczogQWRkRW50aXRpZXNPcHRpb25zO1xuICBwcmVBZGRFbnRpdHk6IFByZUFkZEVudGl0eTxFbnRpdHk+O1xufTtcblxuZXhwb3J0IHR5cGUgQWRkRW50aXRpZXNPcHRpb25zID0geyBwcmVwZW5kPzogYm9vbGVhbjsgbG9hZGluZz86IGJvb2xlYW4gfTtcblxuLy8gQGludGVybmFsXG5leHBvcnQgZnVuY3Rpb24gYWRkRW50aXRpZXM8UyBleHRlbmRzIEVudGl0eVN0YXRlPEU+LCBFPih7IHN0YXRlLCBlbnRpdGllcywgaWRLZXksIG9wdGlvbnMgPSB7fSwgcHJlQWRkRW50aXR5IH06IEFkZEVudGl0aWVzUGFyYW1zPFMsIEU+KSB7XG4gIGxldCBuZXdFbnRpdGllcyA9IHt9O1xuICBsZXQgbmV3SWRzID0gW107XG4gIGxldCBoYXNOZXdFbnRpdGllcyA9IGZhbHNlO1xuXG4gIGZvciAoY29uc3QgZW50aXR5IG9mIGVudGl0aWVzKSB7XG4gICAgaWYgKGhhc0VudGl0eShzdGF0ZS5lbnRpdGllcywgZW50aXR5W2lkS2V5XSkgPT09IGZhbHNlKSB7XG4gICAgICAvLyBldmFsdWF0ZSB0aGUgbWlkZGxld2FyZSBmaXJzdCB0byBzdXBwb3J0IGR5bmFtaWMgaWRzXG4gICAgICBjb25zdCBjdXJyZW50ID0gcHJlQWRkRW50aXR5KGVudGl0eSk7XG4gICAgICBjb25zdCBlbnRpdHlJZCA9IGN1cnJlbnRbaWRLZXldO1xuICAgICAgbmV3RW50aXRpZXNbZW50aXR5SWRdID0gY3VycmVudDtcbiAgICAgIGlmIChvcHRpb25zLnByZXBlbmQpIG5ld0lkcy51bnNoaWZ0KGVudGl0eUlkKTtcbiAgICAgIGVsc2UgbmV3SWRzLnB1c2goZW50aXR5SWQpO1xuXG4gICAgICBoYXNOZXdFbnRpdGllcyA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGhhc05ld0VudGl0aWVzXG4gICAgPyB7XG4gICAgICAgIG5ld1N0YXRlOiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgZW50aXRpZXM6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLmVudGl0aWVzLFxuICAgICAgICAgICAgLi4ubmV3RW50aXRpZXNcbiAgICAgICAgICB9LFxuICAgICAgICAgIGlkczogb3B0aW9ucy5wcmVwZW5kID8gWy4uLm5ld0lkcywgLi4uc3RhdGUuaWRzXSA6IFsuLi5zdGF0ZS5pZHMsIC4uLm5ld0lkc11cbiAgICAgICAgfSxcbiAgICAgICAgbmV3SWRzXG4gICAgICB9XG4gICAgOiBudWxsO1xufVxuIl19