Add a byte-level percent-encoding codec. Uri.encodeComponent already exists in dart:core, so the value here is byte-level control — encoding arbitrary bytes (not just valid UTF-8 strings) and choosing the unreserved set.
Architecture fit
- Standalone byte loop; bypasses the bit-regrouping engine entirely.
- Codec class with configurable "unreserved" set (RFC 3986 default);
toPercent/fromPercent public API with codec: override.
Differential oracle: Uri.encodeComponent / Uri.decodeComponent for the UTF-8-safe subset.
Spec: RFC 3986 §2.1
Effort: S
Checklist
Add a byte-level percent-encoding codec.
Uri.encodeComponentalready exists indart:core, so the value here is byte-level control — encoding arbitrary bytes (not just valid UTF-8 strings) and choosing the unreserved set.Architecture fit
toPercent/fromPercentpublic API withcodec:override.Differential oracle:
Uri.encodeComponent/Uri.decodeComponentfor the UTF-8-safe subset.Spec: RFC 3986 §2.1
Effort: S
Checklist
Uri.*%, non-hex digits)