graphql
Version:
A Query Language and Runtime which can target any service.
51 lines (41 loc) • 1.4 kB
JavaScript
/* @flow */
/**
* Copyright (c) 2015, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
;
var _Object$defineProperty = require('babel-runtime/core-js/object/define-property')['default'];
_Object$defineProperty(exports, '__esModule', {
value: true
});
exports['default'] = ScalarLeafs;
var _error = require('../../error');
var _typeDefinition = require('../../type/definition');
var _errors = require('../errors');
/**
* Scalar leafs
*
* A GraphQL document is valid only if all leaf fields (fields without
* sub selections) are of scalar or enum types.
*/
function ScalarLeafs(context) {
return {
Field: function Field(node) {
var type = context.getType();
if (type) {
if ((0, _typeDefinition.isLeafType)(type)) {
if (node.selectionSet) {
return new _error.GraphQLError((0, _errors.noSubselectionAllowedMessage)(node.name.value, type), [node.selectionSet]);
}
} else if (!node.selectionSet) {
return new _error.GraphQLError((0, _errors.requiredSubselectionMessage)(node.name.value, type), [node]);
}
}
}
};
}
module.exports = exports['default'];