UNPKG

svelte-kit-cookie-session

Version:

⚒️ Encrypted 'stateless' cookie sessions for SvelteKit

44 lines (43 loc) 1.71 kB
export function expiresToMaxage(expires, expires_in) { switch (expires_in) { case 'days': return Math.round(expires * 24 * 60 * 60); case 'hours': return Math.round(expires * 60 * 60); case 'minutes': return Math.round(expires * 60); case 'seconds': return expires; default: return expires; } } export function maxAgeToDateOfExpiry(maxAge) { return new Date(Date.now() + maxAge * 1000); } export function normalizeConfig(options, isSecure = false) { if (options.secret == null) { throw new Error('Please provide at least one secret'); } const init = options.init ? options.init : () => ({}); return { init, saveUninitialized: options?.saveUninitialized ?? false, key: options.key || 'kit.session', expires: options.expires ? options.expires : 7, expires_in: options.expires_in ? options.expires_in : 'days', cookie: { maxAge: expiresToMaxage(options.expires || 7, options.expires_in || 'days'), httpOnly: options?.cookie?.httpOnly ?? true, sameSite: options?.cookie?.sameSite || 'lax', path: options?.cookie?.path || '/', domain: options?.cookie?.domain || undefined, secure: options?.cookie?.secure ?? isSecure, priority: options?.cookie?.priority ?? undefined, partitioned: options?.cookie?.partitioned ?? undefined }, chunked: options?.chunked ?? false, rolling: options?.rolling ?? false, secrets: Array.isArray(options.secret) ? options.secret : [{ id: 1, secret: options.secret }] }; }