Tags give the ability to mark specific points in history as being important
-
1.0.0
a05e506e · ·1.0.0 - `[C]` Logger messages improved - `[+]` Use case pipeline: `create/1`, `async/1`, `timeout/2`, `callback/2`, `reply/2`, `input/2`, `run/1`/`run/2` - `[+]` Module-based use cases: any module exporting `exec/1` is a valid use case - `[+]` Function-based use cases: `fn` closures and `&Module.function/1` captures work directly - `[+]` Every pipeline function accepts a module or function directly — `create/1` is optional and the pipeline can start at any step - `[+]` Asynchronous execution via `async/1` (fire and forget; default is synchronous) - `[+]` Timeout via `timeout/2`: kills the underlying task when the deadline is exceeded and sets `timedout_at` on the result struct - `[+]` Result delivery to processes via `reply/2`; validated that all targets are actual PIDs - `[+]` Result delivery via functions with `callback/2`; callbacks fire asynchronously even for synchronous use cases - `[+]` Lifecycle tracking via `started_at`, `finished_at`, and `timedout_at` timestamps on the result struct - `[+]` Exception capture: exceptions raised by the use case are stored in `error` and `stacktrace`; the caller never crashes - `[+]` Already-started guard: every pipeline function raises `ArgumentError` if called on a struct whose `started_at` is set - `[+]` Automatic supervision tree — no manual setup required in the application supervisor - `[C]` Use case callback named `exec/1` (not `run/1`) to avoid collision with `Interact.UseCase.run/1` - `[+]` Starting point is the `UseCase` module presented on January 2025 at the Elixir Madrid Meetup by Ángel Herranz.