{"version":3,"file":"jwt.cjs","names":[],"sources":["../../src/auth/jwt.ts"],"sourcesContent":["export interface DecodedJWT {\n    header: Record<string, unknown>;\n    payload: Record<string, unknown> & { exp?: number; iat?: number; sub?: string };\n    signature: string;\n}\n\nfunction base64UrlDecode(input: string): string {\n    const padded = input.replace(/-/g, \"+\").replace(/_/g, \"/\");\n    const padding = padded.length % 4 === 0 ? \"\" : \"=\".repeat(4 - (padded.length % 4));\n    if (typeof atob !== \"undefined\") {\n        return atob(padded + padding);\n    }\n    return Buffer.from(padded + padding, \"base64\").toString(\"binary\");\n}\n\n/**\n * Decode a JWT into header/payload/signature. Does **not** verify the\n * signature — for that, do it server-side or use a JOSE library on the\n * client.\n *\n * @throws If the token shape is invalid (missing parts, bad JSON).\n */\nexport function decodeJWT(token: string): DecodedJWT {\n    const parts = token.split(\".\");\n    if (parts.length !== 3) throw new Error(\"Invalid JWT: must contain three segments.\");\n    const [headerSeg, payloadSeg, signature] = parts as [string, string, string];\n    try {\n        return {\n            header: JSON.parse(base64UrlDecode(headerSeg)),\n            payload: JSON.parse(base64UrlDecode(payloadSeg)),\n            signature,\n        };\n    } catch {\n        throw new Error(\"Invalid JWT: header or payload is not valid JSON.\");\n    }\n}\n\n/**\n * Return true when the JWT's `exp` claim is in the past (or missing).\n *\n * @param token - JWT to inspect.\n * @param leewaySeconds - Treat tokens expiring within this window as expired.\n */\nexport function isJWTExpired(token: string, leewaySeconds = 0): boolean {\n    try {\n        const { payload } = decodeJWT(token);\n        if (typeof payload.exp !== \"number\") return true;\n        const nowSeconds = Math.floor(Date.now() / 1000);\n        return payload.exp <= nowSeconds + leewaySeconds;\n    } catch {\n        return true;\n    }\n}\n"],"mappings":"AAMA,SAAS,EAAgB,EAAuB,CAC5C,IAAM,EAAS,EAAM,QAAQ,KAAM,GAAG,CAAC,CAAC,QAAQ,KAAM,GAAG,EACnD,EAAU,EAAO,OAAS,GAAM,EAAI,GAAK,IAAI,OAAO,EAAK,EAAO,OAAS,CAAE,EAIjF,OAHI,OAAO,KAAS,IACT,KAAK,EAAS,CAAO,EAEzB,OAAO,KAAK,EAAS,EAAS,QAAQ,CAAC,CAAC,SAAS,QAAQ,CACpE,CASA,SAAgB,EAAU,EAA2B,CACjD,IAAM,EAAQ,EAAM,MAAM,GAAG,EAC7B,GAAI,EAAM,SAAW,EAAG,MAAU,MAAM,2CAA2C,EACnF,GAAM,CAAC,EAAW,EAAY,GAAa,EAC3C,GAAI,CACA,MAAO,CACH,OAAQ,KAAK,MAAM,EAAgB,CAAS,CAAC,EAC7C,QAAS,KAAK,MAAM,EAAgB,CAAU,CAAC,EAC/C,WACJ,CACJ,MAAQ,CACJ,MAAU,MAAM,mDAAmD,CACvE,CACJ,CAQA,SAAgB,EAAa,EAAe,EAAgB,EAAY,CACpE,GAAI,CACA,GAAM,CAAE,WAAY,EAAU,CAAK,EACnC,GAAI,OAAO,EAAQ,KAAQ,SAAU,MAAO,GAC5C,IAAM,EAAa,KAAK,MAAM,KAAK,IAAI,EAAI,GAAI,EAC/C,OAAO,EAAQ,KAAO,EAAa,CACvC,MAAQ,CACJ,MAAO,EACX,CACJ"}