# `NPM.Dependency.Sort`
[🔗](https://github.com/elixir-volt/npm_ex/blob/v0.7.4/lib/npm/dependency/sort.ex#L1)

Topological sorting of packages for correct install/build order.

# `install_order`

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

Returns install order — topological sort where leaves come first.

# `level_count`

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

Counts the number of levels (maximum parallelism depth).

# `parallel_levels`

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

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

# `sort`

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

Topologically sorts packages so dependencies come before dependents.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
