Spaces:
Paused
Paused
| 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); | |
| } | |