homeio
PublicForked from doctor-io/homeio
errors.mjs
class HelperServiceError extends Error {
constructor(message, options = {}) {
super(message, {
cause: options.cause,
});
this.name = "HelperServiceError";
this.code = options.code ?? "internal_error";
this.statusCode = options.statusCode ?? 500;
}
}
function toCodeFromError(error) {
if (error instanceof HelperServiceError) return error;
if (error instanceof Error) {
const message = error.message.toLowerCase();
if (
message.includes("org.freedesktop.networkmanager") ||
message.includes("networkmanager") ||
message.includes("serviceunknown")
) {
return new HelperServiceError("NetworkManager is unavailable", {
code: "network_manager_unavailable",
statusCode: 503,
cause: error,
});
}
if (
message.includes("secrets") ||
message.includes("invalid password") ||
message.includes("authentication") ||
message.includes("802-11-wireless-security")
) {
return new HelperServiceError("Wi-Fi authentication failed", {
code: "auth_failed",
statusCode: 401,
cause: error,
});
}
}
return new HelperServiceError(
error instanceof Error ? error.message : "Unknown helper error",
{
code: "internal_error",
statusCode: 500,
cause: error,
},
);
}
export { HelperServiceError, toCodeFromError };