"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PluginGenerator = exports.ObjectGenerator = exports.FunctionGenerator = exports.ExtendGenerator = exports.EggGenerator = exports.CustomGenerator = exports.ClassGenerator = exports.ConfigGenerator = exports.AutoGenerator = exports.BaseGenerator = exports.formatGenerator = exports.loadGenerator = exports.getGenerator = exports.isPrivateGenerator = exports.registerGenerator = exports.generators = void 0; const tslib_1 = require("tslib"); const config_1 = tslib_1.__importDefault(require("./generators/config")); exports.ConfigGenerator = config_1.default; const auto_1 = tslib_1.__importDefault(require("./generators/auto")); exports.AutoGenerator = auto_1.default; const class_1 = tslib_1.__importDefault(require("./generators/class")); exports.ClassGenerator = class_1.default; const custom_1 = tslib_1.__importDefault(require("./generators/custom")); exports.CustomGenerator = custom_1.default; const egg_1 = tslib_1.__importDefault(require("./generators/egg")); exports.EggGenerator = egg_1.default; const extend_1 = tslib_1.__importDefault(require("./generators/extend")); exports.ExtendGenerator = extend_1.default; const function_1 = tslib_1.__importDefault(require("./generators/function")); exports.FunctionGenerator = function_1.default; const object_1 = tslib_1.__importDefault(require("./generators/object")); exports.ObjectGenerator = object_1.default; const plugin_1 = tslib_1.__importDefault(require("./generators/plugin")); exports.PluginGenerator = plugin_1.default; const base_1 = require("./generators/base"); Object.defineProperty(exports, "BaseGenerator", { enumerable: true, get: function () { return base_1.BaseGenerator; } }); const utils = tslib_1.__importStar(require("./utils")); const path_1 = tslib_1.__importDefault(require("path")); const assert = require("assert"); exports.generators = { auto: auto_1.default, config: config_1.default, class: class_1.default, custom: custom_1.default, egg: egg_1.default, extend: extend_1.default, function: function_1.default, object: object_1.default, plugin: plugin_1.default, }; function registerGenerator(name, generator) { exports.generators[name] = generator; } exports.registerGenerator = registerGenerator; function isPrivateGenerator(name) { var _a; return !!((_a = getGenerator(name)) === null || _a === void 0 ? void 0 : _a.isPrivate); } exports.isPrivateGenerator = isPrivateGenerator; function getGenerator(name) { return formatGenerator(exports.generators[name]); } exports.getGenerator = getGenerator; function loadGenerator(name, option) { const type = typeof name; const typeIsString = type === 'string'; let generator = typeIsString ? getGenerator(name) : name; if (!generator && typeIsString) { // try to load generator as module path const generatorPath = utils.resolveModule(name.startsWith('.') ? path_1.default.join(option.cwd, name) : name); if (generatorPath) { generator = require(generatorPath); } } generator = formatGenerator(generator); assert(typeof generator === 'function', `generator: ${name} not exist!!`); return generator; } exports.loadGenerator = loadGenerator; function formatGenerator(generator) { // check esm default if (generator && typeof generator.default === 'function') { generator.default.defaultConfig = generator.defaultConfig || generator.default.defaultConfig; generator.default.isPrivate = generator.isPrivate || generator.default.isPrivate; generator = generator.default; } return generator; } exports.formatGenerator = formatGenerator;