UNPKG

simple-pure-utils

Version:

Funciones puras para manipulación de objetos, arreglos, promesas y observables

42 lines 3.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.shallowEqualsCustom = exports.referenceFuncIgnoreEquals = void 0; const logic_1 = require("./logic"); /** * Si a y b son funciones, devuelve true. * Si no, devuelve a === b. * * Útil para comparar props de componentes de react, donde no importa si cambian las funciones pero si importa si cambian todos los demás props * @param a * @param b */ function referenceFuncIgnoreEquals(a, b) { if (typeof (a) == "function" && typeof (b) == "function") { return true; } return a === b; } exports.referenceFuncIgnoreEquals = referenceFuncIgnoreEquals; /**Compara cada uno de los props del objeto con un comparador custom por cada key, * útil para comparar props en el shouldComponentUpdate de react. * * Si una propiedad existe en un valor no pero en el otro no si se compara ese par de propiedades, con undefined para la parte que no tiene la propiedad * @param config Indica por cada propiedad que comparador usar * Si se especifica null ese prop no se va a comparar * @param defaultComparer Comparador que se usa para las propiedades que no se especifiquen en el config. Si no se especifica se usa el operador * === para comparar * */ function shallowEqualsCustom(a, b, config, defaultComparer) { const props = (0, logic_1.union)(Object.keys(a), Object.keys(b)); const valueProps = props.map(x => ({ comparer: config[x] || defaultComparer || logic_1.referenceEquals, a: a[x], b: b[x] })); const compares = valueProps.map(x => x.comparer(x.a, x.b)); const ret = (0, logic_1.all)(compares); return ret; } exports.shallowEqualsCustom = shallowEqualsCustom; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wYXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFxRTtBQVlyRTs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0IseUJBQXlCLENBQUMsQ0FBTSxFQUFFLENBQU07SUFDcEQsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLEVBQUU7UUFDdEQsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUVELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuQixDQUFDO0FBTkQsOERBTUM7QUFFRDs7Ozs7Ozs7O0VBU0U7QUFDRixTQUFnQixtQkFBbUIsQ0FDL0IsQ0FBSSxFQUNKLENBQUksRUFDSixNQUE4QixFQUM5QixlQUFnQztJQUVoQyxNQUFNLEtBQUssR0FBRyxJQUFBLGFBQUssRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQWdCLENBQUM7SUFDbkUsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0IsUUFBUSxFQUFHLE1BQU0sQ0FBQyxDQUFDLENBQW9CLElBQUksZUFBZSxJQUFJLHVCQUFlO1FBQzdFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDVixDQUFDLENBQUMsQ0FBQztJQUVKLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsTUFBTSxHQUFHLEdBQUcsSUFBQSxXQUFHLEVBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUIsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDO0FBaEJELGtEQWdCQyJ9