import { GraphQLError } from "../../error/GraphQLError.mjs"; /** * Unique type names * * A GraphQL document is only valid if all defined types have unique names. */ export function UniqueTypeNamesRule(context) { var knownTypeNames = Object.create(null); var schema = context.getSchema(); return { ScalarTypeDefinition: checkTypeName, ObjectTypeDefinition: checkTypeName, InterfaceTypeDefinition: checkTypeName, UnionTypeDefinition: checkTypeName, EnumTypeDefinition: checkTypeName, InputObjectTypeDefinition: checkTypeName }; function checkTypeName(node) { var typeName = node.name.value; if (schema !== null && schema !== void 0 && schema.getType(typeName)) { context.reportError(new GraphQLError("Type \"".concat(typeName, "\" already exists in the schema. It cannot also be defined in this type definition."), node.name)); return; } if (knownTypeNames[typeName]) { context.reportError(new GraphQLError("There can be only one type named \"".concat(typeName, "\"."), [knownTypeNames[typeName], node.name])); } else { knownTypeNames[typeName] = node.name; } return false; } }