sanitize static method

dynamic sanitize(
  1. dynamic value
)

Recursively strips control characters and trims strings within a payload (map, list, or scalar), returning a sanitized deep copy. This is a lightweight defense against injection-style payloads — it does not replace proper output encoding at the data-sink layer.

Implementation

static dynamic sanitize(dynamic value) {
  if (value is String) {
    final withoutControlChars = value.replaceAll(
      RegExp(r'[\x00-\x08\x0B\x0C\x0E-\x1F]'),
      '',
    );
    return withoutControlChars.trim();
  }
  if (value is Map) {
    return value.map((key, val) => MapEntry(key, sanitize(val)));
  }
  if (value is List) {
    return value.map(sanitize).toList();
  }
  return value;
}