import {Event} from './types' import {Container, StaticInstantiable} from '../../di' import {ErrorWithContext} from '../../util' export function getEventName(eventKey: StaticInstantiable): string { const protoName = eventKey.prototype.eventName if ( protoName ) { return protoName } try { const inst = Container.getContainer().make(eventKey) if ( inst.eventName ) { return inst.eventName } } catch (e: unknown) {} // eslint-disable-line no-empty let stringParseName = eventKey.toString() .split('\n') .map(x => x.trim()) .filter(x => x.startsWith('this.eventName = \'') || x.startsWith('this.eventName = "'))?.[0] ?.split('=')?.[1] ?.trim() if ( stringParseName ) { stringParseName = stringParseName.endsWith(';') ? stringParseName.slice(1, -2) : stringParseName.slice(1, -1) if ( stringParseName ) { return stringParseName } } throw new ErrorWithContext('Unable to determine eventName from eventKey', { eventKey, }) }