auto.js 1.0 KB

12345678910111213141516171819202122
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. const tslib_1 = require("tslib");
  4. const utils = tslib_1.__importStar(require("../utils"));
  5. const class_1 = tslib_1.__importDefault(require("./class"));
  6. function AutoGenerator(config, baseConfig) {
  7. config.interfaceHandle = config.interfaceHandle || 'AutoInstanceType<typeof {{ 0 }}>';
  8. const result = (0, class_1.default)(config, baseConfig);
  9. /* istanbul ignore else */
  10. if (result.content) {
  11. result.content = [
  12. 'type AnyClass = new (...args: any[]) => any;',
  13. 'type AnyFunc<T = any> = (...args: any[]) => T;',
  14. 'type CanExportFunc = AnyFunc<Promise<any>> | AnyFunc<IterableIterator<any>>;',
  15. 'type AutoInstanceType<T, U = T extends CanExportFunc ? T : T extends AnyFunc ? ReturnType<T> : T> = U extends AnyClass ? InstanceType<U> : U;',
  16. result.content,
  17. ].join('\n');
  18. }
  19. return result;
  20. }
  21. exports.default = AutoGenerator;
  22. AutoGenerator.defaultConfig = utils.extend({}, class_1.default.defaultConfig);