Scope
Port Bun corpus position 4021, js/third_party/jsonwebtoken/jwt.hs.test.js.
Acceptance criteria
- HS signing rejects asymmetric keys, missing payloads, and non-plain options while defaulting to HS256 for valid calls.
- Valid secrets verify; wrong secrets, unsigned
nonetokens, null inputs, malformed/trailing-space tokens, and expired tokens fail through concrete JWT errors. ignoreExpirationand complete synchronous/callback paths remain correct.- HMAC key-policy failures retain code, algorithm/operation metadata, original cause, and operation-aware cause stacks.
- Focused, asymmetric/JWT regressions, and permanent diagnostics pass.