"""Redact credential fields and URL authentication material before telemetry."""
import re
from urllib.parse import urlsplit,urlunsplit
SECRET=re.compile(r'password|secret|token|authorization|cookie|api.?key|credential|private.?key',re.I)
def clean(value):
    if isinstance(value,dict):return {str(k):('[REDACTED]' if SECRET.search(str(k)) else clean(v)) for k,v in value.items()}
    if isinstance(value,(list,tuple)):return [clean(v) for v in value]
    if isinstance(value,str) and value.startswith(('https://','http://')):
        try:
            u=urlsplit(value);host=u.hostname or '';port=u.port
            if ':' in host:host='['+host+']'
            return urlunsplit((u.scheme,host+(':'+str(port) if port else ''),u.path,'',''))
        except ValueError:return '[INVALID URL]'
    return value
