# `Weld.Plan`
[🔗](https://github.com/nshkrdotcom/weld/blob/main/lib/weld/plan.ex#L1)

Resolves one artifact view from the manifest and workspace graph.

# `external_dep`

```elixir
@type external_dep() :: Weld.Graph.external_dep()
```

# `t`

```elixir
@type t() :: %Weld.Plan{
  artifact: Weld.Manifest.Artifact.t(),
  excluded_ids: [String.t()],
  external_deps: [external_dep()],
  graph: Weld.Graph.t(),
  manifest: Weld.Manifest.t(),
  selected_ids: [String.t()],
  selected_projects: [Weld.Workspace.Project.t()],
  violations: [Weld.Violation.t()],
  workspace: Weld.Workspace.t()
}
```

# `build!`

```elixir
@spec build!(
  Path.t() | Weld.Manifest.t(),
  keyword()
) :: t()
```

# `ensure_valid!`

```elixir
@spec ensure_valid!(t()) :: t()
```

# `external_deps_for_view`

```elixir
@spec external_deps_for_view(t(), Weld.Graph.View.t()) :: [external_dep()]
```

# `projects_for_view`

```elixir
@spec projects_for_view(t(), Weld.Graph.View.t()) :: [Weld.Workspace.Project.t()]
```

# `selected?`

```elixir
@spec selected?(t(), String.t()) :: boolean()
```

---

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