UNPKG

cis-api-tool

Version:

根据 swagger/yapi/apifox 的接口定义生成 TypeScript/JavaScript 的接口类型及其请求函数代码。

82 lines (80 loc) 2.65 kB
const require_chunk = require('./chunk-nOFOJqeH.js'); const require_swaggerJsonToYApiData = require('./swaggerJsonToYApiData-M8-ZF-v1.js'); const require_utils = require('./utils-DlLyHAur.js'); const get_port = require_chunk.__toESM(require("get-port")); const http = require_chunk.__toESM(require("http")); const signal_exit = require_chunk.__toESM(require("signal-exit")); const url = require_chunk.__toESM(require("url")); const lodash_isEmpty = require_chunk.__toESM(require("lodash/isEmpty")); //#region src/SwaggerToYApiServer.ts var SwaggerToYApiServer = class { port = 0; swaggerJson = {}; httpServer = null; yapiData = {}; constructor(options) { this.options = options; } async getPort() { if (this.port === 0) this.port = await (0, get_port.default)({ port: 50505 }); return this.port; } async getUrl() { return `http://127.0.0.1:${await this.getPort()}`; } async getSwaggerJson() { if ((0, lodash_isEmpty.default)(this.swaggerJson)) { const res = await require_utils.httpGet(this.options.swaggerJsonUrl); this.swaggerJson = res; } return this.swaggerJson; } async getYApiData() { if ((0, lodash_isEmpty.default)(this.yapiData)) this.yapiData = await require_swaggerJsonToYApiData.swaggerJsonToYApiData(await this.getSwaggerJson()); return this.yapiData; } async start() { const yapiData = await this.getYApiData(); await new Promise(async (resolve) => { this.httpServer = http.default.createServer(async (req, res) => { const { pathname } = url.default.parse(req.url || ""); res.setHeader("Content-Type", "application/json"); if (pathname.includes("/api/plugin/export")) res.end(JSON.stringify(yapiData.cats.map((cat) => ({ ...cat, list: yapiData.interfaces.filter((item) => item.catid === cat._id) })))); else if (pathname.includes("/api/interface/getCatMenu")) res.end(JSON.stringify({ errcode: 0, errmsg: "成功!", data: yapiData.cats })); else if (pathname.includes("/api/project/get")) res.end(JSON.stringify({ errcode: 0, errmsg: "成功!", data: yapiData.project })); else res.end("404"); }).listen(await this.getPort(), "127.0.0.1", () => { (0, signal_exit.default)(() => this.stop()); resolve(); }); }); return this.getUrl(); } async stop() { return new Promise((resolve, reject) => { if (!this.httpServer) resolve(); else this.httpServer.close((err) => { if (err) reject(err); else resolve(); }); }); } }; //#endregion Object.defineProperty(exports, 'SwaggerToYApiServer', { enumerable: true, get: function () { return SwaggerToYApiServer; } });