text: import { GraphQLError } from '../../error/GraphQLError';
  
  import type { ASTVisitor } from '../../language/visitor';
  
  import type { ValidationContext } from '../ValidationContext';
  
  /**
   * Known fragment names
   *
   * A GraphQL document is only valid if all `...Fragment` fragment spreads refer
   * to fragments defined in the same document.
   */
  export function KnownFragmentNamesRule(context: ValidationContext): ASTVisitor {
    return {
      FragmentSpread(node) {
        const fragmentName = node.name.value;
        const fragment = context.getFragment(fragmentName);
        if (!fragment) {
          context.reportError(
            new GraphQLError(`Unknown fragment "${fragmentName}".`, node.name),
          );
        }
      },
    };
  }
  