@datorama/akita
Version:
State Management Tailored-Made for JS Applications
82 lines • 7.3 kB
JavaScript
/**
* @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