UNPKG

graphql

Version:

A Query Language and Runtime which can target any service.

30 lines 1.51 kB
import { GraphQLError } from "../../error/GraphQLError.mjs"; import { Kind } from "../../language/kinds.mjs"; import { GraphQLDeferDirective, GraphQLStreamDirective, } from "../../type/directives.mjs"; export function DeferStreamDirectiveLabelRule(context) { const knownLabels = new Map(); return { Directive(node) { if (node.name.value === GraphQLDeferDirective.name || node.name.value === GraphQLStreamDirective.name) { const labelArgument = node.arguments?.find((arg) => arg.name.value === 'label'); const labelValue = labelArgument?.value; if (!labelValue || labelValue.kind === Kind.NULL) { return; } if (labelValue.kind !== Kind.STRING) { context.reportError(new GraphQLError(`Argument "@${node.name.value}(label:)" must be a static string.`, { nodes: node })); return; } const knownLabel = knownLabels.get(labelValue.value); if (knownLabel != null) { context.reportError(new GraphQLError('Value for arguments "defer(label:)" and "stream(label:)" must be unique across all Defer/Stream directive usages.', { nodes: [knownLabel, node] })); } else { knownLabels.set(labelValue.value, node); } } }, }; } //# sourceMappingURL=DeferStreamDirectiveLabelRule.js.map