UNPKG

cis-api-tool

Version:

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

83 lines (81 loc) 2.65 kB
const require_chunk = require('./chunk-nOFOJqeH.js'); const require_swaggerJsonToYApiData = require('./swaggerJsonToYApiData-DMCRZnWF.js'); const require_apifox = require('./apifox-PMgYeCjV.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/ApifoxToYApiServer.ts var ApifoxToYApiServer = class { port = 0; openApiData = {}; httpServer = null; yapiData = {}; constructor(options) { this.options = options; } async getPort() { if (this.port === 0) this.port = await (0, get_port.default)({ port: 50506 }); return this.port; } async getUrl() { return `http://127.0.0.1:${await this.getPort()}`; } async getOpenApiData() { if ((0, lodash_isEmpty.default)(this.openApiData)) { const config = { serverUrl: this.options.serverUrl, token: this.options.token, projectId: this.options.projectId }; this.openApiData = await require_apifox.fetchApifoxOpenAPI(config); } return this.openApiData; } async getYApiData() { if ((0, lodash_isEmpty.default)(this.yapiData)) this.yapiData = await require_swaggerJsonToYApiData.swaggerJsonToYApiData(await this.getOpenApiData()); 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() { if (this.httpServer) { this.httpServer.close(); this.httpServer = null; } } }; //#endregion Object.defineProperty(exports, 'ApifoxToYApiServer', { enumerable: true, get: function () { return ApifoxToYApiServer; } });