UNPKG

better-auth

Version:

The most comprehensive authentication framework for TypeScript.

58 lines (57 loc) 1.73 kB
import { parseSetCookieHeader, toCookieOptions } from "../cookies/cookie-utils.mjs"; import { PACKAGE_VERSION } from "../version.mjs"; import { warnIfCookiePluginNotLast } from "./cookie-plugin-guard.mjs"; import { createAuthMiddleware } from "@better-auth/core/api"; //#region src/integrations/tanstack-start-solid.ts /** * TanStack Start cookie plugin for Solid.js. * * This plugin automatically handles cookie setting for TanStack Start with Solid.js. * It uses `@tanstack/solid-start-server` to set cookies. * * For React, use `better-auth/tanstack-start` instead. * * @example * ```ts * import { tanstackStartCookies } from "better-auth/tanstack-start/solid"; * * const auth = betterAuth({ * plugins: [tanstackStartCookies()], * }); * ``` */ const tanstackStartCookies = () => { let hasWarned = false; return { id: "tanstack-start-cookies-solid", version: PACKAGE_VERSION, hooks: { after: [{ matcher(ctx) { return true; }, handler: createAuthMiddleware(async (ctx) => { if (!hasWarned) { warnIfCookiePluginNotLast(ctx.context, "tanstack-start-cookies-solid"); hasWarned = true; } const returned = ctx.context.responseHeaders; if ("_flag" in ctx && ctx._flag === "router") return; if (returned instanceof Headers) { const setCookies = returned?.get("set-cookie"); if (!setCookies) return; const parsed = parseSetCookieHeader(setCookies); const { setCookie } = await import("@tanstack/solid-start/server"); parsed.forEach((value, key) => { if (!key) return; try { setCookie(key, value.value, toCookieOptions(value)); } catch {} }); return; } }) }] } }; }; //#endregion export { tanstackStartCookies };