{"version":3,"file":"update-session.mjs","names":[],"sources":["../../../src/api/routes/update-session.ts"],"sourcesContent":["import type { BetterAuthOptions } from \"@better-auth/core\";\nimport { createAuthEndpoint } from \"@better-auth/core/api\";\nimport { APIError, BASE_ERROR_CODES } from \"@better-auth/core/error\";\nimport * as z from \"zod\";\nimport { setSessionCookie } from \"../../cookies\";\nimport { parseSessionInput, parseSessionOutput } from \"../../db/schema\";\nimport type { AdditionalSessionFieldsInput } from \"../../types\";\nimport { sessionMiddleware } from \"./session\";\n\nconst updateSessionBodySchema = z.record(\n\tz.string().meta({\n\t\tdescription: \"Field name must be a string\",\n\t}),\n\tz.any(),\n);\n\nexport const updateSession = <O extends BetterAuthOptions>() =>\n\tcreateAuthEndpoint(\n\t\t\"/update-session\",\n\t\t{\n\t\t\tmethod: \"POST\",\n\t\t\toperationId: \"updateSession\",\n\t\t\tbody: updateSessionBodySchema,\n\t\t\tuse: [sessionMiddleware],\n\t\t\tmetadata: {\n\t\t\t\t$Infer: {\n\t\t\t\t\tbody: {} as Partial<AdditionalSessionFieldsInput<O>>,\n\t\t\t\t},\n\t\t\t\topenapi: {\n\t\t\t\t\toperationId: \"updateSession\",\n\t\t\t\t\tdescription: \"Update the current session\",\n\t\t\t\t\tresponses: {\n\t\t\t\t\t\t\"200\": {\n\t\t\t\t\t\t\tdescription: \"Success\",\n\t\t\t\t\t\t\tcontent: {\n\t\t\t\t\t\t\t\t\"application/json\": {\n\t\t\t\t\t\t\t\t\tschema: {\n\t\t\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\t\t\tsession: {\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\t\t\t\t\t$ref: \"#/components/schemas/Session\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tasync (ctx) => {\n\t\t\tconst body = ctx.body as Record<string, any>;\n\n\t\t\tif (typeof body !== \"object\" || Array.isArray(body)) {\n\t\t\t\tthrow APIError.from(\n\t\t\t\t\t\"BAD_REQUEST\",\n\t\t\t\t\tBASE_ERROR_CODES.BODY_MUST_BE_AN_OBJECT,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst session = ctx.context.session;\n\t\t\tconst additionalFields = parseSessionInput(\n\t\t\t\tctx.context.options,\n\t\t\t\tbody,\n\t\t\t\t\"update\",\n\t\t\t);\n\n\t\t\tif (Object.keys(additionalFields).length === 0) {\n\t\t\t\tthrow APIError.fromStatus(\"BAD_REQUEST\", {\n\t\t\t\t\tmessage: \"No fields to update\",\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst updatedSession = await ctx.context.internalAdapter.updateSession(\n\t\t\t\tsession.session.token,\n\t\t\t\t{\n\t\t\t\t\t...additionalFields,\n\t\t\t\t\tupdatedAt: new Date(),\n\t\t\t\t},\n\t\t\t);\n\n\t\t\tconst newSession = updatedSession ?? {\n\t\t\t\t...session.session,\n\t\t\t\t...additionalFields,\n\t\t\t\tupdatedAt: new Date(),\n\t\t\t};\n\n\t\t\tawait setSessionCookie(ctx, {\n\t\t\t\tsession: newSession,\n\t\t\t\tuser: session.user,\n\t\t\t});\n\n\t\t\treturn ctx.json({\n\t\t\t\tsession: parseSessionOutput(ctx.context.options, newSession),\n\t\t\t});\n\t\t},\n\t);\n"],"mappings":";;;;;;;;AASA,MAAM,0BAA0B,EAAE,OACjC,EAAE,QAAQ,CAAC,KAAK,EACf,aAAa,+BACb,CAAC,EACF,EAAE,KAAK,CACP;AAED,MAAa,sBACZ,mBACC,mBACA;CACC,QAAQ;CACR,aAAa;CACb,MAAM;CACN,KAAK,CAAC,kBAAkB;CACxB,UAAU;EACT,QAAQ,EACP,MAAM,EAAE,EACR;EACD,SAAS;GACR,aAAa;GACb,aAAa;GACb,WAAW,EACV,OAAO;IACN,aAAa;IACb,SAAS,EACR,oBAAoB,EACnB,QAAQ;KACP,MAAM;KACN,YAAY,EACX,SAAS;MACR,MAAM;MACN,MAAM;MACN,EACD;KACD,EACD,EACD;IACD,EACD;GACD;EACD;CACD,EACD,OAAO,QAAQ;CACd,MAAM,OAAO,IAAI;AAEjB,KAAI,OAAO,SAAS,YAAY,MAAM,QAAQ,KAAK,CAClD,OAAM,SAAS,KACd,eACA,iBAAiB,uBACjB;CAGF,MAAM,UAAU,IAAI,QAAQ;CAC5B,MAAM,mBAAmB,kBACxB,IAAI,QAAQ,SACZ,MACA,SACA;AAED,KAAI,OAAO,KAAK,iBAAiB,CAAC,WAAW,EAC5C,OAAM,SAAS,WAAW,eAAe,EACxC,SAAS,uBACT,CAAC;CAWH,MAAM,aARiB,MAAM,IAAI,QAAQ,gBAAgB,cACxD,QAAQ,QAAQ,OAChB;EACC,GAAG;EACH,2BAAW,IAAI,MAAM;EACrB,CACD,IAEoC;EACpC,GAAG,QAAQ;EACX,GAAG;EACH,2BAAW,IAAI,MAAM;EACrB;AAED,OAAM,iBAAiB,KAAK;EAC3B,SAAS;EACT,MAAM,QAAQ;EACd,CAAC;AAEF,QAAO,IAAI,KAAK,EACf,SAAS,mBAAmB,IAAI,QAAQ,SAAS,WAAW,EAC5D,CAAC;EAEH"}