@datorama/akita
Version:
State Management Tailored-Made for JS Applications
45 lines • 4.33 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { isNil } from './isNil';
import { hasActiveState, isMultiActiveState, resolveActiveEntity } from './activeState';
// @internal
/**
* @template S, E
* @param {?} __0
* @return {?}
*/
export function removeEntities({ state, ids }) {
if (isNil(ids))
return removeAllEntities(state);
/** @type {?} */
const entities = state.entities;
/** @type {?} */
let newEntities = {};
for (const id of state.ids) {
if (ids.includes(id) === false) {
newEntities[id] = entities[id];
}
}
/** @type {?} */
const newState = Object.assign({}, state, { entities: newEntities, ids: state.ids.filter((/**
* @param {?} current
* @return {?}
*/
current => ids.includes(current) === false)) });
if (hasActiveState(state)) {
newState.active = resolveActiveEntity(newState);
}
return newState;
}
// @internal
/**
* @template S
* @param {?} state
* @return {?}
*/
export function removeAllEntities(state) {
return Object.assign({}, state, { entities: {}, ids: [], active: isMultiActiveState(state.active) ? [] : null });
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlRW50aXRpZXMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZGF0b3JhbWEvYWtpdGEvIiwic291cmNlcyI6WyJzcmMvcmVtb3ZlRW50aXRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDaEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQVF4RixNQUFNLFVBQVUsY0FBYyxDQUE4QixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQThCO0lBQ3BHLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUFFLE9BQU8saUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7O1VBQzFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUTs7UUFDM0IsV0FBVyxHQUFHLEVBQUU7SUFFcEIsS0FBSyxNQUFNLEVBQUUsSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFO1FBQzFCLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxLQUFLLEVBQUU7WUFDOUIsV0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNoQztLQUNGOztVQUVLLFFBQVEscUJBQ1QsS0FBSyxJQUNSLFFBQVEsRUFBRSxXQUFXLEVBQ3JCLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU07Ozs7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxFQUFDLEdBQ2xFO0lBRUQsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDekIsUUFBUSxDQUFDLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztLQUNqRDtJQUVELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7Ozs7Ozs7QUFHRCxNQUFNLFVBQVUsaUJBQWlCLENBQUksS0FBeUI7SUFDNUQseUJBQ0ssS0FBSyxJQUNSLFFBQVEsRUFBRSxFQUFFLEVBQ1osR0FBRyxFQUFFLEVBQUUsRUFDUCxNQUFNLEVBQUUsa0JBQWtCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFDcEQ7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5U3RhdGUsIElELCBTdGF0ZVdpdGhBY3RpdmUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGlzTmlsIH0gZnJvbSAnLi9pc05pbCc7XG5pbXBvcnQgeyBoYXNBY3RpdmVTdGF0ZSwgaXNNdWx0aUFjdGl2ZVN0YXRlLCByZXNvbHZlQWN0aXZlRW50aXR5IH0gZnJvbSAnLi9hY3RpdmVTdGF0ZSc7XG5cbmV4cG9ydCB0eXBlIFJlbW92ZUVudGl0aWVzUGFyYW1zPFN0YXRlLCBFbnRpdHk+ID0ge1xuICBzdGF0ZTogU3RhdGVXaXRoQWN0aXZlPFN0YXRlPjtcbiAgaWRzOiBhbnlbXTtcbn07XG5cbi8vIEBpbnRlcm5hbFxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUVudGl0aWVzPFMgZXh0ZW5kcyBFbnRpdHlTdGF0ZTxFPiwgRT4oeyBzdGF0ZSwgaWRzIH06IFJlbW92ZUVudGl0aWVzUGFyYW1zPFMsIEU+KTogUyB7XG4gIGlmIChpc05pbChpZHMpKSByZXR1cm4gcmVtb3ZlQWxsRW50aXRpZXMoc3RhdGUpO1xuICBjb25zdCBlbnRpdGllcyA9IHN0YXRlLmVudGl0aWVzO1xuICBsZXQgbmV3RW50aXRpZXMgPSB7fTtcblxuICBmb3IgKGNvbnN0IGlkIG9mIHN0YXRlLmlkcykge1xuICAgIGlmIChpZHMuaW5jbHVkZXMoaWQpID09PSBmYWxzZSkge1xuICAgICAgbmV3RW50aXRpZXNbaWRdID0gZW50aXRpZXNbaWRdO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIGVudGl0aWVzOiBuZXdFbnRpdGllcyxcbiAgICBpZHM6IHN0YXRlLmlkcy5maWx0ZXIoY3VycmVudCA9PiBpZHMuaW5jbHVkZXMoY3VycmVudCkgPT09IGZhbHNlKVxuICB9O1xuXG4gIGlmIChoYXNBY3RpdmVTdGF0ZShzdGF0ZSkpIHtcbiAgICBuZXdTdGF0ZS5hY3RpdmUgPSByZXNvbHZlQWN0aXZlRW50aXR5KG5ld1N0YXRlKTtcbiAgfVxuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn1cblxuLy8gQGludGVybmFsXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlQWxsRW50aXRpZXM8Uz4oc3RhdGU6IFN0YXRlV2l0aEFjdGl2ZTxTPik6IFMge1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGVudGl0aWVzOiB7fSxcbiAgICBpZHM6IFtdLFxuICAgIGFjdGl2ZTogaXNNdWx0aUFjdGl2ZVN0YXRlKHN0YXRlLmFjdGl2ZSkgPyBbXSA6IG51bGxcbiAgfTtcbn1cbiJdfQ==