A social knowledge tool for researchers built on ATProto
at main 38 lines 959 B view raw
1import { 2 NodeSavedSession, 3 NodeSavedSessionStore, 4} from '@atproto/oauth-client-node'; 5 6/** 7 * In-memory implementation of NodeSavedSessionStore for testing 8 */ 9export class InMemorySessionStore implements NodeSavedSessionStore { 10 private static instance: InMemorySessionStore; 11 private sessions: Map<string, NodeSavedSession> = new Map(); 12 13 private constructor() {} 14 15 public static getInstance(): InMemorySessionStore { 16 if (!InMemorySessionStore.instance) { 17 InMemorySessionStore.instance = new InMemorySessionStore(); 18 } 19 return InMemorySessionStore.instance; 20 } 21 22 async get(key: string): Promise<NodeSavedSession | undefined> { 23 return this.sessions.get(key); 24 } 25 26 async set(key: string, val: NodeSavedSession): Promise<void> { 27 this.sessions.set(key, val); 28 } 29 30 async del(key: string): Promise<void> { 31 this.sessions.delete(key); 32 } 33 34 // Helper method for testing 35 clear(): void { 36 this.sessions.clear(); 37 } 38}