From 310d0a7324477079022b178f1a83161e9e61fb1d Mon Sep 17 00:00:00 2001 From: amankumarsingh77 Date: Sat, 2 May 2026 15:31:01 +0530 Subject: feat(util): add result, time, and paths primitives for v0.3 rewrite --- src/util/result.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 src/util/result.ts (limited to 'src/util/result.ts') diff --git a/src/util/result.ts b/src/util/result.ts new file mode 100644 index 0000000..ca57c2a --- /dev/null +++ b/src/util/result.ts @@ -0,0 +1,15 @@ +export type Result = + | { readonly success: true; readonly data: T } + | { readonly success: false; readonly error: E }; + +export const ok = (data: T): Result => ({ success: true, data }); +export const err = (error: E): Result => ({ success: false, error }); + +export const map = (r: Result, f: (t: T) => U): Result => + r.success ? ok(f(r.data)) : r; + +export const andThen = (r: Result, f: (t: T) => Result): Result => + r.success ? f(r.data) : r; + +export const mapErr = (r: Result, f: (e: E) => F): Result => + r.success ? r : err(f(r.error)); -- cgit v1.2.3