Releases: stevegeek/typed_operation
Releases · stevegeek/typed_operation
1.0.0.beta4
[1.0.0.beta4] - 2025/12/10
Added
- Operation chaining: Chain operations with
.then,.then_spreads,.then_passes,.transform, and.or_elsefor composable workflows - Pipeline DSL: Declarative
TypedOperation::Pipeline.buildfor multi-step workflows with named steps, conditional execution (if:), transforms, and failure handling - Instrumentation: Trace operation execution with
.explainandTypedOperation::Instrumentation.with_outputfor debugging - Built-in Result types:
TypedOperation::Result::MixinprovidesSuccess/Failurewithout external dependencies - Configurable result adapter:
TypedOperation.configure { |c| c.result_adapter = :dry_monads }for Dry::Monads integration
Changed
- Dry::Monads is now optional - use built-in Result types or configure the adapter
- Improved
deconstructanddeconstruct_keysfor pattern matching - Added inline RBS type annotations
Fixed
- Compatibility with latest Literal gem
Removed
- Removed
Callablemodule (redundant)
V1.0.0.beta3
Supports Rails 8 and use devcontainer for dev. Updates to released literal
[1.0.0.beta3] - 2025/04/08
Breaking changes
- Literal updated to release version so ImmutableBase now only freezes itself, not its properties too.
v1.0.0.beta2
[1.0.0.beta2] - 2024/06/24
Added
- Now uses the new Literal::Properties
- Dropped the
#withinstance method - install generator now can take a
--action_policyswitch to include the Action Policy integration
v1.0.0.beta1
[1.0.0.beta1] - 2023/08/26
Added
- Action Policy integration. Optionally include
TypedOperation::ActionPolicyAuthto get a operation execution authorization mechanism
based on Action Policy. This is an optional feature and is not included by default.
v1.0.0.pre2
Breaking changes
TypedOperation::Basenow usesLiteral::Struct& is the parent class for an operation where the arguments are mutable (not frozen). But note that
no writer methods are defined, so the arguments can still not be changed after initialization. Just that they are not frozen.TypedOperation::ImmutableBasenow usesLiteral::Data& is the parent class for an operation where the arguments are immutable (frozen on initialization),
thus giving stronger immutability guarantees (ie that the operation does not mutate its arguments).
v1.0.0.pre1
Note
literal is a dependency but has not been released yet. So to use this pre-release version of TypedOperation install literal
in your app with the repo as source:
gem "literal", ">= 0.1.0", github: "joeldrapper/literal", branch: "main"
gem "typed_operation", "1.0.0.pre1"
[1.0.0.pre1] - Unreleased
Added
- Positional params are now supported
- A new set of methods exist to define params,
.param,.named,.positional,.optional - Class methods to get names of parameters, positional and named, optional or required.
- Added ability to pattern matching on params with operation instance or partially applied operations
Breaking changes
- TypedOperation now uses Literal::Data under the hood, instead of vident-typed
- Param option
convert:has been removed, use a coercion block instead - Param option
allow_nil:has been removed, useoptional:or.optional()instead - The method
.currynow actually curries the operation, instead of partially applying (use.withfor partial application of parameters) .operation_keyhas been removed- Ruby >= 3.1 is now required
Changed
- TypedOperation does not depend on Rails. Rails generator support exists but is conditionally included.
- Numerous fixes