{"version":3,"file":"revoke.mjs","names":[],"sources":["../../../../../../src/astro/routes/api/oauth/token/revoke.ts"],"sourcesContent":["/**\n * POST /_emdash/api/oauth/token/revoke\n *\n * Revoke an access or refresh token (RFC 7009).\n * Always returns 200, even for invalid tokens.\n * This is an unauthenticated endpoint (the caller presents the token to revoke).\n */\n\nimport type { APIRoute } from \"astro\";\nimport { z } from \"zod\";\n\nimport { apiError, handleError, unwrapResult } from \"#api/error.js\";\nimport { handleTokenRevoke } from \"#api/handlers/device-flow.js\";\nimport { isParseError, parseBody } from \"#api/parse.js\";\n\nexport const prerender = false;\n\nconst revokeSchema = z.object({\n\ttoken: z.string().min(1),\n});\n\nexport const POST: APIRoute = async ({ request, locals }) => {\n\tconst { emdash } = locals;\n\n\tif (!emdash?.db) {\n\t\treturn apiError(\"NOT_CONFIGURED\", \"EmDash is not initialized\", 500);\n\t}\n\n\ttry {\n\t\tconst body = await parseBody(request, revokeSchema);\n\t\tif (isParseError(body)) return body;\n\n\t\tconst result = await handleTokenRevoke(emdash.db, body);\n\t\treturn unwrapResult(result);\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to revoke token\", \"TOKEN_REVOKE_ERROR\");\n\t}\n};\n"],"mappings":";;;;;;;;;;;;AAeA,MAAa,YAAY;AAEzB,MAAM,eAAe,EAAE,OAAO,EAC7B,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,EACxB,CAAC;AAEF,MAAa,OAAiB,OAAO,EAAE,SAAS,aAAa;CAC5D,MAAM,EAAE,WAAW;AAEnB,KAAI,CAAC,QAAQ,GACZ,QAAO,SAAS,kBAAkB,6BAA6B,IAAI;AAGpE,KAAI;EACH,MAAM,OAAO,MAAM,UAAU,SAAS,aAAa;AACnD,MAAI,aAAa,KAAK,CAAE,QAAO;AAG/B,SAAO,aADQ,MAAM,kBAAkB,OAAO,IAAI,KAAK,CAC5B;UACnB,OAAO;AACf,SAAO,YAAY,OAAO,0BAA0B,qBAAqB"}