forked from waja/action-debian-package
		
	
		
			
				
	
	
		
			60 lines
		
	
	
		
			No EOL
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			No EOL
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| var _curryN =
 | |
| /*#__PURE__*/
 | |
| require("./_curryN");
 | |
| 
 | |
| var _has =
 | |
| /*#__PURE__*/
 | |
| require("./_has");
 | |
| 
 | |
| var _xfBase =
 | |
| /*#__PURE__*/
 | |
| require("./_xfBase");
 | |
| 
 | |
| var XReduceBy =
 | |
| /*#__PURE__*/
 | |
| function () {
 | |
|   function XReduceBy(valueFn, valueAcc, keyFn, xf) {
 | |
|     this.valueFn = valueFn;
 | |
|     this.valueAcc = valueAcc;
 | |
|     this.keyFn = keyFn;
 | |
|     this.xf = xf;
 | |
|     this.inputs = {};
 | |
|   }
 | |
| 
 | |
|   XReduceBy.prototype['@@transducer/init'] = _xfBase.init;
 | |
| 
 | |
|   XReduceBy.prototype['@@transducer/result'] = function (result) {
 | |
|     var key;
 | |
| 
 | |
|     for (key in this.inputs) {
 | |
|       if (_has(key, this.inputs)) {
 | |
|         result = this.xf['@@transducer/step'](result, this.inputs[key]);
 | |
| 
 | |
|         if (result['@@transducer/reduced']) {
 | |
|           result = result['@@transducer/value'];
 | |
|           break;
 | |
|         }
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     this.inputs = null;
 | |
|     return this.xf['@@transducer/result'](result);
 | |
|   };
 | |
| 
 | |
|   XReduceBy.prototype['@@transducer/step'] = function (result, input) {
 | |
|     var key = this.keyFn(input);
 | |
|     this.inputs[key] = this.inputs[key] || [key, this.valueAcc];
 | |
|     this.inputs[key][1] = this.valueFn(this.inputs[key][1], input);
 | |
|     return result;
 | |
|   };
 | |
| 
 | |
|   return XReduceBy;
 | |
| }();
 | |
| 
 | |
| var _xreduceBy =
 | |
| /*#__PURE__*/
 | |
| _curryN(4, [], function _xreduceBy(valueFn, valueAcc, keyFn, xf) {
 | |
|   return new XReduceBy(valueFn, valueAcc, keyFn, xf);
 | |
| });
 | |
| 
 | |
| module.exports = _xreduceBy; |