import {EventEmitter} from 'node:events'; import type {UserInDatabase} from '@shared/schema/Auth'; import type {EventMap} from 'typed-emitter'; import type TypedEmitter from 'typed-emitter'; import type {ServiceInstances} from '.'; class BaseService extends (EventEmitter as { new (): TypedEmitter; }) { user: UserInDatabase; services?: ServiceInstances; constructor(user: UserInDatabase) { super(); this.user = user; } async destroy(_drop: boolean): Promise { delete this.services; } onServicesUpdated = () => { // do nothing. }; updateUser(user: UserInDatabase) { this.user = user; } updateServices(service?: ServiceInstances) { this.services = service; this.onServicesUpdated(); } } export default BaseService;