UNPKG

@gitorial/sync

Version:

Universal sync library for real-time tutorial state synchronization between websites and VS Code extensions with built-in relay server orchestration

69 lines 2.05 kB
import { EventEmitter } from 'events'; import { Session, SessionData, CreateSessionOptions, SessionLifecycleEvents } from '../types/session'; import { ConflictResolution } from '../../client/types/roles'; /** * In-memory session store with CRUD operations * Future-proof design allows for Redis implementation */ export declare class SessionStore extends EventEmitter { private sessions; private defaultSessionTimeoutMs; private defaultConflictResolution; constructor(defaultSessionTimeoutMs?: number, // 30 minutes defaultConflictResolution?: ConflictResolution); /** * Create a new session */ create(options?: CreateSessionOptions): SessionData; /** * Get session by ID */ get(sessionId: string): SessionData | null; /** * Get internal session (for SessionManager use) */ getInternal(sessionId: string): Session | null; /** * Update session activity timestamp */ updateActivity(sessionId: string): boolean; /** * Update session metadata */ updateMetadata(sessionId: string, metadata: any): boolean; /** * Delete session */ delete(sessionId: string): boolean; /** * List all active sessions */ list(): SessionData[]; /** * Get sessions that have expired */ getExpiredSessions(): string[]; /** * Mark session as expired */ markExpired(sessionId: string): boolean; /** * Get total number of active sessions */ getActiveCount(): number; /** * Clear all sessions (for testing) */ clear(): void; /** * Convert internal session to public session data */ private toSessionData; /** * Generate unique session ID */ private generateSessionId; on<K extends keyof SessionLifecycleEvents>(event: K, listener: SessionLifecycleEvents[K]): this; emit<K extends keyof SessionLifecycleEvents>(event: K, ...args: Parameters<SessionLifecycleEvents[K]>): boolean; } //# sourceMappingURL=SessionStore.d.ts.map