Compiler.Dependencies

The algorithm for calculating the required dependencies of a project.

type alias SimplifiedOutline =
{ name : PackageName
, version : SemanticVersionRange
, dependencies : Dict String SemanticVersionRange
}

A simlified outline only contains the information that is required by the algorithm.

type Solution
= Complete
| Missing ({ name : PackageName, version : SemanticVersionRange })
| Conflict ({ name : PackageName, version1 : SemanticVersionRange, version2 : SemanticVersionRange })

Return value of solve. Let's you know if you've got all the required dependencies, or if you're missing something.

solve :
Array { name : PackageName
, version : SemanticVersionRange
}
-> Dict String SimplifiedOutline
-> Solution

Calculate the required dependencies of a project.