in src/jwt.ts [48:82]
function assertJwtPayload(
payload: ReturnType<typeof safeJsonParse>
): asserts payload is JwtPayload {
if (!isJsonObject(payload)) {
throw new JwtParseError("JWT payload is not an object");
}
if (payload.exp !== undefined && !Number.isFinite(payload.exp)) {
throw new JwtParseError("JWT payload exp claim is not a number");
}
if (payload.iss !== undefined && typeof payload.iss !== "string") {
throw new JwtParseError("JWT payload iss claim is not a string");
}
if (
payload.aud !== undefined &&
typeof payload.aud !== "string" &&
(!Array.isArray(payload.aud) ||
payload.aud.some((aud) => typeof aud !== "string"))
) {
throw new JwtParseError(
"JWT payload aud claim is not a string or array of strings"
);
}
if (payload.nbf !== undefined && !Number.isFinite(payload.nbf)) {
throw new JwtParseError("JWT payload nbf claim is not a number");
}
if (payload.iat !== undefined && !Number.isFinite(payload.iat)) {
throw new JwtParseError("JWT payload iat claim is not a number");
}
if (payload.scope !== undefined && typeof payload.scope !== "string") {
throw new JwtParseError("JWT payload scope claim is not a string");
}
if (payload.jti !== undefined && typeof payload.jti !== "string") {
throw new JwtParseError("JWT payload jti claim is not a string");
}
}