import { GraphQLError } from '../../error'; /** * Copyright (c) 2015-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * strict */ export function unusedFragMessage(fragName) { return 'Fragment "' + fragName + '" is never used.'; } /** * No unused fragments * * A GraphQL document is only valid if all fragment definitions are spread * within operations, or spread within other fragments spread within operations. */ export function NoUnusedFragments(context) { var operationDefs = []; var fragmentDefs = []; return { OperationDefinition: function OperationDefinition(node) { operationDefs.push(node); return false; }, FragmentDefinition: function FragmentDefinition(node) { fragmentDefs.push(node); return false; }, Document: { leave: function leave() { var fragmentNameUsed = Object.create(null); operationDefs.forEach(function (operation) { context.getRecursivelyReferencedFragments(operation).forEach(function (fragment) { fragmentNameUsed[fragment.name.value] = true; }); }); fragmentDefs.forEach(function (fragmentDef) { var fragName = fragmentDef.name.value; if (fragmentNameUsed[fragName] !== true) { context.reportError(new GraphQLError(unusedFragMessage(fragName), [fragmentDef])); } }); } } }; }