UNPKG

@alova/wormhole

Version:

More modern openAPI generating solution for alova.js

77 lines (76 loc) 2.87 kB
"use strict"; 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();