graph-resolver
Version:
Graph Resolver resolves a value or a list of values of a model to another, provided their intermediaries have defined relationships.
40 lines (28 loc) • 1.07 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true
});
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
var _bluebird = require('bluebird');
var _bluebird2 = _interopRequireDefault(_bluebird);
var _utilities = require('./utilities');
var _graph = require('./graph');
var Resolver = function Resolver(relationships) {
if (!(0, _lodash2['default'])(relationships).map(_graph.validateRelationship).every(Boolean)) {
throw new Error('Invalid Relationship');
}
this.graph = (0, _graph.setupGraph)(relationships);
};
Resolver.prototype.resolve = function (value, source, destination) {
var methods = undefined;
try {
methods = (0, _graph.getPath)(this.graph, source, destination);
} catch (error) {
return _bluebird2['default'].reject(new Error('Invalid Arguments'));
}
return (0, _utilities.chainThenables)(methods, value);
};
exports['default'] = Resolver;
module.exports = exports['default'];