UNPKG

graphql-compose

Version:

GraphQL schema builder from different data sources with middleware extensions.

65 lines (57 loc) 2.17 kB
/* eslint-disable no-param-reassign, no-use-before-define */ import TypeMapper from '../typeMapper'; import { isFunction, isObject } from './is'; export function resolveOutputConfigsAsThunk(fieldMap, typeName) { if (isObject(fieldMap)) { Object.keys(fieldMap).forEach(function (name) { if (isFunction(fieldMap[name])) { var fieldConfig = TypeMapper.convertOutputFieldConfig(fieldMap[name](), name, typeName); fieldConfig._fieldAsThunk = fieldMap[name]; fieldMap[name] = fieldConfig; } if (isFunction(fieldMap[name].type)) { fieldMap[name]._typeAsThunk = fieldMap[name].type; var _fieldConfig = TypeMapper.convertOutputFieldConfig(fieldMap[name].type(), name, typeName); fieldMap[name].type = _fieldConfig.type; } if (isObject(fieldMap[name].args)) { fieldMap[name].args = resolveInputConfigsAsThunk(fieldMap[name].args, typeName + '.' + name + '.args'); } }); } return fieldMap; } export function resolveInputConfigsAsThunk(fieldMap, typeName) { if (isObject(fieldMap)) { Object.keys(fieldMap).forEach(function (name) { if (isFunction(fieldMap[name])) { var fieldConfig = TypeMapper.convertInputFieldConfig(fieldMap[name](), name, typeName); fieldConfig._fieldAsThunk = fieldMap[name]; fieldMap[name] = fieldConfig; } if (isFunction(fieldMap[name].type)) { fieldMap[name]._typeAsThunk = fieldMap[name].type; var _fieldConfig2 = TypeMapper.convertInputFieldConfig(fieldMap[name].type(), name, typeName); fieldMap[name].type = _fieldConfig2.type; } }); } return fieldMap; } export function keepConfigsAsThunk(fieldMap) { if (isObject(fieldMap)) { Object.keys(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; }