import { BaseStorage, SessionStorage } from '@did-connect/storage'; import { TSession } from '@did-connect/types'; interface StorageObject { [key: string]: TSession; } let storage: StorageObject = {}; export class MemoryStorage extends BaseStorage implements SessionStorage { read(sessionId: string): Promise { return Promise.resolve(storage[sessionId]); } create(sessionId: string, attributes: Partial): Promise { // @ts-ignore storage[sessionId] = { sessionId, ...attributes }; this.emit('create', storage[sessionId]); return this.read(sessionId); } update(sessionId: string, updates: Partial): Promise { delete updates.sessionId; storage[sessionId] = Object.assign(storage[sessionId], updates); this.emit('update', storage[sessionId]); if (updates.status && this.isFinalized(updates.status)) { this.deleteFinalized(sessionId); } return this.read(sessionId); } delete(sessionId: string): Promise { this.emit('delete', storage[sessionId]); if (storage[sessionId]) { delete storage[sessionId]; return Promise.resolve(1); } return Promise.resolve(0); } // @ts-ignore clear(): Promise { storage = {}; } }