(raw: unknown)
| 1 | import type { AuthJWTPayloadResult } from "./jwt-payload.types"; |
| 2 | |
| 3 | export const parseAuthJWTPayload = (raw: unknown): AuthJWTPayloadResult => { |
| 4 | if (raw === false || typeof raw !== "object" || raw === null) { |
| 5 | return { kind: "invalid" }; |
| 6 | } |
| 7 | |
| 8 | if (!("id" in raw) || !("aid" in raw)) { |
| 9 | return { kind: "invalid" }; |
| 10 | } |
| 11 | |
| 12 | const { id, aid } = raw; |
| 13 | |
| 14 | if (typeof id !== "string" || typeof aid !== "string") { |
| 15 | return { kind: "invalid" }; |
| 16 | } |
| 17 | |
| 18 | const jti = |
| 19 | "jti" in raw && typeof raw.jti === "string" && raw.jti !== "" |
| 20 | ? raw.jti |
| 21 | : null; |
| 22 | const issuedAt = |
| 23 | "iat" in raw && typeof raw.iat === "number" && Number.isFinite(raw.iat) |
| 24 | ? raw.iat |
| 25 | : null; |
| 26 | |
| 27 | return { kind: "ok", userId: id, accountId: aid, jti, issuedAt }; |
| 28 | }; |
no outgoing calls
no test coverage detected