UNPKG

graphql

Version:

A Query Language and Runtime which can target any service.

51 lines (41 loc) 1.4 kB
/* @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. */ 'use strict'; 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'];