const add = (value?: string) => { if (!value) { return;
} if (seen.has(value)) { return;
}
seen.add(value);
};
for (const value of fromList) {
add(value);
}
add(primary); for (const value of fromPrefixed) {
add(value);
} for (const value of fallback) {
add(value);
} for (const value of manifestFallback) {
add(value);
}
return Array.from(seen);
}
export function collectAnthropicApiKeys(): string[] { return collectProviderApiKeys("anthropic");
}
export function collectGeminiApiKeys(): string[] { return collectProviderApiKeys("google");
}
export function isApiKeyRateLimitError(message: string): boolean { const lower = normalizeLowercaseStringOrEmpty(message); if (lower.includes("rate_limit")) { returntrue;
} if (lower.includes("rate limit")) { returntrue;
} if (lower.includes("429")) { returntrue;
} if (lower.includes("quota exceeded") || lower.includes("quota_exceeded")) { returntrue;
} if (lower.includes("resource exhausted") || lower.includes("resource_exhausted")) { returntrue;
} if (lower.includes("too many requests")) { returntrue;
} returnfalse;
}
export function isAnthropicRateLimitError(message: string): boolean { return isApiKeyRateLimitError(message);
}
export function isAnthropicBillingError(message: string): boolean { const lower = normalizeLowercaseStringOrEmpty(message); if (lower.includes("credit balance")) { returntrue;
} if (lower.includes("insufficient credit")) { returntrue;
} if (lower.includes("insufficient credits")) { returntrue;
} if (lower.includes("payment required")) { returntrue;
} if (lower.includes("billing") && lower.includes("disabled")) { returntrue;
} if (
/["']?(?:status|code)["']?\s*[:=]\s*402\b|\bhttp\s*402\b|\berror(?:\s+code)?\s*[:=]?\s*402\b|\b(?:got|returned|received)\s+(?:a\s+)?402\b|^\s*402\spayment/i.test(
lower,
)
) { returntrue;
} returnfalse;
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-06-10)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.