svelte-kit-cookie-session
Version:
⚒️ Encrypted 'stateless' cookie sessions for SvelteKit
44 lines (43 loc) • 1.71 kB
JavaScript
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 }]
};
}