@alova/wormhole
Version:
More modern openAPI generating solution for alova.js
77 lines (76 loc) • 2.87 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.configHelper = exports.ConfigHelper = void 0;
const lodash_1 = require("lodash");
const helper_1 = require("../../helper");
const ConfigManager_1 = require("./ConfigManager");
const GeneratorHelper_1 = require("./GeneratorHelper");
class ConfigHelper {
constructor() {
this.configManager = ConfigManager_1.ConfigManager.getInstance();
}
static getInstance() {
if (!ConfigHelper.instance) {
ConfigHelper.instance = new ConfigHelper();
}
return ConfigHelper.instance;
}
async load(config, projectPath = process.cwd()) {
this.projectPath = projectPath;
await this.configManager.load(config);
await this.readAlovaJson();
}
getConfig() {
return this.configManager.getConfig();
}
getProjectPath() {
return this.projectPath;
}
getTemplateType(idx) {
const { generator } = this.configManager.getConfig();
const templateType = (config) => GeneratorHelper_1.GeneratorHelper.getTemplateType(config, this.projectPath);
if ((0, lodash_1.isArray)(idx)) {
return generator.filter((_, index) => idx.includes(index)).map(item => templateType(item));
}
if (idx !== undefined && idx < generator.length && idx >= 0) {
return [templateType(generator[idx])];
}
return generator.map(item => templateType(item));
}
getOutput() {
return this.configManager.getConfig().generator.map(item => item.output);
}
getOpenApiData() {
return Promise.all(this.configManager.getConfig().generator.map(item => GeneratorHelper_1.GeneratorHelper.openApiData(item, this.projectPath)));
}
autoUpdateConfig() {
const autoUpdateConfig = this.configManager.getConfig().autoUpdate;
let time = 60 * 5; // Default five minutes
let immediate = false;
const isStop = !autoUpdateConfig;
if ((0, lodash_1.isObject)(autoUpdateConfig)) {
time = Number(autoUpdateConfig.interval);
immediate = !!autoUpdateConfig.launchEditor;
}
return {
time,
isStop,
immediate,
};
}
generate(options) {
return Promise.all(this.configManager.getConfig().generator.map(item => GeneratorHelper_1.GeneratorHelper.generate(item, {
...options,
projectPath: this.projectPath,
})));
}
readAlovaJson() {
const allAlovaJSon = this.configManager
.getConfig()
.generator
.map(async (item) => helper_1.TemplateHelper.readData(this.projectPath, item.output));
return Promise.all(allAlovaJSon);
}
}
exports.ConfigHelper = ConfigHelper;
exports.configHelper = ConfigHelper.getInstance();