Skip to content

@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
ts
new Err<T, E>(error): Err<T, E>;

Defined in: result.ts:74

Parameters
ParameterType
errorE
Returns

Err<T, E>

Properties

PropertyModifierTypeDefined in
errorreadonlyEresult.ts:72
tagreadonly"Error"result.ts:71

Methods

flatMap()
ts
flatMap<U>(_fn): Result<U, E>;

Defined in: result.ts:94

Type Parameters
Type Parameter
U
Parameters
ParameterType
_fn(value) => Result<U, E>
Returns

Result<U, E>

flatMapOk()
ts
flatMapOk<U>(_fn): Result<U, E>;

Defined in: result.ts:98

Type Parameters
Type Parameter
U
Parameters
ParameterType
_fn(value) => Result<U, E>
Returns

Result<U, E>

getOr()
ts
getOr(defaultValue): T;

Defined in: result.ts:102

Parameters
ParameterType
defaultValueT
Returns

T

getWithDefault()
ts
getWithDefault(defaultValue): T;

Defined in: result.ts:106

Parameters
ParameterType
defaultValueT
Returns

T

isError()
ts
isError(): this is Err<T, E>;

Defined in: result.ts:82

Returns

this is Err<T, E>

isOk()
ts
isOk(): this is Ok<T, E>;

Defined in: result.ts:78

Returns

this is Ok<T, E>

map()
ts
map<U>(_fn): Result<U, E>;

Defined in: result.ts:86

Type Parameters
Type Parameter
U
Parameters
ParameterType
_fn(value) => U
Returns

Result<U, E>

mapError()
ts
mapError<F>(fn): Result<T, F>;

Defined in: result.ts:90

Type Parameters
Type Parameter
F
Parameters
ParameterType
fn(error) => F
Returns

Result<T, F>

match()
ts
match<R>(pattern): R;

Defined in: result.ts:110

Type Parameters
Type Parameter
R
Parameters
ParameterType
pattern{ Error: (error) => R; Ok: (value) => R; }
pattern.Error(error) => R
pattern.Ok(value) => R
Returns

R

toOption()
ts
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

PropertyModifierTypeDefault valueDefined in
[toStringTag]readonly"Future""Future"future.ts:12

Methods

catch()
ts
catch<TResult>(onRejected?): Promise<T | TResult>;

Defined in: future.ts:189

Attaches a callback for only the rejection of the Promise.

Type Parameters
Type ParameterDefault type
TResultnever
Parameters
ParameterType
onRejected?(reason) => TResult | PromiseLike<TResult> | null
Returns

Promise<T | TResult>

A Promise for the completion of the callback.

Implementation of
ts
Promise.catch
finally()
ts
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
ParameterType
onFinally?() => void | null
Returns

Promise<T>

A Promise for the completion of the callback.

Implementation of
ts
Promise.finally
flatMap()
ts
flatMap<U>(fn): Future<U>;

Defined in: future.ts:95

FlatMap the result of the Future

Type Parameters
Type Parameter
U
Parameters
ParameterType
fn(value) => Future<U>
Returns

Future<U>

flatMapOk()
ts
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
ParameterType
thisFuture<Result<V, E>>
fn(value) => Future<Result<U, E>>
Returns

Future<Result<U, E>>

map()
ts
map<U>(fn): Future<U>;

Defined in: future.ts:88

Map the result of the Future

Type Parameters
Type Parameter
U
Parameters
ParameterType
fn(value) => U
Returns

Future<U>

mapError()
ts
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
ParameterType
thisFuture<Result<V, E>>
fn(error) => F
Returns

Future<Result<V, F>>

mapOk()
ts
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
ParameterType
thisFuture<Result<V, E>>
fn(value) => U
Returns

Future<Result<U, E>>

tap()
ts
tap(fn): Future<T>;

Defined in: future.ts:143

Tap into the Future value without changing it

Parameters
ParameterType
fn(value) => void
Returns

Future<T>

tapError()
ts
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
ParameterType
thisFuture<Result<V, E>>
fn(error) => void
Returns

Future<Result<V, E>>

tapOk()
ts
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
ParameterType
thisFuture<Result<V, E>>
fn(value) => void
Returns

Future<Result<V, E>>

then()
ts
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 ParameterDefault type
TResult1T
TResult2never
Parameters
ParameterType
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
ts
Promise.then
toPromise()
ts
toPromise(): Promise<T>;

Defined in: future.ts:175

Convert to a Promise (for await)

Returns

Promise<T>

all()
ts
static all<T>(futures): Future<T[]>;

Defined in: future.ts:56

Combine multiple Futures into one

Type Parameters
Type Parameter
T
Parameters
ParameterType
futuresFuture<T>[]
Returns

Future<T[]>

fromAsync()
ts
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
ParameterType
fn() => Promise<T>
Returns

Future<T>

Example
ts
const future = Future.fromAsync(async () => {
  const data = await fetchSomething();
  return data;
});
fromPromise()
ts
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
ParameterType
promisePromise<T>
Returns

Future<Result<T, unknown>>

make()
ts
static make<T>(executor): Future<T>;

Defined in: future.ts:21

Create a Future from an executor function

Type Parameters
Type Parameter
T
Parameters
ParameterType
executor(resolve) => void
Returns

Future<T>

race()
ts
static race<T>(futures): Future<T>;

Defined in: future.ts:63

Race multiple Futures

Type Parameters
Type Parameter
T
Parameters
ParameterType
futuresFuture<T>[]
Returns

Future<T>

reject()
ts
static reject<T>(error): Future<T>;

Defined in: future.ts:49

Create a rejected Future

Type Parameters
Type ParameterDefault type
Tnever
Parameters
ParameterType
errorunknown
Returns

Future<T>

value()
ts
static value<T>(value): Future<T>;

Defined in: future.ts:31

Create a Future from a value

Type Parameters
Type Parameter
T
Parameters
ParameterType
valueT
Returns

Future<T>


Ok

Defined in: result.ts:15

Ok variant representing a successful result

Type Parameters

Type Parameter
T
E

Constructors

Constructor
ts
new Ok<T, E>(value): Ok<T, E>;

Defined in: result.ts:19

Parameters
ParameterType
valueT
Returns

Ok<T, E>

Properties

PropertyModifierTypeDefined in
tagreadonly"Ok"result.ts:16
valuereadonlyTresult.ts:17

Methods

flatMap()
ts
flatMap<U>(fn): Result<U, E>;

Defined in: result.ts:39

Type Parameters
Type Parameter
U
Parameters
ParameterType
fn(value) => Result<U, E>
Returns

Result<U, E>

flatMapOk()
ts
flatMapOk<U>(fn): Result<U, E>;

Defined in: result.ts:43

Type Parameters
Type Parameter
U
Parameters
ParameterType
fn(value) => Result<U, E>
Returns

Result<U, E>

getOr()
ts
getOr(_defaultValue): T;

Defined in: result.ts:47

Parameters
ParameterType
_defaultValueT
Returns

T

getWithDefault()
ts
getWithDefault(_defaultValue): T;

Defined in: result.ts:51

Parameters
ParameterType
_defaultValueT
Returns

T

isError()
ts
isError(): this is Err<T, E>;

Defined in: result.ts:27

Returns

this is Err<T, E>

isOk()
ts
isOk(): this is Ok<T, E>;

Defined in: result.ts:23

Returns

this is Ok<T, E>

map()
ts
map<U>(fn): Result<U, E>;

Defined in: result.ts:31

Type Parameters
Type Parameter
U
Parameters
ParameterType
fn(value) => U
Returns

Result<U, E>

mapError()
ts
mapError<F>(_fn): Result<T, F>;

Defined in: result.ts:35

Type Parameters
Type Parameter
F
Parameters
ParameterType
_fn(error) => F
Returns

Result<T, F>

match()
ts
match<R>(pattern): R;

Defined in: result.ts:55

Type Parameters
Type Parameter
R
Parameters
ParameterType
pattern{ Error: (error) => R; Ok: (value) => R; }
pattern.Error(error) => R
pattern.Ok(value) => R
Returns

R

toOption()
ts
toOption(): Option<T>;

Defined in: result.ts:59

Returns

Option<T>

Type Aliases

Option

ts
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

ts
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

ts
Result: object;

Defined in: result.ts:10

Result namespace with factory methods

Type Declaration

NameTypeDefined 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

Released under the MIT License.