diff options
author | Minteck <contact@minteck.org> | 2023-02-23 19:34:56 +0100 |
---|---|---|
committer | Minteck <contact@minteck.org> | 2023-02-23 19:34:56 +0100 |
commit | 3d1cd02f27518f1a04374c7c8320cd5d82ede6e9 (patch) | |
tree | 75be5fba4368472fb11c8015aee026b2b9a71888 /school/node_modules/graphql/validation/rules/NoFragmentCyclesRule.mjs | |
parent | 8cc1f13c17fa2fb5a4410542d39e650e02945634 (diff) | |
download | pluralconnect-3d1cd02f27518f1a04374c7c8320cd5d82ede6e9.tar.gz pluralconnect-3d1cd02f27518f1a04374c7c8320cd5d82ede6e9.tar.bz2 pluralconnect-3d1cd02f27518f1a04374c7c8320cd5d82ede6e9.zip |
Updated 40 files, added 37 files, deleted 1103 files and renamed 3905 files (automated)
Diffstat (limited to 'school/node_modules/graphql/validation/rules/NoFragmentCyclesRule.mjs')
-rw-r--r-- | school/node_modules/graphql/validation/rules/NoFragmentCyclesRule.mjs | 62 |
1 files changed, 0 insertions, 62 deletions
diff --git a/school/node_modules/graphql/validation/rules/NoFragmentCyclesRule.mjs b/school/node_modules/graphql/validation/rules/NoFragmentCyclesRule.mjs deleted file mode 100644 index 8d7618e..0000000 --- a/school/node_modules/graphql/validation/rules/NoFragmentCyclesRule.mjs +++ /dev/null @@ -1,62 +0,0 @@ -import { GraphQLError } from "../../error/GraphQLError.mjs"; -export 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("Cannot spread fragment \"".concat(spreadName, "\" within itself") + (viaPath !== '' ? " via ".concat(viaPath, ".") : '.'), cyclePath)); - } - - spreadPath.pop(); - } - - spreadPathIndexByName[fragmentName] = undefined; - } -} |