| import { isRecord } from "../../../utils.js"; |
| import type { ChannelAccountSnapshot, ChannelStatusIssue } from "../types.js"; |
| export { isRecord }; |
|
|
| export function asString(value: unknown): string | undefined { |
| return typeof value === "string" && value.trim().length > 0 ? value.trim() : undefined; |
| } |
|
|
| export function formatMatchMetadata(params: { |
| matchKey?: unknown; |
| matchSource?: unknown; |
| }): string | undefined { |
| const matchKey = |
| typeof params.matchKey === "string" |
| ? params.matchKey |
| : typeof params.matchKey === "number" |
| ? String(params.matchKey) |
| : undefined; |
| const matchSource = asString(params.matchSource); |
| const parts = [ |
| matchKey ? `matchKey=${matchKey}` : null, |
| matchSource ? `matchSource=${matchSource}` : null, |
| ].filter((entry): entry is string => Boolean(entry)); |
| return parts.length > 0 ? parts.join(" ") : undefined; |
| } |
|
|
| export function appendMatchMetadata( |
| message: string, |
| params: { matchKey?: unknown; matchSource?: unknown }, |
| ): string { |
| const meta = formatMatchMetadata(params); |
| return meta ? `${message} (${meta})` : message; |
| } |
|
|
| export function resolveEnabledConfiguredAccountId(account: { |
| accountId?: unknown; |
| enabled?: unknown; |
| configured?: unknown; |
| }): string | null { |
| const accountId = asString(account.accountId) ?? "default"; |
| const enabled = account.enabled !== false; |
| const configured = account.configured === true; |
| return enabled && configured ? accountId : null; |
| } |
|
|
| export function collectIssuesForEnabledAccounts< |
| T extends { accountId?: unknown; enabled?: unknown }, |
| >(params: { |
| accounts: ChannelAccountSnapshot[]; |
| readAccount: (value: ChannelAccountSnapshot) => T | null; |
| collectIssues: (params: { account: T; accountId: string; issues: ChannelStatusIssue[] }) => void; |
| }): ChannelStatusIssue[] { |
| const issues: ChannelStatusIssue[] = []; |
| for (const entry of params.accounts) { |
| const account = params.readAccount(entry); |
| if (!account || account.enabled === false) { |
| continue; |
| } |
| const accountId = asString(account.accountId) ?? "default"; |
| params.collectIssues({ account, accountId, issues }); |
| } |
| return issues; |
| } |
|
|