Some checks failed
Release Workflow / determine-release-type (push) Has been cancelled
Release Workflow / checks (push) Has been cancelled
Release Workflow / e2e-tests (push) Has been cancelled
Release Workflow / build-images (push) Has been cancelled
Release Workflow / publish-release (push) Has been cancelled
32 lines
992 B
TypeScript
32 lines
992 B
TypeScript
import { HttpError } from "http-errors-enhanced";
|
|
import { sanitizeSensitiveData } from "@zerobyte/core/node";
|
|
import { ResticError } from "@zerobyte/core/restic";
|
|
|
|
export const handleServiceError = (error: unknown) => {
|
|
if (error instanceof HttpError) {
|
|
return { message: sanitizeSensitiveData(error.message), status: error.statusCode };
|
|
}
|
|
|
|
if (error instanceof ResticError) {
|
|
return {
|
|
message: sanitizeSensitiveData(error.summary),
|
|
details: error.details ? sanitizeSensitiveData(error.details) : undefined,
|
|
status: 500 as const,
|
|
};
|
|
}
|
|
|
|
return { message: sanitizeSensitiveData(toMessage(error)), status: 500 as const };
|
|
};
|
|
|
|
export const toMessage = (err: unknown): string => {
|
|
const message = err instanceof Error ? err.message : String(err);
|
|
return sanitizeSensitiveData(message);
|
|
};
|
|
|
|
export const toErrorDetails = (err: unknown): string => {
|
|
if (err instanceof ResticError) {
|
|
return sanitizeSensitiveData(err.details || err.summary);
|
|
}
|
|
|
|
return toMessage(err);
|
|
};
|