UNPKG

graphiql-code-exporter

Version:

Export working code snippets from GraphiQL queries

66 lines (56 loc) 1.74 kB
var operationDataByName = function operationDataByName(graph, name) { return graph.find(function (operationData) { return operationData.name === name; }); }; function topologicalSortHelper(node, visited, temp, graph, result) { temp[node.name] = true; var neighbors = node.fragmentDependencies; for (var i = 0; i < neighbors.length; i += 1) { var fragmentDependency = neighbors[i]; var fragmentOperationData = operationDataByName(graph, fragmentDependency.name.value); if (!fragmentOperationData) { continue; } if (temp[fragmentOperationData.name]) { console.error('The operation graph has a cycle'); continue; } if (!visited[fragmentOperationData.name]) { topologicalSortHelper(fragmentOperationData, visited, temp, graph, result); } } temp[node.name] = false; visited[node.name] = true; result.push(node); } export default function toposort(graph) { var result = []; var visited = {}; var temp = {}; var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = graph[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var node = _step.value; if (!visited[node.name] && !temp[node.name]) { topologicalSortHelper(node, visited, temp, graph, result); } } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } return result; }