UNPKG

swagger-ts-api_zwj

Version:

根据swagger文档生成typescript客户端调用代码

81 lines (80 loc) 2.89 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const path_1 = __importDefault(require("path")); // import fs from 'fs' const ora_1 = __importDefault(require("ora")); const readline_1 = __importDefault(require("readline")); const swagger_1 = require("./swagger"); const https_1 = __importDefault(require("https")); const axios_1 = __importDefault(require("axios")); /** * 生成代码 * @param basePath 是否调试模式 */ exports.default = async (basePath) => { // 根据配置文件路径获取配置对象 const configPath = path_1.default.join(basePath, 'nswag/config.js'); const nswagOptions = require(configPath); const spinner = (0, ora_1.default)(`你配置文件的路径:${configPath}`).start(); spinner.color = 'yellow'; nswagOptions.Apis.forEach((apiConfig) => { // renderProgress(`正在生成 ${apiConfig.ApiName}`) spinner.text = `正在生成 ${apiConfig.ApiName}`; getSwaggerData(apiConfig.SwaggerUrl).then((r) => { // console.log('r: ', r); //将r 写入文件中 // fs.writeFileSync(_path.join(basePath, 'swagger.json'), JSON.stringify(r, null, 2)) const swagger = new swagger_1.Swagger(basePath, apiConfig, r, nswagOptions.prettier); swagger.generate(); }); // renderProgress(`${apiConfig.ApiName} 生成成功`) setTimeout(() => { spinner.succeed(`${apiConfig.ApiName} 生成成功`); spinner.stop(); }, 3000); }); }; /** * 生成进度 * @param text 文字 * @param step 进度 * @param isOk 完成 */ function renderProgress(text) { readline_1.default.cursorTo(process.stdout, 0, 1); readline_1.default.clearScreenDown(process.stdout); process.stdout.write(`${text}`); } /** * 获取Swagger的JSON数据 * @param swaggerUrl */ function getSwaggerData(swaggerUrl) { const agent = new https_1.default.Agent({ rejectUnauthorized: false }); return new Promise((resolve, reject) => { axios_1.default.get(swaggerUrl, { httpsAgent: agent }) .then((response) => { if (response.status === 200) { const d = response.data; try { const result = typeof d === 'string' ? JSON.parse(d) : d; resolve(result); } catch (error) { reject(new Error('Swagger数据解析失败')); } } else { reject(new Error('获取swagger数据失败')); } }) .catch((error) => { reject(new Error(`获取swagger数据失败: ${error.message}`)); }); }); }