A social knowledge tool for researchers built on ATProto
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}