NPM.DepSort (NPM v0.6.0)

Copy Markdown View Source

Topological sorting of packages for correct install/build order.

Summary

Functions

Returns install order — topological sort where leaves come first.

Counts the number of levels (maximum parallelism depth).

Returns build order levels — packages that can be built in parallel.

Topologically sorts packages so dependencies come before dependents.

Functions

install_order(adj)

@spec install_order(map()) :: [String.t()]

Returns install order — topological sort where leaves come first.

level_count(adj)

@spec level_count(map()) :: non_neg_integer()

Counts the number of levels (maximum parallelism depth).

parallel_levels(adj)

@spec parallel_levels(map()) :: [[String.t()]]

Returns build order levels — packages that can be built in parallel.

sort(adj)

@spec sort(map()) :: {:ok, [String.t()]} | {:error, :cycle}

Topologically sorts packages so dependencies come before dependents.