scrub function

Object? scrub(
  1. Object? payload, {
  2. List<String>? extraDenylist,
  3. ScrubOptions options = const ScrubOptions(),
})

Returns a sanitized deep copy of payload. extraDenylist may add key terms; it must not narrow the canonical list. options gates the value scrubbers (ScrubOptions.sendDefaultPii). Fail-open at the value level.

Implementation

Object? scrub(
  Object? payload, {
  List<String>? extraDenylist,
  ScrubOptions options = const ScrubOptions(),
}) {
  final denylist = <String>[...kDefaultDenylist];
  if (extraDenylist != null) {
    for (final t in extraDenylist) {
      final lower = t.toLowerCase();
      if (!denylist.contains(lower)) denylist.add(lower);
    }
  }
  final seen = <int>{};
  // scrubValues starts true at the root; entering an exempt subtree flips it.
  return _walk(payload, denylist, seen, options, true);
}