@hackoregon/utils
Version:
Common utils for CIVIC
39 lines (35 loc) • 1.19 kB
JavaScript
var checkKey = function checkKey(data, key) {
var optionalKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
if (optionalKeys[key]) {
return {
valid: 0,
total: 0
};
}
var valid = data.filter(function (datum) {
return key in datum;
}).length;
var total = data.length;
return {
valid: valid,
total: total
};
};
var checkData = function checkData(data, dataKeys) {
var dataIsObject = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
var optionalKeys = arguments.length > 3 ? arguments[3] : undefined;
var results = {};
var isArray = Array.isArray(data) && Array.isArray(dataKeys);
var validType = !dataIsObject && isArray || dataIsObject && !isArray;
results.invalidType = !validType;
var dataAsArray = dataIsObject ? [data] : data;
var keyChecks = validType && dataKeys.map(function (key) {
results[key] = checkKey(dataAsArray, key, optionalKeys);
return checkKey(dataAsArray, key, optionalKeys);
});
results.allKeysValid = validType && keyChecks.every(function (key) {
return key.valid === key.total;
});
return results;
};
export default checkData;