import AppClass from '../../lifecycle/AppClass.ts' import SessionInterface from './SessionInterface.ts' /** * Error thrown if a session is looked up using a key that doesn't exist. * @extends Error */ export class InvalidSessionKeyError extends Error { constructor(key: any) { super(`Invalid session key: ${key}. No session exists.`) } } /** * Abstract class for managing sessions. * @extends AppClass */ export default abstract class SessionManager extends AppClass { /** * Attempt to find a session by key if it exists, or create one if no key is provided. * @param {string} [key] * @return Promise */ public abstract async get_session(key?: string): Promise /** * Returns true if the manager has a session with the given key. * @param {string} key * @return Promise */ public abstract async has_session(key: string): Promise /** * Purge a session by key, if provided, or all sessions. * @param {string} key * @return Promise */ public abstract async purge(key?: string): Promise }