isolate-package
Version:
Isolate monorepo packages to form a self-contained deployable unit
26 lines (21 loc) • 665 B
text/typescript
type ErrorWithMessage = {
message: string;
};
export function getErrorMessage(error: unknown) {
return toErrorWithMessage(error).message;
}
function isErrorWithMessage(error: unknown): error is ErrorWithMessage {
return typeof error === "object" && error !== null && "message" in error;
}
function toErrorWithMessage(maybeError: unknown): ErrorWithMessage {
if (isErrorWithMessage(maybeError)) return maybeError;
try {
return new Error(JSON.stringify(maybeError));
} catch {
/**
* Fallback in case there’s an error in stringify which can happen with
* circular references.
*/
return new Error(String(maybeError));
}
}