graphql-compose
Version:
GraphQL schema builder from different data sources with middleware extensions.
82 lines (68 loc) • 2.79 kB
JavaScript
;
var _keys = require('babel-runtime/core-js/object/keys');
var _keys2 = _interopRequireDefault(_keys);
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.resolveOutputConfigsAsThunk = resolveOutputConfigsAsThunk;
exports.resolveInputConfigsAsThunk = resolveInputConfigsAsThunk;
exports.keepConfigsAsThunk = keepConfigsAsThunk;
var _typeMapper = require('../typeMapper');
var _typeMapper2 = _interopRequireDefault(_typeMapper);
var _is = require('./is');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/* eslint-disable no-param-reassign, no-use-before-define */
function resolveOutputConfigsAsThunk(fieldMap, typeName) {
if ((0, _is.isObject)(fieldMap)) {
(0, _keys2.default)(fieldMap).forEach(function (name) {
if ((0, _is.isFunction)(fieldMap[name])) {
var fieldConfig = _typeMapper2.default.convertOutputFieldConfig(fieldMap[name](), name, typeName);
fieldConfig._fieldAsThunk = fieldMap[name];
fieldMap[name] = fieldConfig;
}
if ((0, _is.isFunction)(fieldMap[name].type)) {
fieldMap[name]._typeAsThunk = fieldMap[name].type;
var _fieldConfig = _typeMapper2.default.convertOutputFieldConfig(fieldMap[name].type(), name, typeName);
fieldMap[name].type = _fieldConfig.type;
}
if ((0, _is.isObject)(fieldMap[name].args)) {
fieldMap[name].args = resolveInputConfigsAsThunk(fieldMap[name].args, typeName + '.' + name + '.args');
}
});
}
return fieldMap;
}
function resolveInputConfigsAsThunk(fieldMap, typeName) {
if ((0, _is.isObject)(fieldMap)) {
(0, _keys2.default)(fieldMap).forEach(function (name) {
if ((0, _is.isFunction)(fieldMap[name])) {
var fieldConfig = _typeMapper2.default.convertInputFieldConfig(fieldMap[name](), name, typeName);
fieldConfig._fieldAsThunk = fieldMap[name];
fieldMap[name] = fieldConfig;
}
if ((0, _is.isFunction)(fieldMap[name].type)) {
fieldMap[name]._typeAsThunk = fieldMap[name].type;
var _fieldConfig2 = _typeMapper2.default.convertInputFieldConfig(fieldMap[name].type(), name, typeName);
fieldMap[name].type = _fieldConfig2.type;
}
});
}
return fieldMap;
}
function keepConfigsAsThunk(fieldMap) {
if ((0, _is.isObject)(fieldMap)) {
(0, _keys2.default)(fieldMap).forEach(function (key) {
if (fieldMap[key]._fieldAsThunk) {
fieldMap[key] = fieldMap[key]._fieldAsThunk;
} else {
if (fieldMap[key]._typeAsThunk) {
fieldMap[key].type = fieldMap[key]._typeAsThunk;
}
if (fieldMap[key].args) {
fieldMap[key].args = keepConfigsAsThunk(fieldMap[key].args);
}
}
});
}
return fieldMap;
}