@datorama/akita
Version:
State Management Tailored-Made for JS Applications
67 lines • 5.84 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
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) {
if (idKey === void 0) { idKey = DEFAULT_ID_KEY; }
/** @type {?} */
var condition;
if (isFunction(predicateOrIds)) {
condition = predicateOrIds;
}
else {
/** @type {?} */
var ids_1 = coerceArray(predicateOrIds);
condition = (/**
* @param {?} item
* @return {?}
*/
function (item) { return ids_1.includes(isObject(item) ? item[idKey] : item) === true; });
}
/** @type {?} */
var updateFn = (/**
* @param {?} state
* @return {?}
*/
function (state) {
return state.map((/**
* @param {?} entity
* @return {?}
*/
function (entity) {
if (condition(entity) === true) {
return isObject(entity)
? tslib_1.__assign({}, entity, obj) : obj;
}
return entity;
}));
});
if (isArray(keyOrRoot)) {
return updateFn(keyOrRoot);
}
return (/**
* @param {?} root
* @return {?}
*/
function (root) {
var _a;
return _a = {},
_a[(/** @type {?} */ (keyOrRoot))] = updateFn(root[keyOrRoot]),
_a;
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXlVcGRhdGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZGF0b3JhbWEvYWtpdGEvIiwic291cmNlcyI6WyJzcmMvYXJyYXlVcGRhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7Ozs7O0FBaUJwQyxNQUFNLFVBQVUsV0FBVyxDQUFxQixTQUF1QyxFQUFFLGNBQTJDLEVBQUUsR0FBb0IsRUFBRSxLQUFzQjtJQUF0QixzQkFBQSxFQUFBLHNCQUFzQjs7UUFDNUssU0FBZ0M7SUFFcEMsSUFBSSxVQUFVLENBQUMsY0FBYyxDQUFDLEVBQUU7UUFDOUIsU0FBUyxHQUFHLGNBQWMsQ0FBQztLQUM1QjtTQUFNOztZQUNDLEtBQUcsR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDO1FBQ3ZDLFNBQVM7Ozs7UUFBRyxVQUFBLElBQUksSUFBSSxPQUFBLEtBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBMUQsQ0FBMEQsQ0FBQSxDQUFDO0tBQ2hGOztRQUVLLFFBQVE7Ozs7SUFBRyxVQUFBLEtBQUs7UUFDcEIsT0FBQSxLQUFLLENBQUMsR0FBRzs7OztRQUFDLFVBQUEsTUFBTTtZQUNkLElBQUksU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDOUIsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDO29CQUNyQixDQUFDLHNCQUNNLE1BQU0sRUFDTixHQUFHLEVBRVYsQ0FBQyxDQUFDLEdBQUcsQ0FBQzthQUNUO1lBRUQsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxFQUFDO0lBWEYsQ0FXRSxDQUFBO0lBRUosSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7UUFDdEIsT0FBTyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDNUI7SUFFRDs7OztJQUFPLFVBQUEsSUFBSTs7UUFDVDtZQUNFLEdBQUMsbUJBQUEsU0FBUyxFQUFVLElBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztlQUNoRDtJQUNKLENBQUMsRUFBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcnJheVByb3BlcnRpZXMsIElEUywgSXRlbVByZWRpY2F0ZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgREVGQVVMVF9JRF9LRVkgfSBmcm9tICcuL2RlZmF1bHRJREtleSc7XG5pbXBvcnQgeyBjb2VyY2VBcnJheSB9IGZyb20gJy4vY29lcmNlQXJyYXknO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiB9IGZyb20gJy4vaXNGdW5jdGlvbic7XG5pbXBvcnQgeyBpc09iamVjdCB9IGZyb20gJy4vaXNPYmplY3QnO1xuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJy4vaXNBcnJheSc7XG5cbi8qKlxuICogVXBkYXRlIGl0ZW0gaW4gYSBjb2xsZWN0aW9uXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKlxuICogc3RvcmUudXBkYXRlKDEsIGVudGl0eSA9PiAoe1xuICogICBjb21tZW50czogYXJyYXlVcGRhdGUoZW50aXR5LmNvbW1lbnRzLCAxLCB7IG5hbWU6ICduZXdDb21tZW50JyB9KVxuICogfSkpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcnJheVVwZGF0ZTxSb290IGV4dGVuZHMgYW55W10sIEVudGl0eSA9IGFueT4oa2V5T3JSb290OiBSb290LCBwcmVkaWNhdGVPcklkczogSURTIHwgSXRlbVByZWRpY2F0ZTxSb290WzBdPiwgb2JqOiBQYXJ0aWFsPFJvb3RbMF0+LCBpZEtleT86IHN0cmluZyk6IFJvb3RbMF1bXTtcbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFycmF5VXBkYXRlPFJvb3QsIEVudGl0eSA9IGFueT4oa2V5T3JSb290OiBBcnJheVByb3BlcnRpZXM8Um9vdD4sIHByZWRpY2F0ZU9ySWRzOiBJRFMgfCBJdGVtUHJlZGljYXRlPEVudGl0eT4sIG9iajogUGFydGlhbDxFbnRpdHk+LCBpZEtleT86IHN0cmluZyk6IChzdGF0ZTogUm9vdCkgPT4gUm9vdDtcbmV4cG9ydCBmdW5jdGlvbiBhcnJheVVwZGF0ZTxSb290LCBFbnRpdHkgPSBhbnk+KGtleU9yUm9vdDogQXJyYXlQcm9wZXJ0aWVzPFJvb3Q+IHwgUm9vdCwgcHJlZGljYXRlT3JJZHM6IElEUyB8IEl0ZW1QcmVkaWNhdGU8RW50aXR5Piwgb2JqOiBQYXJ0aWFsPEVudGl0eT4sIGlkS2V5ID0gREVGQVVMVF9JRF9LRVkpIHtcbiAgbGV0IGNvbmRpdGlvbjogSXRlbVByZWRpY2F0ZTxFbnRpdHk+O1xuXG4gIGlmIChpc0Z1bmN0aW9uKHByZWRpY2F0ZU9ySWRzKSkge1xuICAgIGNvbmRpdGlvbiA9IHByZWRpY2F0ZU9ySWRzO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGlkcyA9IGNvZXJjZUFycmF5KHByZWRpY2F0ZU9ySWRzKTtcbiAgICBjb25kaXRpb24gPSBpdGVtID0+IGlkcy5pbmNsdWRlcyhpc09iamVjdChpdGVtKSA/IGl0ZW1baWRLZXldIDogaXRlbSkgPT09IHRydWU7XG4gIH1cblxuICBjb25zdCB1cGRhdGVGbiA9IHN0YXRlID0+XG4gICAgc3RhdGUubWFwKGVudGl0eSA9PiB7XG4gICAgICBpZiAoY29uZGl0aW9uKGVudGl0eSkgPT09IHRydWUpIHtcbiAgICAgICAgcmV0dXJuIGlzT2JqZWN0KGVudGl0eSlcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgLi4uZW50aXR5LFxuICAgICAgICAgICAgICAuLi5vYmpcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IG9iajtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVudGl0eTtcbiAgICB9KTtcblxuICBpZiAoaXNBcnJheShrZXlPclJvb3QpKSB7XG4gICAgcmV0dXJuIHVwZGF0ZUZuKGtleU9yUm9vdCk7XG4gIH1cblxuICByZXR1cm4gcm9vdCA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFtrZXlPclJvb3QgYXMgc3RyaW5nXTogdXBkYXRlRm4ocm9vdFtrZXlPclJvb3RdKVxuICAgIH07XG4gIH07XG59XG4iXX0=