function assertJwtPayload()

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");
  }
}