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

Detects unused and missing dependencies in a project.

Scans source files for `require()` and `import` statements,
then compares against declared dependencies.

# `check_result`

```elixir
@type check_result() :: %{unused: [String.t()], missing: [String.t()]}
```

# `check`

```elixir
@spec check(String.t()) :: {:ok, check_result()} | {:error, term()}
```

Analyzes a project for unused and missing dependencies.

# `extract_imports`

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

Extracts package names from require/import statements in source code.

# `normalize_package_name`

```elixir
@spec normalize_package_name(String.t()) :: String.t()
```

Normalizes a module specifier to a package name.

Handles scoped packages and deep imports.

# `scan_imports`

```elixir
@spec scan_imports(String.t()) :: MapSet.t()
```

Scans JS/TS source files in a directory for imports.

---

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