@ocubist/error-alchemy
Version:
A powerful Node.js error-handling-framework with custom error types for easy debugging, enhanced error management, strong zod-support and useful quality-of-life-functionality for asserting and validating values.
31 lines (27 loc) • 887 B
text/typescript
import { Severity } from "../../severity/types";
import { TransmutedError } from "../../transmuted-errors/TransmutedError";
type AnyLogger = (err: unknown) => void;
export type CraftErrorLoggerProps = {
[key in Severity]?: AnyLogger;
} & { default: AnyLogger };
/**
* Crafts a new error logger with the given logger properties.
*
* @param {CraftErrorLoggerProps} props - The logger properties.
* @returns {(err: unknown) => void} The crafted error logger function.
*/
export const craftErrorLogger = (
props: CraftErrorLoggerProps
): ((err: unknown) => void) => {
return (err: unknown) => {
if (err instanceof TransmutedError) {
const severity = err.severity;
const severityLogger = props[severity];
if (severityLogger !== undefined) {
severityLogger(err);
} else props.default(err);
} else {
props.default(err);
}
};
};