-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
This function can work well with chainP or tryCatch
It can be used to make sure an error is what we say it is. It can be implemented as following
import { UnknownError } from '@ts-task/task';
type Guard <G> = (val: any) => val is G;
export function asGuardedError<E> (guard: Guard<E>) {
return function (val: any): E | UnknownError {
if (guard(val)) {
return val;
} else {
return new UnknownError(val);
}
};
}And used like this
import * as fs from '@ts-task/fs';
import { tryCatch, asGuardedError } from '@ts-task/utils';
function isSyntaxError (error: any): error is SyntaxError {
return error instanceof SyntaxError;
}
const asSyntaxError = asGuardedError(isSyntaxError);
export const readConfig = (path: string) =>
fs.readFile(path).pipe(
map(buffer => buffer.toString()),
tryCatch(JSON.parse, asSyntaxError),
);Metadata
Metadata
Assignees
Labels
No labels