Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@skava/modules / ___dist / state-tree / deps / sumProps.js
Size: Mime:
"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = exports.sumProps = void 0;

var _chainAbleBoost = require("chain-able-boost");

/**
 * @TODO @MICHAEL finish / use Ramda
 *
 * @desc reduce an array based on properties or paths
 * @param {Array|string} props
 * @param {Array} list
 * @return {Number}
 *
 * @see https://github.com/ramda/ramda/issues/606
 * @alias sumOfProps
 * @alias sumOfAllPropsOr
 *
 * @example
 *
 *    sumProps('price', [{price: 1}, {price: 2}]) //=> 3
 */
const sumProps = (0, _chainAbleBoost.curry2)((props, list, fallback = 0) => list.reduce((sum, item) => sum + item[props], 0) || fallback // R.pipe(R.props([props]), R.sum)(list)
);
exports.sumProps = sumProps;
var _default = sumProps;
exports.default = _default;