{"version":3,"file":"toposort-9112f669.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":["toposortModule","edges","toposort","uniqueNodes","nodes","cursor","sorted","visited","i","outgoingEdges","makeOutgoingEdges","nodesHash","makeNodesHash","edge","visit","node","predecessors","nodeRep","outgoing","child","arr","res","len"],"mappings":"4DAQAA,EAAc,QAAG,SAASC,EAAO,CAC/B,OAAOC,EAASC,EAAYF,CAAK,EAAGA,CAAK,CAC3C,EAEAD,EAAA,QAAA,MAAuBE,EAEvB,SAASA,EAASE,EAAOH,EAAO,CAC9B,IAAII,EAASD,EAAM,OACfE,EAAS,IAAI,MAAMD,CAAM,EACzBE,EAAU,CAAE,EACZC,EAAIH,EAEJI,EAAgBC,EAAkBT,CAAK,EACvCU,EAAYC,EAAcR,CAAK,EASnC,IANAH,EAAM,QAAQ,SAASY,EAAM,CAC3B,GAAI,CAACF,EAAU,IAAIE,EAAK,CAAC,CAAC,GAAK,CAACF,EAAU,IAAIE,EAAK,CAAC,CAAC,EACnD,MAAM,IAAI,MAAM,+DAA+D,CAErF,CAAG,EAEML,KACAD,EAAQC,CAAC,GAAGM,EAAMV,EAAMI,CAAC,EAAGA,EAAG,IAAI,GAAK,EAG/C,OAAOF,EAEP,SAASQ,EAAMC,EAAMP,EAAGQ,EAAc,CACpC,GAAGA,EAAa,IAAID,CAAI,EAAG,CACzB,IAAIE,EACJ,GAAI,CACFA,EAAU,cAAgB,KAAK,UAAUF,CAAI,CAC9C,MAAU,CACTE,EAAU,EACX,CACD,MAAM,IAAI,MAAM,oBAAsBA,CAAO,CAC9C,CAED,GAAI,CAACN,EAAU,IAAII,CAAI,EACrB,MAAM,IAAI,MAAM,+EAA+E,KAAK,UAAUA,CAAI,CAAC,EAGrH,GAAI,CAAAR,EAAQC,CAAC,EACb,CAAAD,EAAQC,CAAC,EAAI,GAEb,IAAIU,EAAWT,EAAc,IAAIM,CAAI,GAAK,IAAI,IAG9C,GAFAG,EAAW,MAAM,KAAKA,CAAQ,EAE1BV,EAAIU,EAAS,OAAQ,CACvBF,EAAa,IAAID,CAAI,EACrB,EAAG,CACD,IAAII,EAAQD,EAAS,EAAEV,CAAC,EACxBM,EAAMK,EAAOR,EAAU,IAAIQ,CAAK,EAAGH,CAAY,CAChD,OAAQR,GACTQ,EAAa,OAAOD,CAAI,CACzB,CAEDT,EAAO,EAAED,CAAM,EAAIU,EACpB,CACH,CAEA,SAASZ,EAAYiB,EAAI,CAEvB,QADIC,EAAM,IAAI,IACLb,EAAI,EAAGc,EAAMF,EAAI,OAAQZ,EAAIc,EAAKd,IAAK,CAC9C,IAAIK,EAAOO,EAAIZ,CAAC,EAChBa,EAAI,IAAIR,EAAK,CAAC,CAAC,EACfQ,EAAI,IAAIR,EAAK,CAAC,CAAC,CAChB,CACD,OAAO,MAAM,KAAKQ,CAAG,CACvB,CAEA,SAASX,EAAkBU,EAAI,CAE7B,QADInB,EAAQ,IAAI,IACPO,EAAI,EAAGc,EAAMF,EAAI,OAAQZ,EAAIc,EAAKd,IAAK,CAC9C,IAAIK,EAAOO,EAAIZ,CAAC,EACXP,EAAM,IAAIY,EAAK,CAAC,CAAC,GAAGZ,EAAM,IAAIY,EAAK,CAAC,EAAG,IAAI,GAAK,EAChDZ,EAAM,IAAIY,EAAK,CAAC,CAAC,GAAGZ,EAAM,IAAIY,EAAK,CAAC,EAAG,IAAI,GAAK,EACrDZ,EAAM,IAAIY,EAAK,CAAC,CAAC,EAAE,IAAIA,EAAK,CAAC,CAAC,CAC/B,CACD,OAAOZ,CACT,CAEA,SAASW,EAAcQ,EAAI,CAEzB,QADIC,EAAM,IAAI,IACLb,EAAI,EAAGc,EAAMF,EAAI,OAAQZ,EAAIc,EAAKd,IACzCa,EAAI,IAAID,EAAIZ,CAAC,EAAGA,CAAC,EAEnB,OAAOa,CACT","x_google_ignoreList":[0]}