n8n/packages/workflow/src/result.ts
Tomi Turtiainen c078a516be
feat(core): Enforce config file permissions on startup (#11328)
Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <netroy@users.noreply.github.com>
2024-10-23 12:54:53 +03:00

31 lines
794 B
TypeScript

import { ensureError } from './errors';
export type ResultOk<T> = { ok: true; result: T };
export type ResultError<E> = { ok: false; error: E };
export type Result<T, E> = ResultOk<T> | ResultError<E>;
export const createResultOk = <T>(data: T): ResultOk<T> => ({
ok: true,
result: data,
});
export const createResultError = <E = unknown>(error: E): ResultError<E> => ({
ok: false,
error,
});
/**
* Executes the given function and converts it to a Result object.
*
* @example
* const result = toResult(() => fs.writeFileSync('file.txt', 'Hello, World!'));
*/
export const toResult = <T, E extends Error = Error>(fn: () => T): Result<T, E> => {
try {
return createResultOk<T>(fn());
} catch (e) {
const error = ensureError(e);
return createResultError<E>(error as E);
}
};