UNPKG

@convex-dev/better-auth

Version:
59 lines 2.29 kB
import { createCookieGetter } from "better-auth/cookies"; import { betterFetch } from "@better-fetch/fetch"; import { JWT_COOKIE_NAME } from "../plugins/convex"; import { oneLine } from "common-tags"; export const getCookieName = async (createAuth) => { const auth = createAuth({}); const createCookie = createCookieGetter(auth.options); const cookie = createCookie(JWT_COOKIE_NAME); return cookie.name; }; const requireConvexSiteUrl = (opts, calledFrom) => { if (!opts.convexSiteUrl) { throw new Error(`${calledFrom}: opts.convexSiteUrl is required`); } if (opts.verbose) { console.log(`${calledFrom}: opts.convexSiteUrl: ${opts.convexSiteUrl}`); } return opts.convexSiteUrl; }; export const fetchSession = async (request, opts) => { if (!request) { throw new Error("No request found"); } const convexSiteUrl = requireConvexSiteUrl(opts, "fetchSession"); const { data: session } = await betterFetch("/api/auth/get-session", { baseURL: convexSiteUrl, headers: { cookie: request.headers.get("cookie") ?? "", }, }); return { session, }; }; export const reactStartHandler = (request, opts) => { const requestUrl = new URL(request.url); const convexSiteUrl = requireConvexSiteUrl(opts, "reactStartHandler"); const nextUrl = `${convexSiteUrl}${requestUrl.pathname}${requestUrl.search}`; request.headers.set("accept-encoding", "application/json"); return fetch(nextUrl, new Request(request, { redirect: "manual" })); }; export const reactStartHelpers = (createAuth, opts) => { if (!opts.convexSiteUrl) { throw new Error("opts.convexSiteUrl is required"); } if (opts.convexSiteUrl.endsWith(".convex.cloud")) { throw new Error(oneLine(` opts.convexSiteUrl ends with .convex.cloud, which is your cloud URL. Use your Convex site URL instead. https://docs.convex.dev/production/environment-variables#system-environment-variables `)); } return { fetchSession: (request) => fetchSession(request, opts), reactStartHandler: (request) => reactStartHandler(request, opts), getCookieName: () => getCookieName(createAuth), }; }; //# sourceMappingURL=index.js.map