Add Base62 and Base36 for URL shorteners, short DB IDs, and compact tokens.
Architecture fit
- Base36 is a thin wrapper over the existing
BigIntCodec — bytes → BigInt → radix-36 string, and back. Cheap ergonomic win.
- Base62 needs a leading-zero convention (like Base58) so that leading
0x00 bytes survive the BigInt round-trip; document the chosen convention.
- Public
toBase62/fromBase62, toBase36/fromBase36 with codec: overrides; exports in codecs_base.dart.
Differential oracle: cross-check Base36 against BigInt.toRadixString(36) for the numeric core; Base62 leading-zero behavior needs vendored vectors.
Effort: S–M
Checklist
Add Base62 and Base36 for URL shorteners, short DB IDs, and compact tokens.
Architecture fit
BigIntCodec— bytes → BigInt → radix-36 string, and back. Cheap ergonomic win.0x00bytes survive the BigInt round-trip; document the chosen convention.toBase62/fromBase62,toBase36/fromBase36withcodec:overrides; exports incodecs_base.dart.Differential oracle: cross-check Base36 against
BigInt.toRadixString(36)for the numeric core; Base62 leading-zero behavior needs vendored vectors.Effort: S–M
Checklist
BigIntCodec