@datorama/akita
Version:
State Management Tailored-Made for JS Applications
48 lines • 4.66 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 { isObject } from './isObject';
import { isFunction } from './isFunction';
import { not } from './not';
/**
* @template Root, Entity
* @param {?} keyOrRoot
* @param {?} identifier
* @param {?=} idKey
* @return {?}
*/
export function arrayRemove(keyOrRoot, identifier, idKey = DEFAULT_ID_KEY) {
/** @type {?} */
let identifiers;
/** @type {?} */
let filterFn;
if (isFunction(identifier)) {
filterFn = not(identifier);
}
else {
identifiers = coerceArray((/** @type {?} */ (identifier)));
filterFn = (/**
* @param {?} current
* @return {?}
*/
current => {
return identifiers.includes(isObject(current) ? current[idKey] : current) === false;
});
}
if (Array.isArray(keyOrRoot)) {
return keyOrRoot.filter(filterFn);
}
return (/**
* @param {?} state
* @return {?}
*/
state => {
return {
[(/** @type {?} */ (keyOrRoot))]: state[keyOrRoot].filter(filterFn)
};
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXlSZW1vdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZGF0b3JhbWEvYWtpdGEvIiwic291cmNlcyI6WyJzcmMvYXJyYXlSZW1vdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sT0FBTyxDQUFDOzs7Ozs7OztBQWlCNUIsTUFBTSxVQUFVLFdBQVcsQ0FBcUIsU0FBdUMsRUFBRSxVQUF1QyxFQUFFLEtBQUssR0FBRyxjQUFjOztRQUNsSixXQUFXOztRQUNYLFFBQVE7SUFFWixJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRTtRQUMxQixRQUFRLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQzVCO1NBQU07UUFDTCxXQUFXLEdBQUcsV0FBVyxDQUFDLG1CQUFBLFVBQVUsRUFBTyxDQUFDLENBQUM7UUFDN0MsUUFBUTs7OztRQUFHLE9BQU8sQ0FBQyxFQUFFO1lBQ25CLE9BQU8sV0FBVyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxDQUFDO1FBQ3RGLENBQUMsQ0FBQSxDQUFDO0tBQ0g7SUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7UUFDNUIsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ25DO0lBRUQ7Ozs7SUFBTyxLQUFLLENBQUMsRUFBRTtRQUNiLE9BQU87WUFDTCxDQUFDLG1CQUFBLFNBQVMsRUFBVSxDQUFDLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7U0FDekQsQ0FBQztJQUNKLENBQUMsRUFBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcnJheVByb3BlcnRpZXMsIElEUywgSXRlbVByZWRpY2F0ZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgREVGQVVMVF9JRF9LRVkgfSBmcm9tICcuL2RlZmF1bHRJREtleSc7XG5pbXBvcnQgeyBjb2VyY2VBcnJheSB9IGZyb20gJy4vY29lcmNlQXJyYXknO1xuaW1wb3J0IHsgaXNPYmplY3QgfSBmcm9tICcuL2lzT2JqZWN0JztcbmltcG9ydCB7IGlzRnVuY3Rpb24gfSBmcm9tICcuL2lzRnVuY3Rpb24nO1xuaW1wb3J0IHsgbm90IH0gZnJvbSAnLi9ub3QnO1xuXG4vKipcbiAqIFJlbW92ZSBpdGVtIGZyb20gY29sbGVjdGlvblxuICpcbiAqIEBleGFtcGxlXG4gKlxuICpcbiAqIHN0b3JlLnVwZGF0ZShzdGF0ZSA9PiAoe1xuICogICBuYW1lczogYXJyYXlSZW1vdmUoc3RhdGUubmFtZXMsIFsnb25lJywgJ3NlY29uZCddKVxuICogfSkpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcnJheVJlbW92ZTxSb290IGV4dGVuZHMgYW55W10sIEVudGl0eSA9IFJvb3RbMF0+KGtleU9yUm9vdDogUm9vdCwgaWRlbnRpZmllcjogSURTIHwgSXRlbVByZWRpY2F0ZTxSb290WzBdPiwgaWRLZXk/OiBzdHJpbmcpOiBSb290WzBdW107XG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcnJheVJlbW92ZTxSb290LCBFbnRpdHkgPSBhbnk+KGtleU9yUm9vdDogQXJyYXlQcm9wZXJ0aWVzPFJvb3Q+LCBpZGVudGlmaWVyOiBJRFMgfCBJdGVtUHJlZGljYXRlPEVudGl0eT4sIGlkS2V5Pzogc3RyaW5nKTogKHN0YXRlOiBSb290KSA9PiBSb290O1xuZXhwb3J0IGZ1bmN0aW9uIGFycmF5UmVtb3ZlPFJvb3QsIEVudGl0eSA9IGFueT4oa2V5T3JSb290OiBBcnJheVByb3BlcnRpZXM8Um9vdD4gfCBSb290LCBpZGVudGlmaWVyOiBJRFMgfCBJdGVtUHJlZGljYXRlPEVudGl0eT4sIGlkS2V5ID0gREVGQVVMVF9JRF9LRVkpIHtcbiAgbGV0IGlkZW50aWZpZXJzO1xuICBsZXQgZmlsdGVyRm47XG5cbiAgaWYgKGlzRnVuY3Rpb24oaWRlbnRpZmllcikpIHtcbiAgICBmaWx0ZXJGbiA9IG5vdChpZGVudGlmaWVyKTtcbiAgfSBlbHNlIHtcbiAgICBpZGVudGlmaWVycyA9IGNvZXJjZUFycmF5KGlkZW50aWZpZXIgYXMgSURTKTtcbiAgICBmaWx0ZXJGbiA9IGN1cnJlbnQgPT4ge1xuICAgICAgcmV0dXJuIGlkZW50aWZpZXJzLmluY2x1ZGVzKGlzT2JqZWN0KGN1cnJlbnQpID8gY3VycmVudFtpZEtleV0gOiBjdXJyZW50KSA9PT0gZmFsc2U7XG4gICAgfTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KGtleU9yUm9vdCkpIHtcbiAgICByZXR1cm4ga2V5T3JSb290LmZpbHRlcihmaWx0ZXJGbik7XG4gIH1cblxuICByZXR1cm4gc3RhdGUgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBba2V5T3JSb290IGFzIHN0cmluZ106IHN0YXRlW2tleU9yUm9vdF0uZmlsdGVyKGZpbHRlckZuKVxuICAgIH07XG4gIH07XG59XG4iXX0=