{"version":3,"file":"refresh.mjs","names":[],"sources":["../../../../../../src/astro/routes/api/oauth/token/refresh.ts"],"sourcesContent":["/**\n * POST /_emdash/api/oauth/token/refresh\n *\n * Exchange a refresh token for a new access token.\n * This is an unauthenticated endpoint (the caller presents the refresh token).\n */\n\nimport type { APIRoute } from \"astro\";\nimport { z } from \"zod\";\n\nimport { apiError, handleError, unwrapResult } from \"#api/error.js\";\nimport { handleTokenRefresh } from \"#api/handlers/device-flow.js\";\nimport { isParseError, parseBody } from \"#api/parse.js\";\n\nexport const prerender = false;\n\nconst refreshSchema = z.object({\n\trefresh_token: z.string().min(1),\n\tgrant_type: 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, refreshSchema);\n\t\tif (isParseError(body)) return body;\n\n\t\tconst result = await handleTokenRefresh(emdash.db, body);\n\t\treturn unwrapResult(result);\n\t} catch (error) {\n\t\treturn handleError(error, \"Failed to refresh token\", \"TOKEN_REFRESH_ERROR\");\n\t}\n};\n"],"mappings":";;;;;;;;;;;;AAcA,MAAa,YAAY;AAEzB,MAAM,gBAAgB,EAAE,OAAO;CAC9B,eAAe,EAAE,QAAQ,CAAC,IAAI,EAAE;CAChC,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE;CAC7B,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,cAAc;AACpD,MAAI,aAAa,KAAK,CAAE,QAAO;AAG/B,SAAO,aADQ,MAAM,mBAAmB,OAAO,IAAI,KAAK,CAC7B;UACnB,OAAO;AACf,SAAO,YAAY,OAAO,2BAA2B,sBAAsB"}