graphql
Version:
A Query Language and Runtime which can target any service.
48 lines (37 loc) • 1.47 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'];
var _Object$keys = require('babel-runtime/core-js/object/keys')['default'];
_Object$defineProperty(exports, '__esModule', {
value: true
});
exports['default'] = TypesInterfacesMustShowThemAsPossible;
var _error = require('../../error');
var _definition = require('../definition');
function TypesInterfacesMustShowThemAsPossible(context) {
var schema = context.getSchema();
var typeMap = schema.getTypeMap();
var errors = [];
_Object$keys(typeMap).forEach(function (typeName) {
var type = typeMap[typeName];
if (!(type instanceof _definition.GraphQLObjectType)) {
return;
}
var interfaces = type.getInterfaces();
interfaces.forEach(function (interfaceType) {
if (!interfaceType.isPossibleType(type)) {
errors.push(new _error.GraphQLError('' + typeName + ' implements interface ' + interfaceType.name + ', but ' + ('' + interfaceType.name + ' does not list it as possible!')));
}
});
});
return errors.length > 0 ? errors : null;
}
module.exports = exports['default'];