UNPKG

supakit

Version:

A Supabase auth helper for SvelteKit.

64 lines (63 loc) 2.09 kB
import { merge, stringToBoolean } from '../utils.js'; import { serialize } from 'cookie'; const COOKIE_DEFAULTS = { path: '/', maxAge: 60 * 60 * 24 * 365 }; const SERVER_CLIENT_DEFAULTS = { auth: { autoRefreshToken: false, detectSessionInUrl: false, flowType: 'pkce' } }; let load_client_cookie_options; let server_client_options; const SERVER_DEFAULTS = { cookie_options: COOKIE_DEFAULTS, client_options: SERVER_CLIENT_DEFAULTS }; export const rememberMe = () => { const _get = () => { const remember_me_cookie = document.cookie .split('; ') .find((cookie) => cookie.match('supakit-rememberme')) ?.split('=')[1]; return remember_me_cookie ? stringToBoolean(remember_me_cookie) : _set(true); }; const _set = (value) => { document.cookie = serialize('supakit-rememberme', JSON.stringify(value), { ...(server_client_options ?? COOKIE_DEFAULTS), httpOnly: false, maxAge: 60 * 60 * 24 * 365 * 100, sameSite: 'lax' }); return value; }; const _toggle = () => { const current = _get(); return _set(!current); }; return { get value() { return _get(); }, set value(v) { _set(v); }, get toggle() { return _toggle(); } }; }; export const getSupabaseLoadClientCookieOptions = () => { return load_client_cookie_options ?? COOKIE_DEFAULTS; }; export const setSupabaseLoadClientCookieOptions = (value) => { if (typeof value !== 'object') throw new Error('Cookie options must be an object'); load_client_cookie_options = merge(COOKIE_DEFAULTS, value); }; export const getSupabaseServerClientOptions = () => { return server_client_options ?? SERVER_DEFAULTS; }; export const setSupabaseServerClientOptions = (value) => { if (typeof value !== 'object') throw new Error('Server options must be an object'); if (value.client_options || value.cookie_options) server_client_options = merge(SERVER_DEFAULTS, value); };