import { Cache } from './Cache' import { Collection } from '../collection/Collection' /** * Base interface for an item stored in a memory cache. */ export interface InMemCacheItem { key: string, item: string, } /** * A cache implementation stored in memory. * @extends Cache */ export class InMemCache extends Cache { /** * The stored cache items. * @type Collection */ protected items: Collection = new Collection() public async fetch(key: string): Promise { const item = this.items.firstWhere('key', '=', key) if ( item ) { return item.item } } public async put(key: string, item: string): Promise { const existing = this.items.firstWhere('key', '=', key) if ( existing ) { existing.item = item } else { this.items.push({ key, item }) } } public async has(key: string): Promise { return this.items.where('key', '=', key).length > 0 } public async drop(key: string): Promise { this.items = this.items.whereNot('key', '=', key) } }