Files
openclaw/src/routing/account-lookup.ts
2026-04-07 11:18:18 +01:00

35 lines
1.1 KiB
TypeScript

import { normalizeLowercaseStringOrEmpty } from "../shared/string-coerce.js";
export function resolveAccountEntry<T>(
accounts: Record<string, T> | undefined,
accountId: string,
): T | undefined {
if (!accounts || typeof accounts !== "object") {
return undefined;
}
if (Object.hasOwn(accounts, accountId)) {
return accounts[accountId];
}
const normalized = normalizeLowercaseStringOrEmpty(accountId);
const matchKey = Object.keys(accounts).find(
(key) => normalizeLowercaseStringOrEmpty(key) === normalized,
);
return matchKey ? accounts[matchKey] : undefined;
}
export function resolveNormalizedAccountEntry<T>(
accounts: Record<string, T> | undefined,
accountId: string,
normalizeAccountId: (accountId: string) => string,
): T | undefined {
if (!accounts || typeof accounts !== "object") {
return undefined;
}
if (Object.hasOwn(accounts, accountId)) {
return accounts[accountId];
}
const normalized = normalizeAccountId(accountId);
const matchKey = Object.keys(accounts).find((key) => normalizeAccountId(key) === normalized);
return matchKey ? accounts[matchKey] : undefined;
}