79 lines
2.1 KiB
TypeScript
79 lines
2.1 KiB
TypeScript
export function normalizeMessageProvider(
|
|
raw?: string | null,
|
|
): string | undefined {
|
|
const normalized = raw?.trim().toLowerCase();
|
|
if (!normalized) return undefined;
|
|
if (normalized === "imsg") return "imessage";
|
|
if (normalized === "teams") return "msteams";
|
|
return normalized;
|
|
}
|
|
|
|
export const DELIVERABLE_MESSAGE_PROVIDERS = [
|
|
"whatsapp",
|
|
"telegram",
|
|
"discord",
|
|
"slack",
|
|
"signal",
|
|
"imessage",
|
|
"msteams",
|
|
] as const;
|
|
|
|
export type DeliverableMessageProvider =
|
|
(typeof DELIVERABLE_MESSAGE_PROVIDERS)[number];
|
|
|
|
export const INTERNAL_MESSAGE_PROVIDER = "webchat" as const;
|
|
export type InternalMessageProvider = typeof INTERNAL_MESSAGE_PROVIDER;
|
|
|
|
export type GatewayMessageProvider =
|
|
| DeliverableMessageProvider
|
|
| InternalMessageProvider;
|
|
|
|
export const GATEWAY_MESSAGE_PROVIDERS = [
|
|
...DELIVERABLE_MESSAGE_PROVIDERS,
|
|
"webchat",
|
|
] as const;
|
|
|
|
export const GATEWAY_AGENT_PROVIDER_ALIASES = ["imsg", "teams"] as const;
|
|
export type GatewayAgentProviderAlias =
|
|
(typeof GATEWAY_AGENT_PROVIDER_ALIASES)[number];
|
|
|
|
export type GatewayAgentProviderHint =
|
|
| GatewayMessageProvider
|
|
| "last"
|
|
| GatewayAgentProviderAlias;
|
|
|
|
export const GATEWAY_AGENT_PROVIDER_VALUES = [
|
|
...GATEWAY_MESSAGE_PROVIDERS,
|
|
"last",
|
|
...GATEWAY_AGENT_PROVIDER_ALIASES,
|
|
] as const;
|
|
|
|
export function isGatewayMessageProvider(
|
|
value: string,
|
|
): value is GatewayMessageProvider {
|
|
return (GATEWAY_MESSAGE_PROVIDERS as readonly string[]).includes(value);
|
|
}
|
|
|
|
export function isDeliverableMessageProvider(
|
|
value: string,
|
|
): value is DeliverableMessageProvider {
|
|
return (DELIVERABLE_MESSAGE_PROVIDERS as readonly string[]).includes(value);
|
|
}
|
|
|
|
export function resolveGatewayMessageProvider(
|
|
raw?: string | null,
|
|
): GatewayMessageProvider | undefined {
|
|
const normalized = normalizeMessageProvider(raw);
|
|
if (!normalized) return undefined;
|
|
return isGatewayMessageProvider(normalized) ? normalized : undefined;
|
|
}
|
|
|
|
export function resolveMessageProvider(
|
|
primary?: string | null,
|
|
fallback?: string | null,
|
|
): string | undefined {
|
|
return (
|
|
normalizeMessageProvider(primary) ?? normalizeMessageProvider(fallback)
|
|
);
|
|
}
|