export const SECRET_ASSIGNMENT_RE = /\b([A-Z0-9_]*(?:TOKEN|SECRET|PASSWORD|API_KEY|AUTH|PRIVATE_KEY)[A-Z0-9_]*)\s*=\s*([^\s"'`]+)/gi; export const SECRET_VALUE_RE = /\b(?:sk-[A-Za-z0-9_-]{12,}|gh[pousr]_[A-Za-z0-9_]{12,}|xox[baprs]-[A-Za-z0-9-]{12,}|eyJ[A-Za-z0-9_-]{20,}\.[A-Za-z0-9_-]{20,}\.[A-Za-z0-9_-]{10,})\b/g; export function redactSecretsForMarkdown(value: string): string { return value .replace(SECRET_ASSIGNMENT_RE, (_m, key) => `${key}=***`) .replace(SECRET_VALUE_RE, '***'); } export function redactSecretsForPreview(value: string): string { return value .replace(SECRET_ASSIGNMENT_RE, '$1=') .replace(SECRET_VALUE_RE, ''); }