@temporal-contract/boxed
@temporal-contract/boxed
Custom implementation of Future and Result patterns for Temporal workflows
This package provides a Temporal-compatible implementation of the Result and Future patterns that were originally provided by @swan-io/boxed.
Classes
Err
Defined in: result.ts:70
Err variant representing a failed result.
Named Err to avoid shadowing the global Error constructor. Use Result.Error() factory or isError() type guard in consuming code.
Type Parameters
| Type Parameter |
|---|
T |
E |
Constructors
Constructor
new Err<T, E>(error): Err<T, E>;Defined in: result.ts:74
Parameters
| Parameter | Type |
|---|---|
error | E |
Returns
Err<T, E>
Properties
| Property | Modifier | Type | Defined in |
|---|---|---|---|
error | readonly | E | result.ts:72 |
tag | readonly | "Error" | result.ts:71 |
Methods
flatMap()
flatMap<U>(_fn): Result<U, E>;Defined in: result.ts:94
Type Parameters
| Type Parameter |
|---|
U |
Parameters
| Parameter | Type |
|---|---|
_fn | (value) => Result<U, E> |
Returns
Result<U, E>
flatMapOk()
flatMapOk<U>(_fn): Result<U, E>;Defined in: result.ts:98
Type Parameters
| Type Parameter |
|---|
U |
Parameters
| Parameter | Type |
|---|---|
_fn | (value) => Result<U, E> |
Returns
Result<U, E>
getOr()
getOr(defaultValue): T;Defined in: result.ts:102
Parameters
| Parameter | Type |
|---|---|
defaultValue | T |
Returns
T
getWithDefault()
getWithDefault(defaultValue): T;Defined in: result.ts:106
Parameters
| Parameter | Type |
|---|---|
defaultValue | T |
Returns
T
isError()
isError(): this is Err<T, E>;Defined in: result.ts:82
Returns
this is Err<T, E>
isOk()
isOk(): this is Ok<T, E>;Defined in: result.ts:78
Returns
this is Ok<T, E>
map()
map<U>(_fn): Result<U, E>;Defined in: result.ts:86
Type Parameters
| Type Parameter |
|---|
U |
Parameters
| Parameter | Type |
|---|---|
_fn | (value) => U |
Returns
Result<U, E>
mapError()
mapError<F>(fn): Result<T, F>;Defined in: result.ts:90
Type Parameters
| Type Parameter |
|---|
F |
Parameters
| Parameter | Type |
|---|---|
fn | (error) => F |
Returns
Result<T, F>
match()
match<R>(pattern): R;Defined in: result.ts:110
Type Parameters
| Type Parameter |
|---|
R |
Parameters
| Parameter | Type |
|---|---|
pattern | { Error: (error) => R; Ok: (value) => R; } |
pattern.Error | (error) => R |
pattern.Ok | (value) => R |
Returns
R
toOption()
toOption(): Option<T>;Defined in: result.ts:114
Returns
Option<T>
Future
Defined in: future.ts:8
Future type representing an asynchronous computation This is a custom implementation compatible with Temporal workflows
Type Parameters
| Type Parameter |
|---|
T |
Implements
Promise<T>
Properties
| Property | Modifier | Type | Default value | Defined in |
|---|---|---|---|---|
[toStringTag] | readonly | "Future" | "Future" | future.ts:12 |
Methods
catch()
catch<TResult>(onRejected?): Promise<T | TResult>;Defined in: future.ts:189
Attaches a callback for only the rejection of the Promise.
Type Parameters
| Type Parameter | Default type |
|---|---|
TResult | never |
Parameters
| Parameter | Type |
|---|---|
onRejected? | (reason) => TResult | PromiseLike<TResult> | null |
Returns
Promise<T | TResult>
A Promise for the completion of the callback.
Implementation of
Promise.catchfinally()
finally(onFinally?): Promise<T>;Defined in: future.ts:195
Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The resolved value cannot be modified from the callback.
Parameters
| Parameter | Type |
|---|---|
onFinally? | () => void | null |
Returns
Promise<T>
A Promise for the completion of the callback.
Implementation of
Promise.finallyflatMap()
flatMap<U>(fn): Future<U>;Defined in: future.ts:95
FlatMap the result of the Future
Type Parameters
| Type Parameter |
|---|
U |
Parameters
| Parameter | Type |
|---|---|
fn | (value) => Future<U> |
Returns
Future<U>
flatMapOk()
flatMapOk<V, E, U>(this, fn): Future<Result<U, E>>;Defined in: future.ts:126
FlatMap over a Result within a Future
Type Parameters
| Type Parameter |
|---|
V |
E |
U |
Parameters
| Parameter | Type |
|---|---|
this | Future<Result<V, E>> |
fn | (value) => Future<Result<U, E>> |
Returns
map()
map<U>(fn): Future<U>;Defined in: future.ts:88
Map the result of the Future
Type Parameters
| Type Parameter |
|---|
U |
Parameters
| Parameter | Type |
|---|---|
fn | (value) => U |
Returns
Future<U>
mapError()
mapError<V, E, F>(this, fn): Future<Result<V, F>>;Defined in: future.ts:114
Map over an error in a Result within a Future
Type Parameters
| Type Parameter |
|---|
V |
E |
F |
Parameters
| Parameter | Type |
|---|---|
this | Future<Result<V, E>> |
fn | (error) => F |
Returns
mapOk()
mapOk<V, U, E>(this, fn): Future<Result<U, E>>;Defined in: future.ts:102
Map over a Result within a Future
Type Parameters
| Type Parameter |
|---|
V |
U |
E |
Parameters
| Parameter | Type |
|---|---|
this | Future<Result<V, E>> |
fn | (value) => U |
Returns
tap()
tap(fn): Future<T>;Defined in: future.ts:143
Tap into the Future value without changing it
Parameters
| Parameter | Type |
|---|---|
fn | (value) => void |
Returns
Future<T>
tapError()
tapError<V, E>(this, fn): Future<Result<V, E>>;Defined in: future.ts:164
Tap into Error values in a Result
Type Parameters
| Type Parameter |
|---|
V |
E |
Parameters
| Parameter | Type |
|---|---|
this | Future<Result<V, E>> |
fn | (error) => void |
Returns
tapOk()
tapOk<V, E>(this, fn): Future<Result<V, E>>;Defined in: future.ts:153
Tap into Ok values in a Result
Type Parameters
| Type Parameter |
|---|
V |
E |
Parameters
| Parameter | Type |
|---|---|
this | Future<Result<V, E>> |
fn | (value) => void |
Returns
then()
then<TResult1, TResult2>(onFulfilled?, onRejected?): Promise<TResult1 | TResult2>;Defined in: future.ts:182
Attaches callbacks for the resolution and/or rejection of the Promise.
Type Parameters
| Type Parameter | Default type |
|---|---|
TResult1 | T |
TResult2 | never |
Parameters
| Parameter | Type |
|---|---|
onFulfilled? | (value) => TResult1 | PromiseLike<TResult1> | null |
onRejected? | (reason) => TResult2 | PromiseLike<TResult2> | null |
Returns
Promise<TResult1 | TResult2>
A Promise for the completion of which ever callback is executed.
Implementation of
Promise.thentoPromise()
toPromise(): Promise<T>;Defined in: future.ts:175
Convert to a Promise (for await)
Returns
Promise<T>
all()
static all<T>(futures): Future<T[]>;Defined in: future.ts:56
Combine multiple Futures into one
Type Parameters
| Type Parameter |
|---|
T |
Parameters
| Parameter | Type |
|---|---|
futures | Future<T>[] |
Returns
Future<T[]>
fromAsync()
static fromAsync<T>(fn): Future<T>;Defined in: future.ts:81
Create a Future from an async function.
Prefer this over Future.make when the executor is async, as it properly propagates rejections instead of leaving the Future pending on unhandled errors.
Type Parameters
| Type Parameter |
|---|
T |
Parameters
| Parameter | Type |
|---|---|
fn | () => Promise<T> |
Returns
Future<T>
Example
const future = Future.fromAsync(async () => {
const data = await fetchSomething();
return data;
});fromPromise()
static fromPromise<T>(promise): Future<Result<T, unknown>>;Defined in: future.ts:38
Create a Future from a Promise
Type Parameters
| Type Parameter |
|---|
T |
Parameters
| Parameter | Type |
|---|---|
promise | Promise<T> |
Returns
make()
static make<T>(executor): Future<T>;Defined in: future.ts:21
Create a Future from an executor function
Type Parameters
| Type Parameter |
|---|
T |
Parameters
| Parameter | Type |
|---|---|
executor | (resolve) => void |
Returns
Future<T>
race()
static race<T>(futures): Future<T>;Defined in: future.ts:63
Race multiple Futures
Type Parameters
| Type Parameter |
|---|
T |
Parameters
| Parameter | Type |
|---|---|
futures | Future<T>[] |
Returns
Future<T>
reject()
static reject<T>(error): Future<T>;Defined in: future.ts:49
Create a rejected Future
Type Parameters
| Type Parameter | Default type |
|---|---|
T | never |
Parameters
| Parameter | Type |
|---|---|
error | unknown |
Returns
Future<T>
value()
static value<T>(value): Future<T>;Defined in: future.ts:31
Create a Future from a value
Type Parameters
| Type Parameter |
|---|
T |
Parameters
| Parameter | Type |
|---|---|
value | T |
Returns
Future<T>
Ok
Defined in: result.ts:15
Ok variant representing a successful result
Type Parameters
| Type Parameter |
|---|
T |
E |
Constructors
Constructor
new Ok<T, E>(value): Ok<T, E>;Defined in: result.ts:19
Parameters
| Parameter | Type |
|---|---|
value | T |
Returns
Ok<T, E>
Properties
| Property | Modifier | Type | Defined in |
|---|---|---|---|
tag | readonly | "Ok" | result.ts:16 |
value | readonly | T | result.ts:17 |
Methods
flatMap()
flatMap<U>(fn): Result<U, E>;Defined in: result.ts:39
Type Parameters
| Type Parameter |
|---|
U |
Parameters
| Parameter | Type |
|---|---|
fn | (value) => Result<U, E> |
Returns
Result<U, E>
flatMapOk()
flatMapOk<U>(fn): Result<U, E>;Defined in: result.ts:43
Type Parameters
| Type Parameter |
|---|
U |
Parameters
| Parameter | Type |
|---|---|
fn | (value) => Result<U, E> |
Returns
Result<U, E>
getOr()
getOr(_defaultValue): T;Defined in: result.ts:47
Parameters
| Parameter | Type |
|---|---|
_defaultValue | T |
Returns
T
getWithDefault()
getWithDefault(_defaultValue): T;Defined in: result.ts:51
Parameters
| Parameter | Type |
|---|---|
_defaultValue | T |
Returns
T
isError()
isError(): this is Err<T, E>;Defined in: result.ts:27
Returns
this is Err<T, E>
isOk()
isOk(): this is Ok<T, E>;Defined in: result.ts:23
Returns
this is Ok<T, E>
map()
map<U>(fn): Result<U, E>;Defined in: result.ts:31
Type Parameters
| Type Parameter |
|---|
U |
Parameters
| Parameter | Type |
|---|---|
fn | (value) => U |
Returns
Result<U, E>
mapError()
mapError<F>(_fn): Result<T, F>;Defined in: result.ts:35
Type Parameters
| Type Parameter |
|---|
F |
Parameters
| Parameter | Type |
|---|---|
_fn | (error) => F |
Returns
Result<T, F>
match()
match<R>(pattern): R;Defined in: result.ts:55
Type Parameters
| Type Parameter |
|---|
R |
Parameters
| Parameter | Type |
|---|---|
pattern | { Error: (error) => R; Ok: (value) => R; } |
pattern.Error | (error) => R |
pattern.Ok | (value) => R |
Returns
R
toOption()
toOption(): Option<T>;Defined in: result.ts:59
Returns
Option<T>
Type Aliases
Option
type Option<T> =
| {
tag: "Some";
value: T;
}
| {
tag: "None";
};Defined in: result.ts:122
Option type for Result.toOption()
Type Parameters
| Type Parameter |
|---|
T |
Result
type Result<T, E> = Ok<T, E> | Err<T, E>;Defined in: result.ts:10
Result type representing either a successful value (Ok) or an error (Err) This is a custom implementation compatible with Temporal workflows
Note: The error variant class is named Err internally to avoid shadowing the global Error constructor. The public API still uses Result.Error() as a factory and isError() as a type guard for backward compatibility.
Type Parameters
| Type Parameter |
|---|
T |
E |
Variables
Result
Result: object;Defined in: result.ts:10
Result namespace with factory methods
Type Declaration
| Name | Type | Defined in |
|---|---|---|
all() | <T, E>(results) => Result<T[], E> | result.ts:152 |
Error() | <T, E>(error) => Result<T, E> | result.ts:129 |
fromAsyncExecution() | <T, E>(fn) => Promise<Result<T, E>> | result.ts:142 |
fromExecution() | <T, E>(fn) => Result<T, E> | result.ts:134 |
isError() | <T, E>(result) => result is Err<T, E> | result.ts:132 |
isOk() | <T, E>(result) => result is Ok<T, E> | result.ts:131 |
Ok() | <T, E>(value) => Result<T, E> | result.ts:128 |