speckoloo
Version:
Domain entites inspired by Speck
402 lines (380 loc) • 10.4 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var cov_2g6kzl967f = function () {
var path = '/home/henrique/labs/speckoloo/src/validate.js',
hash = 'ab4d4ed4a1dca40d24474ceb0d96ed83b4fddb34',
global = new Function('return this')(),
gcv = '__coverage__',
coverageData = {
path: '/home/henrique/labs/speckoloo/src/validate.js',
statementMap: {
'0': {
start: {
line: 4,
column: 20
},
end: {
line: 11,
column: 15
}
},
'1': {
start: {
line: 5,
column: 4
},
end: {
line: 7,
column: 5
}
},
'2': {
start: {
line: 6,
column: 6
},
end: {
line: 6,
column: 16
}
},
'3': {
start: {
line: 9,
column: 23
},
end: {
line: 9,
column: 89
}
},
'4': {
start: {
line: 10,
column: 4
},
end: {
line: 10,
column: 58
}
},
'5': {
start: {
line: 13,
column: 2
},
end: {
line: 15,
column: 3
}
},
'6': {
start: {
line: 14,
column: 4
},
end: {
line: 14,
column: 68
}
},
'7': {
start: {
line: 17,
column: 2
},
end: {
line: 17,
column: 13
}
}
},
fnMap: {
'0': {
name: 'validate',
decl: {
start: {
line: 3,
column: 24
},
end: {
line: 3,
column: 32
}
},
loc: {
start: {
line: 3,
column: 48
},
end: {
line: 18,
column: 1
}
},
line: 3
},
'1': {
name: '(anonymous_1)',
decl: {
start: {
line: 4,
column: 50
},
end: {
line: 4,
column: 51
}
},
loc: {
start: {
line: 4,
column: 89
},
end: {
line: 11,
column: 3
}
},
line: 4
}
},
branchMap: {
'0': {
loc: {
start: {
line: 5,
column: 4
},
end: {
line: 7,
column: 5
}
},
type: 'if',
locations: [{
start: {
line: 5,
column: 4
},
end: {
line: 7,
column: 5
}
}, {
start: {
line: 5,
column: 4
},
end: {
line: 7,
column: 5
}
}],
line: 5
},
'1': {
loc: {
start: {
line: 5,
column: 8
},
end: {
line: 5,
column: 64
}
},
type: 'binary-expr',
locations: [{
start: {
line: 5,
column: 8
},
end: {
line: 5,
column: 28
}
}, {
start: {
line: 5,
column: 32
},
end: {
line: 5,
column: 64
}
}],
line: 5
},
'2': {
loc: {
start: {
line: 9,
column: 23
},
end: {
line: 9,
column: 89
}
},
type: 'binary-expr',
locations: [{
start: {
line: 9,
column: 23
},
end: {
line: 9,
column: 83
}
}, {
start: {
line: 9,
column: 87
},
end: {
line: 9,
column: 89
}
}],
line: 9
},
'3': {
loc: {
start: {
line: 10,
column: 11
},
end: {
line: 10,
column: 58
}
},
type: 'cond-expr',
locations: [{
start: {
line: 10,
column: 19
},
end: {
line: 10,
column: 52
}
}, {
start: {
line: 10,
column: 55
},
end: {
line: 10,
column: 58
}
}],
line: 10
},
'4': {
loc: {
start: {
line: 13,
column: 2
},
end: {
line: 15,
column: 3
}
},
type: 'if',
locations: [{
start: {
line: 13,
column: 2
},
end: {
line: 15,
column: 3
}
}, {
start: {
line: 13,
column: 2
},
end: {
line: 15,
column: 3
}
}],
line: 13
}
},
s: {
'0': 0,
'1': 0,
'2': 0,
'3': 0,
'4': 0,
'5': 0,
'6': 0,
'7': 0
},
f: {
'0': 0,
'1': 0
},
b: {
'0': [0, 0],
'1': [0, 0],
'2': [0, 0],
'3': [0, 0],
'4': [0, 0]
},
_coverageSchema: '332fd63041d2c1bcb487cc26dd0d5f7d97098a6c'
},
coverage = global[gcv] || (global[gcv] = {});
if (coverage[path] && coverage[path].hash === hash) {
return coverage[path];
}
coverageData.hash = hash;
return coverage[path] = coverageData;
}();
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
exports.default = validate;
var _validationError = require('./validation-error.factory');
var _validationError2 = _interopRequireDefault(_validationError);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectEntries(obj) {
var entries = [];
var keys = Object.keys(obj);
for (var k = 0; k < keys.length; ++k) entries.push([keys[k], obj[keys[k]]]);
return entries;
}
function validate(schema, data) {
cov_2g6kzl967f.f[0]++;
const allErrors = (cov_2g6kzl967f.s[0]++, _objectEntries(schema).reduce((acc, [propertyName, definition]) => {
cov_2g6kzl967f.f[1]++;
cov_2g6kzl967f.s[1]++;
if ((cov_2g6kzl967f.b[1][0]++, definition.skippable) && (cov_2g6kzl967f.b[1][1]++, data[propertyName] === undefined)) {
cov_2g6kzl967f.b[0][0]++;
cov_2g6kzl967f.s[2]++;
return acc;
} else {
cov_2g6kzl967f.b[0][1]++;
}
var _ref = (cov_2g6kzl967f.s[3]++, (cov_2g6kzl967f.b[2][0]++, definition.validator(data[propertyName], propertyName, data)) || (cov_2g6kzl967f.b[2][1]++, {}));
const error = _ref.error;
cov_2g6kzl967f.s[4]++;
return error ? (cov_2g6kzl967f.b[3][0]++, _extends({}, acc, { [propertyName]: error })) : (cov_2g6kzl967f.b[3][1]++, acc);
}, undefined));
cov_2g6kzl967f.s[5]++;
if (allErrors) {
cov_2g6kzl967f.b[4][0]++;
cov_2g6kzl967f.s[6]++;
throw (0, _validationError2.default)('Invalid entity!', { details: allErrors });
} else {
cov_2g6kzl967f.b[4][1]++;
}
cov_2g6kzl967f.s[7]++;
return data;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy92YWxpZGF0ZS5qcyJdLCJuYW1lcyI6WyJ2YWxpZGF0ZSIsInNjaGVtYSIsImRhdGEiLCJhbGxFcnJvcnMiLCJyZWR1Y2UiLCJhY2MiLCJwcm9wZXJ0eU5hbWUiLCJkZWZpbml0aW9uIiwic2tpcHBhYmxlIiwidW5kZWZpbmVkIiwidmFsaWRhdG9yIiwiZXJyb3IiLCJkZXRhaWxzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQkFFd0JBLFE7O0FBRnhCOzs7Ozs7Ozs7Ozs7Ozs7QUFFZSxTQUFTQSxRQUFULENBQW1CQyxNQUFuQixFQUEyQkMsSUFBM0IsRUFBaUM7QUFBQTs7QUFDOUMsUUFBTUMsb0NBQVksZUFBZUYsTUFBZixFQUF1QkcsTUFBdkIsQ0FBOEIsQ0FBQ0MsR0FBRCxFQUFNLENBQUVDLFlBQUYsRUFBZ0JDLFVBQWhCLENBQU4sS0FBdUM7QUFBQTtBQUFBOztBQUNyRixRQUFJLHNDQUFXQyxTQUFYLGdDQUF3Qk4sS0FBS0ksWUFBTCxNQUF1QkcsU0FBL0MsQ0FBSixFQUE4RDtBQUFBO0FBQUE7O0FBQzVELGFBQU9KLEdBQVA7QUFDRCxLQUZEO0FBQUE7QUFBQTs7QUFEcUYsdUNBS2xFLHNDQUFXSyxTQUFYLENBQXFCUixLQUFLSSxZQUFMLENBQXJCLEVBQXlDQSxZQUF6QyxFQUF1REosSUFBdkQsaUNBQWdFLEVBQWhFLENBTGtFOztBQUFBLFVBSzdFUyxLQUw2RSxRQUs3RUEsS0FMNkU7QUFBQTs7QUFNckYsV0FBT0EsZ0RBQWFOLEdBQWIsSUFBa0IsQ0FBQ0MsWUFBRCxHQUFnQkssS0FBbEMsa0NBQTRDTixHQUE1QyxDQUFQO0FBQ0QsR0FQaUIsRUFPZkksU0FQZSxDQUFaLENBQU47O0FBRDhDO0FBVTlDLE1BQUlOLFNBQUosRUFBZTtBQUFBO0FBQUE7O0FBQ2IsVUFBTSwrQkFBZ0IsaUJBQWhCLEVBQW1DLEVBQUVTLFNBQVNULFNBQVgsRUFBbkMsQ0FBTjtBQUNELEdBRkQ7QUFBQTtBQUFBOztBQVY4QztBQWM5QyxTQUFPRCxJQUFQO0FBQ0QiLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVmFsaWRhdGlvbkVycm9yIGZyb20gJy4vdmFsaWRhdGlvbi1lcnJvci5mYWN0b3J5J1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2YWxpZGF0ZSAoc2NoZW1hLCBkYXRhKSB7XG4gIGNvbnN0IGFsbEVycm9ycyA9IE9iamVjdC5lbnRyaWVzKHNjaGVtYSkucmVkdWNlKChhY2MsIFsgcHJvcGVydHlOYW1lLCBkZWZpbml0aW9uIF0pID0+IHtcbiAgICBpZiAoZGVmaW5pdGlvbi5za2lwcGFibGUgJiYgZGF0YVtwcm9wZXJ0eU5hbWVdID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBhY2NcbiAgICB9XG5cbiAgICBjb25zdCB7IGVycm9yIH0gPSAoZGVmaW5pdGlvbi52YWxpZGF0b3IoZGF0YVtwcm9wZXJ0eU5hbWVdLCBwcm9wZXJ0eU5hbWUsIGRhdGEpIHx8IHt9KVxuICAgIHJldHVybiBlcnJvciA/IHsgLi4uYWNjLCBbcHJvcGVydHlOYW1lXTogZXJyb3IgfSA6IGFjY1xuICB9LCB1bmRlZmluZWQpXG5cbiAgaWYgKGFsbEVycm9ycykge1xuICAgIHRocm93IFZhbGlkYXRpb25FcnJvcignSW52YWxpZCBlbnRpdHkhJywgeyBkZXRhaWxzOiBhbGxFcnJvcnMgfSlcbiAgfVxuXG4gIHJldHVybiBkYXRhXG59XG4iXX0=