UNPKG

@dillonkearns/elm-graphql

Version:

<img src="https://cdn.jsdelivr.net/gh/martimatix/logo-graphqelm/logo.svg" alt="dillonearns/elm-graphql logo" width="40%" align="right">

62 lines (54 loc) 1.67 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.unusedFragMessage = unusedFragMessage; exports.NoUnusedFragments = NoUnusedFragments; var _error = require('../../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. * * */ 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. */ 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 _error.GraphQLError(unusedFragMessage(fragName), [fragmentDef])); } }); } } }; }