Spaces:
Paused
Paused
| 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") | |
| ); | |
| } | |