Query string parser
Which encoding when
- Telegram deep-link start parameters allow only A-Z, a-z, 0-9, _ and - up to 64 characters: Base64url without padding fits.
- Use encodeURIComponent for single query values; encodeURI leaves &, = and ? untouched and is only for whole URLs.
- Slack and many OAuth providers send form-encoded bodies where spaces are +.
- Base64 is not encryption. Anyone can decode it.
Related: Token and secret helper, ID generator.