@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
TypeScript
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