import { Data } from "effect";
import { DEFAULT_ERROR_MESSAGE } from "#common/errors/error.constants.js";
import { errorEnsure } from "#common/errors/error.fns.js";
interface ErrorBaseProps {
message?: string;
cause?: Error["cause"];
metadata?: Record<string, unknown>;
}
export const ErrorBase = <Tag extends string>(tag: Tag) =>
class extends Data.TaggedError(tag)<ErrorBaseProps> {
constructor(args: ErrorBaseProps = { message: DEFAULT_ERROR_MESSAGE }) {
super(args);
}
public static fromUnknown(
unknown: unknown,
{ message, metadata }: Omit<ErrorBaseProps, "cause">,
) {
const error = errorEnsure(unknown);
return new this({
message: message ?? DEFAULT_ERROR_MESSAGE,
cause: error,
metadata: metadata ?? {},
});
}
};
import { Data } from "effect";
import { DEFAULT_ERROR_MESSAGE } from "#common/errors/error.constants.js";
import { errorEnsure } from "#common/errors/error.fns.js";
interface ErrorBaseProps {
message?: string;
cause?: Error["cause"];
metadata?: Record<string, unknown>;
}
export const ErrorBase = <Tag extends string>(tag: Tag) =>
class extends Data.TaggedError(tag)<ErrorBaseProps> {
constructor(args: ErrorBaseProps = { message: DEFAULT_ERROR_MESSAGE }) {
super(args);
}
public static fromUnknown(
unknown: unknown,
{ message, metadata }: Omit<ErrorBaseProps, "cause">,
) {
const error = errorEnsure(unknown);
return new this({
message: message ?? DEFAULT_ERROR_MESSAGE,
cause: error,
metadata: metadata ?? {},
});
}
};