omniroute / src /lib /providers /webCookieAuth.ts
igorkurgin's picture
Deploy OmniRoute to Hugging Face Space
35743bd verified
Raw
History Blame Contribute Delete
2 kB
export function stripCookieInputPrefix(rawValue: string): string {
const trimmed = (rawValue || "").trim();
if (!trimmed) return "";
const withoutBearer = trimmed.replace(/^bearer\s+/i, "");
return withoutBearer.replace(/^cookie:/i, "").trim();
}
export function normalizeSessionCookieHeader(rawValue: string, defaultCookieName: string): string {
const normalized = stripCookieInputPrefix(rawValue);
if (!normalized) return "";
if (normalized.includes("=")) {
return normalized;
}
return `${defaultCookieName}=${normalized}`;
}
/**
* Extract a single cookie's value from whatever the user pasted. Handles:
* - bare value: "eyJ0eXAi..." → "eyJ0eXAi..."
* - single pair: "sso=eyJ0eXAi..." → "eyJ0eXAi..."
* - full DevTools cookie blob: "foo=1; sso=eyJ...; bar=2" → "eyJ..."
* Returns "" if a blob is given that does not contain the named cookie.
*/
export function extractCookieValue(rawValue: string, cookieName: string): string {
const trimmed = stripCookieInputPrefix(rawValue);
if (!trimmed) return "";
if (trimmed.includes(";")) {
const escaped = cookieName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
const match = trimmed.match(new RegExp("(?:^|;\\s*)" + escaped + "=([^;\\s]+)"));
return match ? match[1] : "";
}
const prefix = `${cookieName}=`;
if (trimmed.startsWith(prefix)) return trimmed.slice(prefix.length);
return trimmed;
}
export function normalizeSessionCookieHeaders(
rawValues: Array<string | null | undefined>,
defaultCookieName: string
): string[] {
const seen = new Set<string>();
const normalizedHeaders: string[] = [];
for (const rawValue of rawValues) {
if (typeof rawValue !== "string") continue;
const normalized = normalizeSessionCookieHeader(rawValue, defaultCookieName);
if (!normalized || seen.has(normalized)) continue;
seen.add(normalized);
normalizedHeaders.push(normalized);
}
return normalizedHeaders;
}