UNPKG

aws-cdk-lib

Version:

Version 2 of the AWS Cloud Development Kit library

2 lines (1 loc) 817 B
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.topologicalSort=topologicalSort;var error_1=()=>{var tmp=require("./private/error");return error_1=()=>tmp,tmp};function topologicalSort(xs,keyFn,depFn){const remaining=new Map;for(const element of xs){const key=keyFn(element);remaining.set(key,{key,element,dependencies:depFn(element)})}const ret=new Array;for(;remaining.size>0;){const selectable=Array.from(remaining.values()).filter(e=>e.dependencies.every(d=>!remaining.has(d)));selectable.sort((a,b)=>a.key<b.key?-1:b.key<a.key?1:0);for(const selected of selectable)ret.push(selected.element),remaining.delete(selected.key);if(selectable.length===0)throw new(error_1()).CloudAssemblyError(`Could not determine ordering between: ${Array.from(remaining.keys()).join(", ")}`)}return ret}