import { TsGenConfig, TsHelperConfig } from '..'; import * as utils from '../utils'; import ClassGenerator from './class'; export default function AutoGenerator(config: TsGenConfig, baseConfig: TsHelperConfig) { config.interfaceHandle = config.interfaceHandle || 'AutoInstanceType'; const result = ClassGenerator(config, baseConfig); /* istanbul ignore else */ if (result.content) { result.content = [ 'type AnyClass = new (...args: any[]) => any;', 'type AnyFunc = (...args: any[]) => T;', 'type CanExportFunc = AnyFunc> | AnyFunc>;', 'type AutoInstanceType : T> = U extends AnyClass ? InstanceType : U;', result.content, ].join('\n'); } return result; } AutoGenerator.defaultConfig = utils.extend({}, ClassGenerator.defaultConfig);