graphql-codegen
Version:
Generate client code based on a GraphQL schema and query documents
53 lines (37 loc) • 1.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
exports.propertiesFromFields = propertiesFromFields;
exports.propertyFromField = propertyFromField;
var _graphql = require('graphql');
var _changeCase = require('change-case');
var _inflected = require('inflected');
var _inflected2 = _interopRequireDefault(_inflected);
var _types = require('./types');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function propertiesFromFields(fields) {
return fields.map(function (field) {
return propertyFromField(field);
});
}
function propertyFromField(field) {
var name = (0, _changeCase.camelCase)(field.name);
var type = field.type;
var isList = type instanceof _graphql.GraphQLList || type.ofType instanceof _graphql.GraphQLList;
var property = { name: name, fieldName: field.name, isList: isList, fragmentNames: field.fragmentNames };
var namedType = (0, _graphql.getNamedType)(type);
if (namedType instanceof _graphql.GraphQLScalarType || namedType instanceof _graphql.GraphQLEnumType) {
var typeName = (0, _types.typeNameFromGraphQLType)(type);
return (0, _extends3.default)({}, property, { typeName: typeName });
} else if ((0, _graphql.isCompositeType)(namedType)) {
var unmodifiedTypeName = (0, _changeCase.pascalCase)(_inflected2.default.singularize(name));
var _typeName = (0, _types.typeNameFromGraphQLType)(type, unmodifiedTypeName);
var subproperties = propertiesFromFields(field.subfields);
return (0, _extends3.default)({}, property, { typeName: _typeName, unmodifiedTypeName: unmodifiedTypeName, isComposite: true, subproperties: subproperties });
} else {
throw new _graphql.GraphQLError('Unsupported field type: ' + String(type));
}
}