export type UnipileToolkitSlug = | "gmail" | "outlook" | "linkedin" | "calendar" | "google-calendar" | "outlook-calendar"; const TOOLKIT_ALIASES: Record = { gmail: "gmail", outlook: "outlook", outlook365: "outlook", microsoftoutlook: "outlook", microsoft365: "outlook", office365: "outlook", linkedin: "linkedin", calendar: "calendar", googlecalendar: "google-calendar", outlookcalendar: "outlook-calendar", microsoftcalendar: "outlook-calendar", }; export function normalizeUnipileToolkitSlug( slug: string, ): UnipileToolkitSlug | null { const normalized = slug .trim() .toLowerCase() .replace(/[\s_-]+/g, ""); return Object.hasOwn(TOOLKIT_ALIASES, normalized) ? TOOLKIT_ALIASES[normalized] : null; } export type UnipileConnectKind = | { kind: "mailbox"; provider: "gmail" | "outlook" } | { kind: "calendar" } | { kind: "linkedin" }; export function unipileConnectKindFromToolkitSlug( slug: string, ): UnipileConnectKind | null { const toolkit = normalizeUnipileToolkitSlug(slug); if (toolkit === "gmail" || toolkit === "outlook") { return { kind: "mailbox", provider: toolkit }; } if ( toolkit === "calendar" || toolkit === "google-calendar" || toolkit === "outlook-calendar" ) { return { kind: "calendar" }; } return toolkit === "linkedin" ? { kind: "linkedin" } : null; }