mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-15 12:00:43 +00:00
62 lines
1.7 KiB
TypeScript
62 lines
1.7 KiB
TypeScript
export function elide(text?: string, limit = 400) {
|
|
if (!text) {
|
|
return text;
|
|
}
|
|
if (text.length <= limit) {
|
|
return text;
|
|
}
|
|
return `${text.slice(0, limit)}… (truncated ${text.length - limit} chars)`;
|
|
}
|
|
|
|
export function isLikelyWhatsAppCryptoError(reason: unknown) {
|
|
const formatReason = (value: unknown): string => {
|
|
if (value == null) {
|
|
return "";
|
|
}
|
|
if (typeof value === "string") {
|
|
return value;
|
|
}
|
|
if (value instanceof Error) {
|
|
return `${value.message}\n${value.stack ?? ""}`;
|
|
}
|
|
if (typeof value === "object") {
|
|
try {
|
|
return JSON.stringify(value);
|
|
} catch {
|
|
return Object.prototype.toString.call(value);
|
|
}
|
|
}
|
|
if (typeof value === "number") {
|
|
return String(value);
|
|
}
|
|
if (typeof value === "boolean") {
|
|
return String(value);
|
|
}
|
|
if (typeof value === "bigint") {
|
|
return String(value);
|
|
}
|
|
if (typeof value === "symbol") {
|
|
return value.description ?? value.toString();
|
|
}
|
|
if (typeof value === "function") {
|
|
return value.name ? `[function ${value.name}]` : "[function]";
|
|
}
|
|
return Object.prototype.toString.call(value);
|
|
};
|
|
const raw =
|
|
reason instanceof Error ? `${reason.message}\n${reason.stack ?? ""}` : formatReason(reason);
|
|
const haystack = raw.toLowerCase();
|
|
const hasAuthError =
|
|
haystack.includes("unsupported state or unable to authenticate data") ||
|
|
haystack.includes("bad mac");
|
|
if (!hasAuthError) {
|
|
return false;
|
|
}
|
|
return (
|
|
haystack.includes("@whiskeysockets/baileys") ||
|
|
haystack.includes("baileys") ||
|
|
haystack.includes("noise-handler") ||
|
|
haystack.includes("aesdecryptgcm")
|
|
);
|
|
}
|