UNPKG

@datorama/akita

Version:

State Management Tailored-Made for JS Applications

62 lines 5.61 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { DEFAULT_ID_KEY } from './defaultIDKey'; import { coerceArray } from './coerceArray'; import { isFunction } from './isFunction'; import { isObject } from './isObject'; import { isArray } from './isArray'; /** * @template Root, Entity * @param {?} keyOrRoot * @param {?} predicateOrIds * @param {?} obj * @param {?=} idKey * @return {?} */ export function arrayUpdate(keyOrRoot, predicateOrIds, obj, idKey = DEFAULT_ID_KEY) { /** @type {?} */ let condition; if (isFunction(predicateOrIds)) { condition = predicateOrIds; } else { /** @type {?} */ const ids = coerceArray(predicateOrIds); condition = (/** * @param {?} item * @return {?} */ item => ids.includes(isObject(item) ? item[idKey] : item) === true); } /** @type {?} */ const updateFn = (/** * @param {?} state * @return {?} */ state => state.map((/** * @param {?} entity * @return {?} */ entity => { if (condition(entity) === true) { return isObject(entity) ? Object.assign({}, entity, obj) : obj; } return entity; }))); if (isArray(keyOrRoot)) { return updateFn(keyOrRoot); } return (/** * @param {?} root * @return {?} */ root => { return { [(/** @type {?} */ (keyOrRoot))]: updateFn(root[keyOrRoot]) }; }); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXlVcGRhdGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZGF0b3JhbWEvYWtpdGEvIiwic291cmNlcyI6WyJzcmMvYXJyYXlVcGRhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7Ozs7Ozs7QUFpQnBDLE1BQU0sVUFBVSxXQUFXLENBQXFCLFNBQXVDLEVBQUUsY0FBMkMsRUFBRSxHQUFvQixFQUFFLEtBQUssR0FBRyxjQUFjOztRQUM1SyxTQUFnQztJQUVwQyxJQUFJLFVBQVUsQ0FBQyxjQUFjLENBQUMsRUFBRTtRQUM5QixTQUFTLEdBQUcsY0FBYyxDQUFDO0tBQzVCO1NBQU07O2NBQ0MsR0FBRyxHQUFHLFdBQVcsQ0FBQyxjQUFjLENBQUM7UUFDdkMsU0FBUzs7OztRQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFBLENBQUM7S0FDaEY7O1VBRUssUUFBUTs7OztJQUFHLEtBQUssQ0FBQyxFQUFFLENBQ3ZCLEtBQUssQ0FBQyxHQUFHOzs7O0lBQUMsTUFBTSxDQUFDLEVBQUU7UUFDakIsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQzlCLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDckIsQ0FBQyxtQkFDTSxNQUFNLEVBQ04sR0FBRyxFQUVWLENBQUMsQ0FBQyxHQUFHLENBQUM7U0FDVDtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUMsRUFBQyxDQUFBO0lBRUosSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7UUFDdEIsT0FBTyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDNUI7SUFFRDs7OztJQUFPLElBQUksQ0FBQyxFQUFFO1FBQ1osT0FBTztZQUNMLENBQUMsbUJBQUEsU0FBUyxFQUFVLENBQUMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ2pELENBQUM7SUFDSixDQUFDLEVBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJyYXlQcm9wZXJ0aWVzLCBJRFMsIEl0ZW1QcmVkaWNhdGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IERFRkFVTFRfSURfS0VZIH0gZnJvbSAnLi9kZWZhdWx0SURLZXknO1xuaW1wb3J0IHsgY29lcmNlQXJyYXkgfSBmcm9tICcuL2NvZXJjZUFycmF5JztcbmltcG9ydCB7IGlzRnVuY3Rpb24gfSBmcm9tICcuL2lzRnVuY3Rpb24nO1xuaW1wb3J0IHsgaXNPYmplY3QgfSBmcm9tICcuL2lzT2JqZWN0JztcbmltcG9ydCB7IGlzQXJyYXkgfSBmcm9tICcuL2lzQXJyYXknO1xuXG4vKipcbiAqIFVwZGF0ZSBpdGVtIGluIGEgY29sbGVjdGlvblxuICpcbiAqIEBleGFtcGxlXG4gKlxuICpcbiAqIHN0b3JlLnVwZGF0ZSgxLCBlbnRpdHkgPT4gKHtcbiAqICAgY29tbWVudHM6IGFycmF5VXBkYXRlKGVudGl0eS5jb21tZW50cywgMSwgeyBuYW1lOiAnbmV3Q29tbWVudCcgfSlcbiAqIH0pKVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlVcGRhdGU8Um9vdCBleHRlbmRzIGFueVtdLCBFbnRpdHkgPSBhbnk+KGtleU9yUm9vdDogUm9vdCwgcHJlZGljYXRlT3JJZHM6IElEUyB8IEl0ZW1QcmVkaWNhdGU8Um9vdFswXT4sIG9iajogUGFydGlhbDxSb290WzBdPiwgaWRLZXk/OiBzdHJpbmcpOiBSb290WzBdW107XG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcnJheVVwZGF0ZTxSb290LCBFbnRpdHkgPSBhbnk+KGtleU9yUm9vdDogQXJyYXlQcm9wZXJ0aWVzPFJvb3Q+LCBwcmVkaWNhdGVPcklkczogSURTIHwgSXRlbVByZWRpY2F0ZTxFbnRpdHk+LCBvYmo6IFBhcnRpYWw8RW50aXR5PiwgaWRLZXk/OiBzdHJpbmcpOiAoc3RhdGU6IFJvb3QpID0+IFJvb3Q7XG5leHBvcnQgZnVuY3Rpb24gYXJyYXlVcGRhdGU8Um9vdCwgRW50aXR5ID0gYW55PihrZXlPclJvb3Q6IEFycmF5UHJvcGVydGllczxSb290PiB8IFJvb3QsIHByZWRpY2F0ZU9ySWRzOiBJRFMgfCBJdGVtUHJlZGljYXRlPEVudGl0eT4sIG9iajogUGFydGlhbDxFbnRpdHk+LCBpZEtleSA9IERFRkFVTFRfSURfS0VZKSB7XG4gIGxldCBjb25kaXRpb246IEl0ZW1QcmVkaWNhdGU8RW50aXR5PjtcblxuICBpZiAoaXNGdW5jdGlvbihwcmVkaWNhdGVPcklkcykpIHtcbiAgICBjb25kaXRpb24gPSBwcmVkaWNhdGVPcklkcztcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBpZHMgPSBjb2VyY2VBcnJheShwcmVkaWNhdGVPcklkcyk7XG4gICAgY29uZGl0aW9uID0gaXRlbSA9PiBpZHMuaW5jbHVkZXMoaXNPYmplY3QoaXRlbSkgPyBpdGVtW2lkS2V5XSA6IGl0ZW0pID09PSB0cnVlO1xuICB9XG5cbiAgY29uc3QgdXBkYXRlRm4gPSBzdGF0ZSA9PlxuICAgIHN0YXRlLm1hcChlbnRpdHkgPT4ge1xuICAgICAgaWYgKGNvbmRpdGlvbihlbnRpdHkpID09PSB0cnVlKSB7XG4gICAgICAgIHJldHVybiBpc09iamVjdChlbnRpdHkpXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIC4uLmVudGl0eSxcbiAgICAgICAgICAgICAgLi4ub2JqXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiBvYmo7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlbnRpdHk7XG4gICAgfSk7XG5cbiAgaWYgKGlzQXJyYXkoa2V5T3JSb290KSkge1xuICAgIHJldHVybiB1cGRhdGVGbihrZXlPclJvb3QpO1xuICB9XG5cbiAgcmV0dXJuIHJvb3QgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBba2V5T3JSb290IGFzIHN0cmluZ106IHVwZGF0ZUZuKHJvb3Rba2V5T3JSb290XSlcbiAgICB9O1xuICB9O1xufVxuIl19