diff --git a/.changeset/async-result-alias.md b/.changeset/async-result-alias.md new file mode 100644 index 0000000..7babe66 --- /dev/null +++ b/.changeset/async-result-alias.md @@ -0,0 +1,5 @@ +--- +'@rineex/ddd': patch +--- + +Add the `AsyncResult` alias for asynchronous application use cases. diff --git a/packages/ddd/src/shared/domain/result.ts b/packages/ddd/src/shared/domain/result.ts index 9dc2d21..31f3fe3 100644 --- a/packages/ddd/src/shared/domain/result.ts +++ b/packages/ddd/src/shared/domain/result.ts @@ -31,6 +31,19 @@ export type Result = | Err | Ok; +/** + * Asynchronous result of an application use case. + * + * Resolves with either a successful value or an expected use-case failure. + * + * @template T Success value type. Defaults to void for command use cases. + * @template E Per-use-case error union. + */ +export type AsyncResult< + T = void, + E extends UseCaseError = UseCaseError, +> = Promise>; + function freeze>(result: R): R { return Object.freeze(result); }