diff options
Diffstat (limited to 'alarm/node_modules/graphql/validation/rules/NoFragmentCyclesRule.js')
-rw-r--r-- | alarm/node_modules/graphql/validation/rules/NoFragmentCyclesRule.js | 70 |
1 files changed, 0 insertions, 70 deletions
diff --git a/alarm/node_modules/graphql/validation/rules/NoFragmentCyclesRule.js b/alarm/node_modules/graphql/validation/rules/NoFragmentCyclesRule.js deleted file mode 100644 index afabeb5..0000000 --- a/alarm/node_modules/graphql/validation/rules/NoFragmentCyclesRule.js +++ /dev/null @@ -1,70 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.NoFragmentCyclesRule = NoFragmentCyclesRule; - -var _GraphQLError = require("../../error/GraphQLError.js"); - -function NoFragmentCyclesRule(context) { - // Tracks already visited fragments to maintain O(N) and to ensure that cycles - // are not redundantly reported. - var visitedFrags = Object.create(null); // Array of AST nodes used to produce meaningful errors - - var spreadPath = []; // Position in the spread path - - var spreadPathIndexByName = Object.create(null); - return { - OperationDefinition: function OperationDefinition() { - return false; - }, - FragmentDefinition: function FragmentDefinition(node) { - detectCycleRecursive(node); - return false; - } - }; // This does a straight-forward DFS to find cycles. - // It does not terminate when a cycle was found but continues to explore - // the graph to find all possible cycles. - - function detectCycleRecursive(fragment) { - if (visitedFrags[fragment.name.value]) { - return; - } - - var fragmentName = fragment.name.value; - visitedFrags[fragmentName] = true; - var spreadNodes = context.getFragmentSpreads(fragment.selectionSet); - - if (spreadNodes.length === 0) { - return; - } - - spreadPathIndexByName[fragmentName] = spreadPath.length; - - for (var _i2 = 0; _i2 < spreadNodes.length; _i2++) { - var spreadNode = spreadNodes[_i2]; - var spreadName = spreadNode.name.value; - var cycleIndex = spreadPathIndexByName[spreadName]; - spreadPath.push(spreadNode); - - if (cycleIndex === undefined) { - var spreadFragment = context.getFragment(spreadName); - - if (spreadFragment) { - detectCycleRecursive(spreadFragment); - } - } else { - var cyclePath = spreadPath.slice(cycleIndex); - var viaPath = cyclePath.slice(0, -1).map(function (s) { - return '"' + s.name.value + '"'; - }).join(', '); - context.reportError(new _GraphQLError.GraphQLError("Cannot spread fragment \"".concat(spreadName, "\" within itself") + (viaPath !== '' ? " via ".concat(viaPath, ".") : '.'), cyclePath)); - } - - spreadPath.pop(); - } - - spreadPathIndexByName[fragmentName] = undefined; - } -} |