UNPKG

@gftdcojp/gftd-orm

Version:

Enterprise-grade real-time data platform with ksqlDB, inspired by Supabase architecture

194 lines 5.28 kB
/** * Auth0 Custom Session Store * * セッションストアの抽象化とカスタム実装 * Database、Redis、Memory、File system対応 */ /** * セッションデータ */ export interface SessionData { sessionId: string; userId: string; accessToken: string; idToken: string; refreshToken?: string; expiresAt: number; createdAt: number; lastAccessedAt: number; user: { sub: string; email?: string; name?: string; picture?: string; [key: string]: any; }; metadata?: Record<string, any>; } /** * セッションストア抽象インターフェース */ export interface SessionStore { /** * セッションを保存 */ save(sessionId: string, session: SessionData): Promise<void>; /** * セッションを取得 */ get(sessionId: string): Promise<SessionData | null>; /** * セッションを削除 */ delete(sessionId: string): Promise<void>; /** * セッションを更新 */ update(sessionId: string, updates: Partial<SessionData>): Promise<void>; /** * ユーザーの全セッションを取得 */ getByUserId(userId: string): Promise<SessionData[]>; /** * ユーザーの全セッションを削除 */ deleteByUserId(userId: string): Promise<void>; /** * 期限切れセッションを削除 */ cleanup(): Promise<void>; /** * ストアのヘルスチェック */ health(): Promise<{ status: 'ok' | 'error'; message?: string; }>; } /** * 🗄️ Memory Session Store * 開発・テスト用のインメモリストア */ export declare class MemorySessionStore implements SessionStore { private options; private sessions; private userSessions; private cleanupInterval; constructor(options?: { cleanupIntervalMs?: number; }); save(sessionId: string, session: SessionData): Promise<void>; get(sessionId: string): Promise<SessionData | null>; delete(sessionId: string): Promise<void>; update(sessionId: string, updates: Partial<SessionData>): Promise<void>; getByUserId(userId: string): Promise<SessionData[]>; deleteByUserId(userId: string): Promise<void>; cleanup(): Promise<void>; health(): Promise<{ status: 'ok' | 'error'; message?: string; }>; private startCleanup; /** * ストアを終了 */ destroy(): void; } /** * 🗃️ Database Session Store * PostgreSQL、MySQL、SQLite対応 */ export declare class DatabaseSessionStore implements SessionStore { private db; private options; constructor(db: any, // Database connection options?: { tableName?: string; schemaName?: string; }); private get tableName(); save(sessionId: string, session: SessionData): Promise<void>; get(sessionId: string): Promise<SessionData | null>; delete(sessionId: string): Promise<void>; update(sessionId: string, updates: Partial<SessionData>): Promise<void>; getByUserId(userId: string): Promise<SessionData[]>; deleteByUserId(userId: string): Promise<void>; cleanup(): Promise<void>; health(): Promise<{ status: 'ok' | 'error'; message?: string; }>; private updateLastAccessed; /** * Database schema creation */ createSchema(): Promise<void>; } /** * 🔴 Redis Session Store * Redis対応のセッションストア */ export declare class RedisSessionStore implements SessionStore { private redis; private options; constructor(redis: any, // Redis client options?: { keyPrefix?: string; defaultTtl?: number; }); private sessionKey; private userSessionsKey; save(sessionId: string, session: SessionData): Promise<void>; get(sessionId: string): Promise<SessionData | null>; delete(sessionId: string): Promise<void>; update(sessionId: string, updates: Partial<SessionData>): Promise<void>; getByUserId(userId: string): Promise<SessionData[]>; deleteByUserId(userId: string): Promise<void>; cleanup(): Promise<void>; health(): Promise<{ status: 'ok' | 'error'; message?: string; }>; } /** * 🔧 Session Store Factory */ export declare class SessionStoreFactory { /** * Memory store を作成 */ static createMemoryStore(options?: { cleanupIntervalMs?: number; }): MemorySessionStore; /** * Database store を作成 */ static createDatabaseStore(db: any, options?: { tableName?: string; schemaName?: string; }): DatabaseSessionStore; /** * Redis store を作成 */ static createRedisStore(redis: any, options?: { keyPrefix?: string; defaultTtl?: number; }): RedisSessionStore; /** * 設定から適切なストアを作成 */ static createFromConfig(config: { type: 'memory' | 'database' | 'redis'; connection?: any; options?: any; }): SessionStore; } /** * 🎯 Session Store 使用例 */ export declare const sessionStoreExamples: { memory: string; database: string; redis: string; }; //# sourceMappingURL=auth0-session-store.d.ts.map