@gftdcojp/gftd-orm
Version:
Enterprise-grade real-time data platform with ksqlDB, inspired by Supabase architecture
194 lines • 5.28 kB
TypeScript
/**
* 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