A collection of examples for the most common use cases.

- Authorization Code Flow - OpenID Connect [source](code.ts), or plain OAuth 2 [source](oauth.ts)
- Public Client Authorization Code Flow - [source](public.ts) | [diff from code flow](public.diff)
- Private Key JWT Client Authentication - [source](private_key_jwt.ts) | [diff from code flow](private_key_jwt.diff)
- DPoP - [source](dpop.ts) | [diff from code flow](dpop.diff)
- Pushed Authorization Request (PAR) - [source](par.ts) | [diff from code flow](par.diff)
- Client Credentials Grant - [source](client_credentials.ts)
- Device Authorization Grant - [source](device_authorization_grant.ts)
- FAPI 2.0 (Private Key JWT, PAR, DPoP) - [source](fapi2.ts)
- FAPI 2.0 Message Signing (Private Key JWT, PAR, DPoP, JAR, JARM) - [source](fapi2-message-signing.ts) | [diff](fapi2-message-signing.diff)
