kopia lustrzana https://github.com/c9/core
31 wiersze
674 B
JavaScript
31 wiersze
674 B
JavaScript
|
"use strict";
|
||
|
|
||
|
var _ = require("lodash");
|
||
|
|
||
|
/**
|
||
|
* Substract all values of used from quota + extra
|
||
|
* This is the so-called "uncountedQuota" logic.
|
||
|
*/
|
||
|
function available(quota, used, extra) {
|
||
|
var keys = _.union(_.keys(quota), _.keys(used));
|
||
|
|
||
|
extra = extra || {};
|
||
|
|
||
|
return keys.reduce(function(available, key) {
|
||
|
available[key] = quota[key] || 0;
|
||
|
extra[key] = extra[key] || 0;
|
||
|
|
||
|
if (!used[key])
|
||
|
return available;
|
||
|
|
||
|
var needed = used[key] - extra[key];
|
||
|
|
||
|
if (!needed)
|
||
|
return available;
|
||
|
|
||
|
available[key] = available[key] - needed;
|
||
|
return available;
|
||
|
}, {});
|
||
|
}
|
||
|
|
||
|
module.exports = available;
|