monad-result
Result Monad
Installation: If not already installed, add the package with pnpm add @efesto-cloud/result.
Use this skill to keep Result<T, E> usage consistent across the project.
Core Rules
- Create success with
Result.ok(value). - Create failure with
Result.err(error). - Check outcome with
result.isFailure()orresult.isSuccess(). - Throw only when explicitly desired with
result.unwrapOrThrow(). - For fallback values, use
result.else(() => fallback). - Execute side effects with
result.run(fn)— runsfnon success data, no-op on failure. - Serialize to plain object with
result.toObject()— returnsISuccess<T> | IFailure<E>. - Deserialize with
Result.fromObject(obj)— reconstructs from a plainIResult<T, E>object. - Integrate Zod validation with
Result.fromZod(zodParseResult)— convertsSafeParseReturnTypetoResult.
Common Mistakes To Avoid
- Do not use
isErr().
More from efesto-cloud/lib
usecase
>
3observer
Use when writing or reviewing Observable code from the @efesto-cloud/observable package.
3entity
Create or modify domain entities using the @efesto-cloud/entity package. Use this skill whenever the user asks to add a new entity, update an existing entity, add properties or methods to an entity, or work on the entity/dto layer. Trigger when the user says things like "create a Foo entity", "add a field to Bar", "I need a new domain object", or "add entity X". Also trigger for DTO creation or modification.
3persistence
>
3type-enum-dict
|
3monad-maybe
Use when writing or reviewing code that returns Maybe<T> from the @efesto-cloud/maybe package.
3