Files
OmniRoute/src/shared/utils/codexBaseUrl.ts
2026-07-23 08:53:03 -03:00

33 lines
1.0 KiB
TypeScript

export type CodexWireApi = "chat" | "responses";
function normalizeUrlPath(pathname: string, wireApi: CodexWireApi): string {
let path = pathname.replace(/\/+$/g, "");
if (wireApi === "responses") {
path = path.replace(/\/responses(?:\/.*)?$/i, "");
}
path = path.replace(/\/v1$/i, "").replace(/\/api$/i, "");
const v1Path = `${path}/v1`.replace(/\/{2,}/g, "/");
return v1Path.startsWith("/") ? v1Path : `/${v1Path}`;
}
export function normalizeCodexBaseUrl(baseUrl: string, wireApi: CodexWireApi = "chat"): string {
const trimmed = baseUrl.trim().replace(/\/+$/g, "");
if (!trimmed) return trimmed;
try {
const parsed = new URL(trimmed);
parsed.search = "";
parsed.hash = "";
parsed.pathname = normalizeUrlPath(parsed.pathname, wireApi);
return parsed.toString().replace(/\/+$/g, "");
} catch {
let normalized = trimmed;
if (wireApi === "responses") {
normalized = normalized.replace(/\/responses(?:\/.*)?$/i, "");
}
return normalized.replace(/\/v1$/i, "").replace(/\/api$/i, "") + "/v1";
}
}