| import { GraphQLError } from "../../error/GraphQLError.mjs"; |
| |
| /** |
| * Unique directive names |
| * |
| * A GraphQL document is only valid if all defined directives have unique names. |
| */ |
| export function UniqueDirectiveNamesRule(context) { |
| var knownDirectiveNames = Object.create(null); |
| var schema = context.getSchema(); |
| return { |
| DirectiveDefinition: function DirectiveDefinition(node) { |
| var directiveName = node.name.value; |
| |
| if (schema === null || schema === void 0 ? void 0 : schema.getDirective(directiveName)) { |
| context.reportError(new GraphQLError("Directive \"@".concat(directiveName, "\" already exists in the schema. It cannot be redefined."), node.name)); |
| return; |
| } |
| |
| if (knownDirectiveNames[directiveName]) { |
| context.reportError(new GraphQLError("There can be only one directive named \"@".concat(directiveName, "\"."), [knownDirectiveNames[directiveName], node.name])); |
| } else { |
| knownDirectiveNames[directiveName] = node.name; |
| } |
| |
| return false; |
| } |
| }; |
| } |