UNPKG

@datorama/akita

Version:

State Management Tailored-Made for JS Applications

82 lines 7.3 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; 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) { var e_1, _a; /** @type {?} */ var mapped = {}; try { for (var _b = tslib_1.__values(Object.keys(entities)), _c = _b.next(); !_c.done; _c = _b.next()) { var id = _c.value; mapped[id] = preAddEntity(entities[id]); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_1) throw e_1.error; } } return mapped; } // @internal /** * @template S, E * @param {?} __0 * @return {?} */ export function setEntities(_a) { var state = _a.state, entities = _a.entities, idKey = _a.idKey, preAddEntity = _a.preAddEntity, isNativePreAdd = _a.isNativePreAdd; /** @type {?} */ var newEntities; /** @type {?} */ var newIds; if (isArray(entities)) { /** @type {?} */ var 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 {?} */ function (id) { return (isNaN((/** @type {?} */ (id))) ? id : Number(id)); })); } /** @type {?} */ var newState = tslib_1.__assign({}, state, { entities: newEntities, ids: newIds, loading: false }); if (hasActiveState(state)) { newState.active = resolveActiveEntity((/** @type {?} */ (newState))); } return newState; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0RW50aXRpZXMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZGF0b3JhbWEvYWtpdGEvIiwic291cmNlcyI6WyJzcmMvc2V0RW50aXRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFhcEUsTUFBTSxVQUFVLGFBQWEsQ0FBUyxLQUFLO0lBQ3pDLE9BQU8sS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDO0FBQ3JDLENBQUM7Ozs7Ozs7O0FBR0QsU0FBUyxlQUFlLENBQUksUUFBb0IsRUFBRSxZQUE2Qjs7O1FBQ3pFLE1BQU0sR0FBRyxFQUFFOztRQUNmLEtBQWlCLElBQUEsS0FBQSxpQkFBQSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBLGdCQUFBLDRCQUFFO1lBQW5DLElBQU0sRUFBRSxXQUFBO1lBQ1gsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN6Qzs7Ozs7Ozs7O0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQzs7Ozs7OztBQUdELE1BQU0sVUFBVSxXQUFXLENBQThCLEVBQWlGO1FBQS9FLGdCQUFLLEVBQUUsc0JBQVEsRUFBRSxnQkFBSyxFQUFFLDhCQUFZLEVBQUUsa0NBQWM7O1FBQ3pHLFdBQXVCOztRQUN2QixNQUFZO0lBRWhCLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFOztZQUNmLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQztRQUMvRCxXQUFXLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUMvQixNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQztLQUN0QjtTQUFNLElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQ2xDLFdBQVcsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3BHLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDO0tBQ3ZCO1NBQU07UUFDTCxpQkFBaUI7UUFDakIsV0FBVyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ2xGLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUc7Ozs7UUFBQyxVQUFBLEVBQUUsSUFBSSxPQUFBLENBQUMsS0FBSyxDQUFDLG1CQUFBLEVBQUUsRUFBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQXBDLENBQW9DLEVBQUMsQ0FBQztLQUNuRjs7UUFFSyxRQUFRLHdCQUNULEtBQUssSUFDUixRQUFRLEVBQUUsV0FBVyxFQUNyQixHQUFHLEVBQUUsTUFBTSxFQUNYLE9BQU8sRUFBRSxLQUFLLEdBQ2Y7SUFFRCxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUN6QixRQUFRLENBQUMsTUFBTSxHQUFHLG1CQUFtQixDQUFDLG1CQUFBLFFBQVEsRUFBTyxDQUFDLENBQUM7S0FDeEQ7SUFFRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXRpZXMsIEVudGl0eVN0YXRlLCBIYXNoTWFwLCBJRCwgUHJlQWRkRW50aXR5IH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyB0b0VudGl0aWVzT2JqZWN0IH0gZnJvbSAnLi90b0VudGl0aWVzT2JqZWN0JztcbmltcG9ydCB7IGlzQXJyYXkgfSBmcm9tICcuL2lzQXJyYXknO1xuaW1wb3J0IHsgaGFzQWN0aXZlU3RhdGUsIHJlc29sdmVBY3RpdmVFbnRpdHkgfSBmcm9tICcuL2FjdGl2ZVN0YXRlJztcblxuZXhwb3J0IHR5cGUgU2V0RW50aXRpZXM8RW50aXR5PiA9IEVudGl0eVtdIHwgRW50aXRpZXM8RW50aXR5PiB8IEhhc2hNYXA8RW50aXR5PjtcblxuZXhwb3J0IHR5cGUgU2V0RW50aXRpZXNQYXJhbXM8U3RhdGUsIEVudGl0eT4gPSB7XG4gIHN0YXRlOiBTdGF0ZTtcbiAgZW50aXRpZXM6IFNldEVudGl0aWVzPEVudGl0eT47XG4gIGlkS2V5OiBzdHJpbmc7XG4gIHByZUFkZEVudGl0eTogUHJlQWRkRW50aXR5PEVudGl0eT47XG4gIGlzTmF0aXZlUHJlQWRkPzogYm9vbGVhbjtcbn07XG5cbi8vIEBpbnRlcm5hbFxuZXhwb3J0IGZ1bmN0aW9uIGlzRW50aXR5U3RhdGU8RW50aXR5PihzdGF0ZSk6IHN0YXRlIGlzIEVudGl0aWVzPEVudGl0eT4ge1xuICByZXR1cm4gc3RhdGUuZW50aXRpZXMgJiYgc3RhdGUuaWRzO1xufVxuXG4vLyBAaW50ZXJuYWxcbmZ1bmN0aW9uIGFwcGx5TWlkZGxld2FyZTxFPihlbnRpdGllczogSGFzaE1hcDxFPiwgcHJlQWRkRW50aXR5OiBQcmVBZGRFbnRpdHk8RT4pIHtcbiAgbGV0IG1hcHBlZCA9IHt9O1xuICBmb3IgKGNvbnN0IGlkIG9mIE9iamVjdC5rZXlzKGVudGl0aWVzKSkge1xuICAgIG1hcHBlZFtpZF0gPSBwcmVBZGRFbnRpdHkoZW50aXRpZXNbaWRdKTtcbiAgfVxuXG4gIHJldHVybiBtYXBwZWQ7XG59XG5cbi8vIEBpbnRlcm5hbFxuZXhwb3J0IGZ1bmN0aW9uIHNldEVudGl0aWVzPFMgZXh0ZW5kcyBFbnRpdHlTdGF0ZTxFPiwgRT4oeyBzdGF0ZSwgZW50aXRpZXMsIGlkS2V5LCBwcmVBZGRFbnRpdHksIGlzTmF0aXZlUHJlQWRkIH06IFNldEVudGl0aWVzUGFyYW1zPFMsIEU+KTogUyB7XG4gIGxldCBuZXdFbnRpdGllczogSGFzaE1hcDxFPjtcbiAgbGV0IG5ld0lkczogSURbXTtcblxuICBpZiAoaXNBcnJheShlbnRpdGllcykpIHtcbiAgICBjb25zdCByZXNvbHZlID0gdG9FbnRpdGllc09iamVjdChlbnRpdGllcywgaWRLZXksIHByZUFkZEVudGl0eSk7XG4gICAgbmV3RW50aXRpZXMgPSByZXNvbHZlLmVudGl0aWVzO1xuICAgIG5ld0lkcyA9IHJlc29sdmUuaWRzO1xuICB9IGVsc2UgaWYgKGlzRW50aXR5U3RhdGUoZW50aXRpZXMpKSB7XG4gICAgbmV3RW50aXRpZXMgPSBpc05hdGl2ZVByZUFkZCA/IGVudGl0aWVzLmVudGl0aWVzIDogYXBwbHlNaWRkbGV3YXJlKGVudGl0aWVzLmVudGl0aWVzLCBwcmVBZGRFbnRpdHkpO1xuICAgIG5ld0lkcyA9IGVudGl0aWVzLmlkcztcbiAgfSBlbHNlIHtcbiAgICAvLyBpdCdzIGFuIG9iamVjdFxuICAgIG5ld0VudGl0aWVzID0gaXNOYXRpdmVQcmVBZGQgPyBlbnRpdGllcyA6IGFwcGx5TWlkZGxld2FyZShlbnRpdGllcywgcHJlQWRkRW50aXR5KTtcbiAgICBuZXdJZHMgPSBPYmplY3Qua2V5cyhuZXdFbnRpdGllcykubWFwKGlkID0+IChpc05hTihpZCBhcyBhbnkpID8gaWQgOiBOdW1iZXIoaWQpKSk7XG4gIH1cblxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBlbnRpdGllczogbmV3RW50aXRpZXMsXG4gICAgaWRzOiBuZXdJZHMsXG4gICAgbG9hZGluZzogZmFsc2VcbiAgfTtcblxuICBpZiAoaGFzQWN0aXZlU3RhdGUoc3RhdGUpKSB7XG4gICAgbmV3U3RhdGUuYWN0aXZlID0gcmVzb2x2ZUFjdGl2ZUVudGl0eShuZXdTdGF0ZSBhcyBhbnkpO1xuICB9XG5cbiAgcmV0dXJuIG5ld1N0YXRlO1xufVxuIl19