refactor(channels): unify target parsing

This commit is contained in:
Peter Steinberger
2026-01-18 00:31:37 +00:00
parent d593a809f0
commit 79a44d0da4
18 changed files with 274 additions and 195 deletions

View File

@@ -0,0 +1,16 @@
import { parseSlackTarget } from "../../../slack/targets.js";
export function normalizeSlackMessagingTarget(raw: string): string | undefined {
const target = parseSlackTarget(raw, { defaultKind: "channel" });
return target?.normalized;
}
export function looksLikeSlackTargetId(raw: string): boolean {
const trimmed = raw.trim();
if (!trimmed) return false;
if (/^<@([A-Z0-9]+)>$/i.test(trimmed)) return true;
if (/^(user|channel):/i.test(trimmed)) return true;
if (/^slack:/i.test(trimmed)) return true;
if (/^[@#]/.test(trimmed)) return true;
return /^[CUWGD][A-Z0-9]{8,}$/i.test(trimmed);
}