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