UNPKG

@datorama/akita

Version:

State Management Tailored-Made for JS Applications

69 lines 6.75 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { toEntitiesObject } from './toEntitiesObject'; import { isArray } from './isArray'; import { hasActiveState, resolveActiveEntity } from './activeState'; // @internal /** * @template Entity * @param {?} state * @return {?} */ export function isEntityState(state) { return state.entities && state.ids; } // @internal /** * @template E * @param {?} entities * @param {?} preAddEntity * @return {?} */ function applyMiddleware(entities, preAddEntity) { /** @type {?} */ let mapped = {}; for (const id of Object.keys(entities)) { mapped[id] = preAddEntity(entities[id]); } return mapped; } // @internal /** * @template S, E * @param {?} __0 * @return {?} */ export function setEntities({ state, entities, idKey, preAddEntity, isNativePreAdd }) { /** @type {?} */ let newEntities; /** @type {?} */ let newIds; if (isArray(entities)) { /** @type {?} */ const resolve = toEntitiesObject(entities, idKey, preAddEntity); newEntities = resolve.entities; newIds = resolve.ids; } else if (isEntityState(entities)) { newEntities = isNativePreAdd ? entities.entities : applyMiddleware(entities.entities, preAddEntity); newIds = entities.ids; } else { // it's an object newEntities = isNativePreAdd ? entities : applyMiddleware(entities, preAddEntity); newIds = Object.keys(newEntities).map((/** * @param {?} id * @return {?} */ id => (isNaN((/** @type {?} */ (id))) ? id : Number(id)))); } /** @type {?} */ const newState = Object.assign({}, state, { entities: newEntities, ids: newIds, loading: false }); if (hasActiveState(state)) { newState.active = resolveActiveEntity((/** @type {?} */ (newState))); } return newState; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0RW50aXRpZXMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZGF0b3JhbWEvYWtpdGEvIiwic291cmNlcyI6WyJzcmMvc2V0RW50aXRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQWFwRSxNQUFNLFVBQVUsYUFBYSxDQUFTLEtBQUs7SUFDekMsT0FBTyxLQUFLLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUM7QUFDckMsQ0FBQzs7Ozs7Ozs7QUFHRCxTQUFTLGVBQWUsQ0FBSSxRQUFvQixFQUFFLFlBQTZCOztRQUN6RSxNQUFNLEdBQUcsRUFBRTtJQUNmLEtBQUssTUFBTSxFQUFFLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtRQUN0QyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQ3pDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQzs7Ozs7OztBQUdELE1BQU0sVUFBVSxXQUFXLENBQThCLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBMkI7O1FBQ3BJLFdBQXVCOztRQUN2QixNQUFZO0lBRWhCLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFOztjQUNmLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQztRQUMvRCxXQUFXLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUMvQixNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQztLQUN0QjtTQUFNLElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQ2xDLFdBQVcsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3BHLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDO0tBQ3ZCO1NBQU07UUFDTCxpQkFBaUI7UUFDakIsV0FBVyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ2xGLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUc7Ozs7UUFBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLG1CQUFBLEVBQUUsRUFBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQztLQUNuRjs7VUFFSyxRQUFRLHFCQUNULEtBQUssSUFDUixRQUFRLEVBQUUsV0FBVyxFQUNyQixHQUFHLEVBQUUsTUFBTSxFQUNYLE9BQU8sRUFBRSxLQUFLLEdBQ2Y7SUFFRCxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUN6QixRQUFRLENBQUMsTUFBTSxHQUFHLG1CQUFtQixDQUFDLG1CQUFBLFFBQVEsRUFBTyxDQUFDLENBQUM7S0FDeEQ7SUFFRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXRpZXMsIEVudGl0eVN0YXRlLCBIYXNoTWFwLCBJRCwgUHJlQWRkRW50aXR5IH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyB0b0VudGl0aWVzT2JqZWN0IH0gZnJvbSAnLi90b0VudGl0aWVzT2JqZWN0JztcbmltcG9ydCB7IGlzQXJyYXkgfSBmcm9tICcuL2lzQXJyYXknO1xuaW1wb3J0IHsgaGFzQWN0aXZlU3RhdGUsIHJlc29sdmVBY3RpdmVFbnRpdHkgfSBmcm9tICcuL2FjdGl2ZVN0YXRlJztcblxuZXhwb3J0IHR5cGUgU2V0RW50aXRpZXM8RW50aXR5PiA9IEVudGl0eVtdIHwgRW50aXRpZXM8RW50aXR5PiB8IEhhc2hNYXA8RW50aXR5PjtcblxuZXhwb3J0IHR5cGUgU2V0RW50aXRpZXNQYXJhbXM8U3RhdGUsIEVudGl0eT4gPSB7XG4gIHN0YXRlOiBTdGF0ZTtcbiAgZW50aXRpZXM6IFNldEVudGl0aWVzPEVudGl0eT47XG4gIGlkS2V5OiBzdHJpbmc7XG4gIHByZUFkZEVudGl0eTogUHJlQWRkRW50aXR5PEVudGl0eT47XG4gIGlzTmF0aXZlUHJlQWRkPzogYm9vbGVhbjtcbn07XG5cbi8vIEBpbnRlcm5hbFxuZXhwb3J0IGZ1bmN0aW9uIGlzRW50aXR5U3RhdGU8RW50aXR5PihzdGF0ZSk6IHN0YXRlIGlzIEVudGl0aWVzPEVudGl0eT4ge1xuICByZXR1cm4gc3RhdGUuZW50aXRpZXMgJiYgc3RhdGUuaWRzO1xufVxuXG4vLyBAaW50ZXJuYWxcbmZ1bmN0aW9uIGFwcGx5TWlkZGxld2FyZTxFPihlbnRpdGllczogSGFzaE1hcDxFPiwgcHJlQWRkRW50aXR5OiBQcmVBZGRFbnRpdHk8RT4pIHtcbiAgbGV0IG1hcHBlZCA9IHt9O1xuICBmb3IgKGNvbnN0IGlkIG9mIE9iamVjdC5rZXlzKGVudGl0aWVzKSkge1xuICAgIG1hcHBlZFtpZF0gPSBwcmVBZGRFbnRpdHkoZW50aXRpZXNbaWRdKTtcbiAgfVxuXG4gIHJldHVybiBtYXBwZWQ7XG59XG5cbi8vIEBpbnRlcm5hbFxuZXhwb3J0IGZ1bmN0aW9uIHNldEVudGl0aWVzPFMgZXh0ZW5kcyBFbnRpdHlTdGF0ZTxFPiwgRT4oeyBzdGF0ZSwgZW50aXRpZXMsIGlkS2V5LCBwcmVBZGRFbnRpdHksIGlzTmF0aXZlUHJlQWRkIH06IFNldEVudGl0aWVzUGFyYW1zPFMsIEU+KTogUyB7XG4gIGxldCBuZXdFbnRpdGllczogSGFzaE1hcDxFPjtcbiAgbGV0IG5ld0lkczogSURbXTtcblxuICBpZiAoaXNBcnJheShlbnRpdGllcykpIHtcbiAgICBjb25zdCByZXNvbHZlID0gdG9FbnRpdGllc09iamVjdChlbnRpdGllcywgaWRLZXksIHByZUFkZEVudGl0eSk7XG4gICAgbmV3RW50aXRpZXMgPSByZXNvbHZlLmVudGl0aWVzO1xuICAgIG5ld0lkcyA9IHJlc29sdmUuaWRzO1xuICB9IGVsc2UgaWYgKGlzRW50aXR5U3RhdGUoZW50aXRpZXMpKSB7XG4gICAgbmV3RW50aXRpZXMgPSBpc05hdGl2ZVByZUFkZCA/IGVudGl0aWVzLmVudGl0aWVzIDogYXBwbHlNaWRkbGV3YXJlKGVudGl0aWVzLmVudGl0aWVzLCBwcmVBZGRFbnRpdHkpO1xuICAgIG5ld0lkcyA9IGVudGl0aWVzLmlkcztcbiAgfSBlbHNlIHtcbiAgICAvLyBpdCdzIGFuIG9iamVjdFxuICAgIG5ld0VudGl0aWVzID0gaXNOYXRpdmVQcmVBZGQgPyBlbnRpdGllcyA6IGFwcGx5TWlkZGxld2FyZShlbnRpdGllcywgcHJlQWRkRW50aXR5KTtcbiAgICBuZXdJZHMgPSBPYmplY3Qua2V5cyhuZXdFbnRpdGllcykubWFwKGlkID0+IChpc05hTihpZCBhcyBhbnkpID8gaWQgOiBOdW1iZXIoaWQpKSk7XG4gIH1cblxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBlbnRpdGllczogbmV3RW50aXRpZXMsXG4gICAgaWRzOiBuZXdJZHMsXG4gICAgbG9hZGluZzogZmFsc2VcbiAgfTtcblxuICBpZiAoaGFzQWN0aXZlU3RhdGUoc3RhdGUpKSB7XG4gICAgbmV3U3RhdGUuYWN0aXZlID0gcmVzb2x2ZUFjdGl2ZUVudGl0eShuZXdTdGF0ZSBhcyBhbnkpO1xuICB9XG5cbiAgcmV0dXJuIG5ld1N0YXRlO1xufVxuIl19