replies timeline only, appview-less bluesky client
1export type Result<T, E> = 2 | { 3 ok: true; 4 value: T; 5 } 6 | { 7 ok: false; 8 error: E; 9 }; 10 11export const ok = <T, E>(value: T): Result<T, E> => { 12 return { ok: true, value }; 13}; 14export const err = <T, E>(error: E): Result<T, E> => { 15 return { ok: false, error }; 16}; 17export const expect = <T, E>(v: Result<T, E>, msg: string = 'expected result to not be error:') => { 18 if (v.ok) { 19 return v.value; 20 } 21 throw `${msg} ${v.error}`; 22}; 23export const map = <T, E, U>(v: Result<T, E>, fn: (value: T) => U): Result<U, E> => { 24 if (v.ok) { 25 return ok(fn(v.value)); 26 } 27 return err(v.error); 28};