decentralised message store
1export type Ok<T = void> = T extends undefined
2 ? { ok: true }
3 : { ok: true; data: T };
4
5export type Err<E = void> = E extends undefined
6 ? { ok: false }
7 : { ok: false; error: E };
8
9export type Result<T = void, E = void> = Ok<T> | Err<E>;
10
11export const okResult = <T = void>(data?: T): Ok<T> =>
12 data === undefined
13 ? ({ ok: true } as Ok<T>)
14 : ({ ok: true, data } as Ok<T>);
15
16export const errResult = <E = void>(error?: E): Err<E> =>
17 error === undefined
18 ? ({ ok: false } as Err<E>)
19 : ({ ok: false, error } as Err<E>);