speckoloo
Version:
Domain entites inspired by Speck
572 lines (550 loc) • 15.1 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var cov_135vxsj63t = function () {
var path = '/home/henrique/labs/speckoloo/src/collection-factory.js',
hash = 'b678376a9f0c8f94598d6610b65abd598cf8ce6e',
global = new Function('return this')(),
gcv = '__coverage__',
coverageData = {
path: '/home/henrique/labs/speckoloo/src/collection-factory.js',
statementMap: {
'0': {
start: {
line: 4,
column: 2
},
end: {
line: 43,
column: 3
}
},
'1': {
start: {
line: 5,
column: 22
},
end: {
line: 6,
column: 19
}
},
'2': {
start: {
line: 8,
column: 4
},
end: {
line: 42,
column: 6
}
},
'3': {
start: {
line: 11,
column: 10
},
end: {
line: 11,
column: 60
}
},
'4': {
start: {
line: 11,
column: 39
},
end: {
line: 11,
column: 59
}
},
'5': {
start: {
line: 16,
column: 25
},
end: {
line: 23,
column: 16
}
},
'6': {
start: {
line: 17,
column: 12
},
end: {
line: 22,
column: 13
}
},
'7': {
start: {
line: 18,
column: 14
},
end: {
line: 18,
column: 36
}
},
'8': {
start: {
line: 19,
column: 14
},
end: {
line: 19,
column: 24
}
},
'9': {
start: {
line: 21,
column: 14
},
end: {
line: 21,
column: 59
}
},
'10': {
start: {
line: 25,
column: 10
},
end: {
line: 27,
column: 11
}
},
'11': {
start: {
line: 26,
column: 12
},
end: {
line: 26,
column: 83
}
},
'12': {
start: {
line: 29,
column: 10
},
end: {
line: 29,
column: 21
}
},
'13': {
start: {
line: 34,
column: 10
},
end: {
line: 34,
column: 29
}
},
'14': {
start: {
line: 39,
column: 10
},
end: {
line: 39,
column: 46
}
}
},
fnMap: {
'0': {
name: '(anonymous_0)',
decl: {
start: {
line: 3,
column: 15
},
end: {
line: 3,
column: 16
}
},
loc: {
start: {
line: 3,
column: 26
},
end: {
line: 44,
column: 1
}
},
line: 3
},
'1': {
name: '(anonymous_1)',
decl: {
start: {
line: 4,
column: 9
},
end: {
line: 4,
column: 10
}
},
loc: {
start: {
line: 4,
column: 17
},
end: {
line: 43,
column: 3
}
},
line: 4
},
'2': {
name: 'toJSON',
decl: {
start: {
line: 10,
column: 24
},
end: {
line: 10,
column: 30
}
},
loc: {
start: {
line: 10,
column: 53
},
end: {
line: 12,
column: 9
}
},
line: 10
},
'3': {
name: '(anonymous_3)',
decl: {
start: {
line: 11,
column: 31
},
end: {
line: 11,
column: 32
}
},
loc: {
start: {
line: 11,
column: 39
},
end: {
line: 11,
column: 59
}
},
line: 11
},
'4': {
name: 'validate',
decl: {
start: {
line: 15,
column: 24
},
end: {
line: 15,
column: 32
}
},
loc: {
start: {
line: 15,
column: 55
},
end: {
line: 30,
column: 9
}
},
line: 15
},
'5': {
name: '(anonymous_5)',
decl: {
start: {
line: 16,
column: 42
},
end: {
line: 16,
column: 43
}
},
loc: {
start: {
line: 16,
column: 62
},
end: {
line: 23,
column: 11
}
},
line: 16
},
'6': {
name: 'at',
decl: {
start: {
line: 33,
column: 24
},
end: {
line: 33,
column: 26
}
},
loc: {
start: {
line: 33,
column: 31
},
end: {
line: 35,
column: 9
}
},
line: 33
},
'7': {
name: 'iterator',
decl: {
start: {
line: 38,
column: 26
},
end: {
line: 38,
column: 34
}
},
loc: {
start: {
line: 38,
column: 38
},
end: {
line: 40,
column: 9
}
},
line: 38
}
},
branchMap: {
'0': {
loc: {
start: {
line: 10,
column: 32
},
end: {
line: 10,
column: 51
}
},
type: 'default-arg',
locations: [{
start: {
line: 10,
column: 42
},
end: {
line: 10,
column: 51
}
}],
line: 10
},
'1': {
loc: {
start: {
line: 15,
column: 34
},
end: {
line: 15,
column: 53
}
},
type: 'default-arg',
locations: [{
start: {
line: 15,
column: 44
},
end: {
line: 15,
column: 53
}
}],
line: 15
},
'2': {
loc: {
start: {
line: 25,
column: 10
},
end: {
line: 27,
column: 11
}
},
type: 'if',
locations: [{
start: {
line: 25,
column: 10
},
end: {
line: 27,
column: 11
}
}, {
start: {
line: 25,
column: 10
},
end: {
line: 27,
column: 11
}
}],
line: 25
}
},
s: {
'0': 0,
'1': 0,
'2': 0,
'3': 0,
'4': 0,
'5': 0,
'6': 0,
'7': 0,
'8': 0,
'9': 0,
'10': 0,
'11': 0,
'12': 0,
'13': 0,
'14': 0
},
f: {
'0': 0,
'1': 0,
'2': 0,
'3': 0,
'4': 0,
'5': 0,
'6': 0,
'7': 0
},
b: {
'0': [0],
'1': [0],
'2': [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; };
var _validationError = require('./validation-error.factory');
var _validationError2 = _interopRequireDefault(_validationError);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = factory => {
cov_135vxsj63t.f[0]++;
cov_135vxsj63t.s[0]++;
return data => {
cov_135vxsj63t.f[1]++;
const instances = (cov_135vxsj63t.s[1]++, [...data].map(factory));
cov_135vxsj63t.s[2]++;
return Object.create(null, {
toJSON: {
value: function toJSON(context = (cov_135vxsj63t.b[0][0]++, 'default')) {
cov_135vxsj63t.f[2]++;
cov_135vxsj63t.s[3]++;
return instances.map(item => {
cov_135vxsj63t.f[3]++;
cov_135vxsj63t.s[4]++;
return item.toJSON(context);
});
}
},
validate: {
value: function validate(context = (cov_135vxsj63t.b[1][0]++, 'default')) {
cov_135vxsj63t.f[4]++;
const errors = (cov_135vxsj63t.s[5]++, instances.reduce((acc, item, key) => {
cov_135vxsj63t.f[5]++;
cov_135vxsj63t.s[6]++;
try {
cov_135vxsj63t.s[7]++;
item.validate(context);
cov_135vxsj63t.s[8]++;
return acc;
} catch (e) {
cov_135vxsj63t.s[9]++;
return _extends({}, acc, { [`item#${key}`]: e.details });
}
}, {}));
cov_135vxsj63t.s[10]++;
if (Object.keys(errors).length > 0) {
cov_135vxsj63t.b[2][0]++;
cov_135vxsj63t.s[11]++;
throw (0, _validationError2.default)('Invalid entity aggregate!', { details: errors });
} else {
cov_135vxsj63t.b[2][1]++;
}
cov_135vxsj63t.s[12]++;
return this;
}
},
at: {
value: function at(n) {
cov_135vxsj63t.f[6]++;
cov_135vxsj63t.s[13]++;
return instances[n];
}
},
[Symbol.iterator]: {
value: function* iterator() {
cov_135vxsj63t.f[7]++;
cov_135vxsj63t.s[14]++;
yield* instances[Symbol.iterator]();
}
}
});
};
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb2xsZWN0aW9uLWZhY3RvcnkuanMiXSwibmFtZXMiOlsiZmFjdG9yeSIsImRhdGEiLCJpbnN0YW5jZXMiLCJtYXAiLCJPYmplY3QiLCJjcmVhdGUiLCJ0b0pTT04iLCJ2YWx1ZSIsImNvbnRleHQiLCJpdGVtIiwidmFsaWRhdGUiLCJlcnJvcnMiLCJyZWR1Y2UiLCJhY2MiLCJrZXkiLCJlIiwiZGV0YWlscyIsImtleXMiLCJsZW5ndGgiLCJhdCIsIm4iLCJTeW1ib2wiLCJpdGVyYXRvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7O2tCQUVlQSxXQUFXO0FBQUE7QUFBQTs7QUFDeEIsU0FBT0MsUUFBUTtBQUFBOztBQUNiLFVBQU1DLG9DQUFZLENBQUMsR0FBR0QsSUFBSixFQUNmRSxHQURlLENBQ1hILE9BRFcsQ0FBWixDQUFOOztBQURhO0FBSWIsV0FBT0ksT0FBT0MsTUFBUCxDQUFjLElBQWQsRUFBb0I7QUFDekJDLGNBQVE7QUFDTkMsZUFBTyxTQUFTRCxNQUFULENBQWlCRSxxQ0FBVSxTQUFWLENBQWpCLEVBQXNDO0FBQUE7QUFBQTs7QUFDM0MsaUJBQU9OLFVBQVVDLEdBQVYsQ0FBY00sUUFBUTtBQUFBO0FBQUE7QUFBQSx3QkFBS0gsTUFBTCxDQUFZRSxPQUFaO0FBQW9CLFdBQTFDLENBQVA7QUFDRDtBQUhLLE9BRGlCO0FBTXpCRSxnQkFBVTtBQUNSSCxlQUFPLFNBQVNHLFFBQVQsQ0FBbUJGLHFDQUFVLFNBQVYsQ0FBbkIsRUFBd0M7QUFBQTs7QUFDN0MsZ0JBQU1HLGlDQUFTVCxVQUFVVSxNQUFWLENBQWlCLENBQUNDLEdBQUQsRUFBTUosSUFBTixFQUFZSyxHQUFaLEtBQW9CO0FBQUE7QUFBQTs7QUFDbEQsZ0JBQUk7QUFBQTs7QUFDRkwsbUJBQUtDLFFBQUwsQ0FBY0YsT0FBZDtBQURFO0FBRUYscUJBQU9LLEdBQVA7QUFDRCxhQUhELENBR0UsT0FBT0UsQ0FBUCxFQUFVO0FBQUE7O0FBQ1Ysa0NBQVlGLEdBQVosSUFBaUIsQ0FBRSxRQUFPQyxHQUFJLEVBQWIsR0FBaUJDLEVBQUVDLE9BQXBDO0FBQ0Q7QUFDRixXQVBjLEVBT1osRUFQWSxDQUFULENBQU47O0FBRDZDO0FBVTdDLGNBQUlaLE9BQU9hLElBQVAsQ0FBWU4sTUFBWixFQUFvQk8sTUFBcEIsR0FBNkIsQ0FBakMsRUFBb0M7QUFBQTtBQUFBOztBQUNsQyxrQkFBTSwrQkFBZ0IsMkJBQWhCLEVBQTZDLEVBQUVGLFNBQVNMLE1BQVgsRUFBN0MsQ0FBTjtBQUNELFdBRkQ7QUFBQTtBQUFBOztBQVY2QztBQWM3QyxpQkFBTyxJQUFQO0FBQ0Q7QUFoQk8sT0FOZTtBQXdCekJRLFVBQUk7QUFDRlosZUFBTyxTQUFTWSxFQUFULENBQWFDLENBQWIsRUFBZ0I7QUFBQTtBQUFBOztBQUNyQixpQkFBT2xCLFVBQVVrQixDQUFWLENBQVA7QUFDRDtBQUhDLE9BeEJxQjtBQTZCekIsT0FBQ0MsT0FBT0MsUUFBUixHQUFtQjtBQUNqQmYsZUFBTyxVQUFXZSxRQUFYLEdBQXVCO0FBQUE7QUFBQTs7QUFDNUIsaUJBQVFwQixVQUFVbUIsT0FBT0MsUUFBakIsR0FBUjtBQUNEO0FBSGdCO0FBN0JNLEtBQXBCLENBQVA7QUFtQ0QsR0F2Q0Q7QUF3Q0QsQyIsImZpbGUiOiJjb2xsZWN0aW9uLWZhY3RvcnkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVmFsaWRhdGlvbkVycm9yIGZyb20gJy4vdmFsaWRhdGlvbi1lcnJvci5mYWN0b3J5J1xuXG5leHBvcnQgZGVmYXVsdCBmYWN0b3J5ID0+IHtcbiAgcmV0dXJuIGRhdGEgPT4ge1xuICAgIGNvbnN0IGluc3RhbmNlcyA9IFsuLi5kYXRhXVxuICAgICAgLm1hcChmYWN0b3J5KVxuXG4gICAgcmV0dXJuIE9iamVjdC5jcmVhdGUobnVsbCwge1xuICAgICAgdG9KU09OOiB7XG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiB0b0pTT04gKGNvbnRleHQgPSAnZGVmYXVsdCcpIHtcbiAgICAgICAgICByZXR1cm4gaW5zdGFuY2VzLm1hcChpdGVtID0+IGl0ZW0udG9KU09OKGNvbnRleHQpKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdmFsaWRhdGU6IHtcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlIChjb250ZXh0ID0gJ2RlZmF1bHQnKSB7XG4gICAgICAgICAgY29uc3QgZXJyb3JzID0gaW5zdGFuY2VzLnJlZHVjZSgoYWNjLCBpdGVtLCBrZXkpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGl0ZW0udmFsaWRhdGUoY29udGV4dClcbiAgICAgICAgICAgICAgcmV0dXJuIGFjY1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICByZXR1cm4geyAuLi5hY2MsIFtgaXRlbSMke2tleX1gXTogZS5kZXRhaWxzIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCB7fSlcblxuICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhlcnJvcnMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRocm93IFZhbGlkYXRpb25FcnJvcignSW52YWxpZCBlbnRpdHkgYWdncmVnYXRlIScsIHsgZGV0YWlsczogZXJyb3JzIH0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRoaXNcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGF0OiB7XG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBhdCAobikge1xuICAgICAgICAgIHJldHVybiBpbnN0YW5jZXNbbl1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtTeW1ib2wuaXRlcmF0b3JdOiB7XG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiAqIGl0ZXJhdG9yICgpIHtcbiAgICAgICAgICB5aWVsZCAqIGluc3RhbmNlc1tTeW1ib2wuaXRlcmF0b3JdKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIH1cbn1cbiJdfQ==