@analog-tools/session
Version:
Session management for AnalogJS server-side applications
49 lines (48 loc) • 1.29 kB
TypeScript
import { Storage } from 'unstorage';
/**
* Base session data interface
*/
export interface SessionData extends Record<string, unknown> {
}
/**
* Cookie configuration options
*/
export interface CookieOptions {
domain?: string;
path?: string;
secure?: boolean;
httpOnly?: boolean;
sameSite?: boolean | 'lax' | 'strict' | 'none';
}
/**
* Session configuration interface
*/
export interface SessionConfig<T extends SessionData = SessionData> {
/** Direct unstorage Storage instance */
store: Storage<T>;
/** Secret(s) for signing cookies - supports rotation with array */
secret: string | string[];
/** Cookie name (default: 'connect.sid') */
name?: string;
/** Session TTL in seconds (default: 86400 = 24 hours) */
maxAge?: number;
/** Cookie options */
cookie?: CookieOptions;
/** Optional function to generate initial session data */
generate?: () => T;
}
/**
* Session operation result
*/
export interface SessionOperationResult {
success: boolean;
error?: SessionError;
}
/**
* Session error interface
*/
export interface SessionError {
code: 'COOKIE_ERROR' | 'INVALID_SESSION' | 'CRYPTO_ERROR' | 'STORAGE_ERROR' | 'EXPIRED_SESSION';
message: string;
details?: Record<string, unknown>;
}