@datorama/akita
Version:
State Management Tailored-Made for JS Applications
36 lines • 3.62 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { coerceArray } from './coerceArray';
import { isArray } from './isArray';
/**
* @template Root, Entity
* @param {?} keyOrRoot
* @param {?} newEntity
* @param {?=} options
* @return {?}
*/
export function arrayAdd(keyOrRoot, newEntity, options = {}) {
/** @type {?} */
const newEntities = coerceArray(newEntity);
/** @type {?} */
const addFn = (/**
* @param {?} state
* @return {?}
*/
state => (options.prepend ? [...newEntities, ...(state || [])] : [...(state || []), ...newEntities]));
if (isArray(keyOrRoot)) {
return addFn(keyOrRoot);
}
return (/**
* @param {?} state
* @return {?}
*/
state => {
return {
[(/** @type {?} */ (keyOrRoot))]: addFn(state[keyOrRoot])
};
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXlBZGQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZGF0b3JhbWEvYWtpdGEvIiwic291cmNlcyI6WyJzcmMvYXJyYXlBZGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7Ozs7QUFrQnBDLE1BQU0sVUFBVSxRQUFRLENBQXFCLFNBQXVDLEVBQUUsU0FBMEIsRUFBRSxVQUE4QixFQUFFOztVQUMxSSxXQUFXLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQzs7VUFFcEMsS0FBSzs7OztJQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxFQUFFLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQTtJQUVsSCxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtRQUN0QixPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUN6QjtJQUVEOzs7O0lBQU8sS0FBSyxDQUFDLEVBQUU7UUFDYixPQUFPO1lBQ0wsQ0FBQyxtQkFBQSxTQUFTLEVBQXlCLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzlELENBQUM7SUFDSixDQUFDLEVBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJyYXlQcm9wZXJ0aWVzLCBPckFycmF5IH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBjb2VyY2VBcnJheSB9IGZyb20gJy4vY29lcmNlQXJyYXknO1xuaW1wb3J0IHsgQWRkRW50aXRpZXNPcHRpb25zIH0gZnJvbSAnLi9hZGRFbnRpdGllcyc7XG5pbXBvcnQgeyBpc0FycmF5IH0gZnJvbSAnLi9pc0FycmF5JztcblxuLyoqXG4gKiBBZGQgaXRlbSB0byBhIGNvbGxlY3Rpb25cbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqXG4gKiBzdG9yZS51cGRhdGUoc3RhdGUgPT4gKHtcbiAqICAgY29tbWVudHM6IGFycmF5QWRkKHN0YXRlLmNvbW1lbnRzLCB7IGlkOiAyIH0pXG4gKiB9KSlcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcnJheUFkZDxSb290IGV4dGVuZHMgYW55W10sIEVudGl0eSA9IGFueT4oa2V5T3JSb290OiBSb290LCBuZXdFbnRpdHk6IE9yQXJyYXk8Um9vdFswXT4sIG9wdGlvbnM/OiBBZGRFbnRpdGllc09wdGlvbnMpOiBSb290WzBdW107XG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcnJheUFkZDxSb290LCBFbnRpdHkgPSBhbnk+KGtleU9yUm9vdDogQXJyYXlQcm9wZXJ0aWVzPFJvb3Q+LCBuZXdFbnRpdHk6IE9yQXJyYXk8RW50aXR5Piwgb3B0aW9ucz86IEFkZEVudGl0aWVzT3B0aW9ucyk6IChzdGF0ZTogUm9vdCkgPT4gUm9vdDtcbmV4cG9ydCBmdW5jdGlvbiBhcnJheUFkZDxSb290LCBFbnRpdHkgPSBhbnk+KGtleU9yUm9vdDogQXJyYXlQcm9wZXJ0aWVzPFJvb3Q+IHwgUm9vdCwgbmV3RW50aXR5OiBPckFycmF5PEVudGl0eT4sIG9wdGlvbnM6IEFkZEVudGl0aWVzT3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IG5ld0VudGl0aWVzID0gY29lcmNlQXJyYXkobmV3RW50aXR5KTtcblxuICBjb25zdCBhZGRGbiA9IHN0YXRlID0+IChvcHRpb25zLnByZXBlbmQgPyBbLi4ubmV3RW50aXRpZXMsIC4uLihzdGF0ZSB8fCBbXSldIDogWy4uLihzdGF0ZSB8fCBbXSksIC4uLm5ld0VudGl0aWVzXSk7XG5cbiAgaWYgKGlzQXJyYXkoa2V5T3JSb290KSkge1xuICAgIHJldHVybiBhZGRGbihrZXlPclJvb3QpO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgW2tleU9yUm9vdCBhcyBBcnJheVByb3BlcnRpZXM8Um9vdD5dOiBhZGRGbihzdGF0ZVtrZXlPclJvb3RdKVxuICAgIH07XG4gIH07XG59XG4iXX0=