{"version":3,"file":"toposort-DKW7INkP.js","sources":["../../node_modules/toposort/index.js"],"sourcesContent":["\n/**\n * Topological sorting function\n *\n * @param {Array} edges\n * @returns {Array}\n */\n\nmodule.exports = function(edges) {\n return toposort(uniqueNodes(edges), edges)\n}\n\nmodule.exports.array = toposort\n\nfunction toposort(nodes, edges) {\n var cursor = nodes.length\n , sorted = new Array(cursor)\n , visited = {}\n , i = cursor\n // Better data structures make algorithm much faster.\n , outgoingEdges = makeOutgoingEdges(edges)\n , nodesHash = makeNodesHash(nodes)\n\n // check for unknown nodes\n edges.forEach(function(edge) {\n if (!nodesHash.has(edge[0]) || !nodesHash.has(edge[1])) {\n throw new Error('Unknown node. There is an unknown node in the supplied edges.')\n }\n })\n\n while (i--) {\n if (!visited[i]) visit(nodes[i], i, new Set())\n }\n\n return sorted\n\n function visit(node, i, predecessors) {\n if(predecessors.has(node)) {\n var nodeRep\n try {\n nodeRep = \", node was:\" + JSON.stringify(node)\n } catch(e) {\n nodeRep = \"\"\n }\n throw new Error('Cyclic dependency' + nodeRep)\n }\n\n if (!nodesHash.has(node)) {\n throw new Error('Found unknown node. Make sure to provided all involved nodes. Unknown node: '+JSON.stringify(node))\n }\n\n if (visited[i]) return;\n visited[i] = true\n\n var outgoing = outgoingEdges.get(node) || new Set()\n outgoing = Array.from(outgoing)\n\n if (i = outgoing.length) {\n predecessors.add(node)\n do {\n var child = outgoing[--i]\n visit(child, nodesHash.get(child), predecessors)\n } while (i)\n predecessors.delete(node)\n }\n\n sorted[--cursor] = node\n }\n}\n\nfunction uniqueNodes(arr){\n var res = new Set()\n for (var i = 0, len = arr.length; i < len; i++) {\n var edge = arr[i]\n res.add(edge[0])\n res.add(edge[1])\n }\n return Array.from(res)\n}\n\nfunction makeOutgoingEdges(arr){\n var edges = new Map()\n for (var i = 0, len = arr.length; i < len; i++) {\n var edge = arr[i]\n if (!edges.has(edge[0])) edges.set(edge[0], new Set())\n if (!edges.has(edge[1])) edges.set(edge[1], new Set())\n edges.get(edge[0]).add(edge[1])\n }\n return edges\n}\n\nfunction makeNodesHash(arr){\n var res = new Map()\n for (var i = 0, len = arr.length; i < len; i++) {\n res.set(arr[i], i)\n }\n return res\n}\n"],"names":["toposort","nodes","edges","cursor","length","sorted","Array","visited","i","outgoingEdges","arr","Map","len","edge","has","set","Set","get","add","makeOutgoingEdges","nodesHash","res","makeNodesHash","forEach","Error","visit","node","predecessors","nodeRep","JSON","stringify","e","outgoing","from","child","delete","toposortModule","exports","uniqueNodes","array"],"mappings":"gEAcA,SAASA,EAASC,EAAOC,GACvB,IAAIC,EAASF,EAAMG,OACfC,EAAS,IAAIC,MAAMH,GACnBI,EAAU,CAAE,EACZC,EAAIL,EAEJM,EA4DN,SAA2BC,GAEzB,IADI,IAAAR,MAAYS,IACPH,EAAI,EAAGI,EAAMF,EAAIN,OAAQI,EAAII,EAAKJ,IAAK,CAC1C,IAAAK,EAAOH,EAAIF,GACVN,EAAMY,IAAID,EAAK,KAAKX,EAAMa,IAAIF,EAAK,GAAI,IAAIG,KAC3Cd,EAAMY,IAAID,EAAK,KAAKX,EAAMa,IAAIF,EAAK,GAAI,IAAIG,KAC1Cd,EAAAe,IAAIJ,EAAK,IAAIK,IAAIL,EAAK,GAC7B,CACM,OAAAX,CACT,CArEsBiB,CAAkBjB,GAClCkB,EAsEN,SAAuBV,GAErB,IADI,IAAAW,MAAUV,IACLH,EAAI,EAAGI,EAAMF,EAAIN,OAAQI,EAAII,EAAKJ,IACzCa,EAAIN,IAAIL,EAAIF,GAAIA,GAEX,OAAAa,CACT,CA5EkBC,CAAcrB,GAS9B,IANMC,EAAAqB,SAAQ,SAASV,GACrB,IAAKO,EAAUN,IAAID,EAAK,MAAQO,EAAUN,IAAID,EAAK,IAC3C,MAAA,IAAIW,MAAM,gEAEtB,IAEShB,KACAD,EAAQC,IAAIiB,EAAMxB,EAAMO,GAAIA,EAAG,IAAIQ,KAGnC,OAAAX,EAEE,SAAAoB,EAAMC,EAAMlB,EAAGmB,GACnB,GAAAA,EAAab,IAAIY,GAAO,CACrB,IAAAE,EACA,IACQA,EAAA,cAAgBC,KAAKC,UAAUJ,EAC1C,OAAOK,GACIH,EAAA,EACX,CACK,MAAA,IAAIJ,MAAM,oBAAsBI,EACvC,CAED,IAAKR,EAAUN,IAAIY,GACjB,MAAM,IAAIF,MAAM,+EAA+EK,KAAKC,UAAUJ,IAGhH,IAAInB,EAAQC,GAAZ,CACAD,EAAQC,IAAK,EAEb,IAAIwB,EAAWvB,EAAcQ,IAAIS,QAAaV,IAG1CR,GAAAA,GAFOwB,EAAA1B,MAAM2B,KAAKD,IAEL5B,OAAQ,CACvBuB,EAAaT,IAAIQ,GACd,EAAA,CACG,IAAAQ,EAAQF,IAAWxB,GACvBiB,EAAMS,EAAOd,EAAUH,IAAIiB,GAAQP,EACpC,OAAQnB,GACTmB,EAAaQ,OAAOT,EACrB,CAEMrB,IAAEF,GAAUuB,CAfH,CAgBjB,CACH,CA5DAU,EAAcC,QAAG,SAASnC,GACxB,OAAOF,EA6DT,SAAqBU,GAEnB,IADI,IAAAW,MAAUL,IACLR,EAAI,EAAGI,EAAMF,EAAIN,OAAQI,EAAII,EAAKJ,IAAK,CAC1C,IAAAK,EAAOH,EAAIF,GACXa,EAAAH,IAAIL,EAAK,IACTQ,EAAAH,IAAIL,EAAK,GACd,CACM,OAAAP,MAAM2B,KAAKZ,EACpB,CArEkBiB,CAAYpC,GAAQA,EACtC,EAEAkC,EAAAC,QAAAE,MAAuBvC","x_google_ignoreList":[0]}