diff --git a/src/Utils.ts b/src/Utils.ts index f6af0eb1..b3be61d3 100644 --- a/src/Utils.ts +++ b/src/Utils.ts @@ -1,11 +1,20 @@ import { EventEmitter } from 'node:events'; +// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type, @typescript-eslint/no-empty-object-type +interface AnyClass extends Function { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + new(...args: any[]): InstanceType; + prototype: InstanceType; +} +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export type AnyFunction = (...args: any) => any; export type Extension = Record; export type Plugin = (instance: T) => Extension; +export const definePlugin = >(plugin: B): B => plugin; + // https://stackoverflow.com/a/58603027 -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export function withPlugins any>(Base: TBase) { +export function withPlugins(Base: TBase) { return class ClassWithPlugins extends Base { static plugins: Plugin[]; static plugin>(plugin: T) {