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