cis-api-tool
Version:
根据 swagger/yapi/apifox 的接口定义生成 TypeScript/JavaScript 的接口类型及其请求函数代码。
82 lines (80 loc) • 2.65 kB
JavaScript
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;
}
});