UNPKG

yapi-to-typescript

Version:

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

336 lines (272 loc) 11.1 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; exports.__esModule = true; exports.SwaggerToYApiServer = void 0; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _getPort2 = _interopRequireDefault(require("get-port")); var _http = _interopRequireDefault(require("http")); var _signalExit = _interopRequireDefault(require("signal-exit")); var _url = _interopRequireDefault(require("url")); var _utils = require("./utils"); var _vtils = require("vtils"); var _swaggerJsonToYApiData = require("./swaggerJsonToYApiData"); var SwaggerToYApiServer = /*#__PURE__*/function () { function SwaggerToYApiServer(options) { this.options = options; this.port = 0; this.swaggerJson = {}; this.httpServer = null; this.yapiData = {}; } var _proto = SwaggerToYApiServer.prototype; _proto.getPort = /*#__PURE__*/function () { var _getPort = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { return _regenerator.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: if (!(this.port === 0)) { _context.next = 4; break; } _context.next = 3; return (0, _getPort2.default)({ port: 50505 }); case 3: this.port = _context.sent; case 4: return _context.abrupt("return", this.port); case 5: case "end": return _context.stop(); } } }, _callee, this); })); function getPort() { return _getPort.apply(this, arguments); } return getPort; }(); _proto.getUrl = /*#__PURE__*/function () { var _getUrl = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() { return _regenerator.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _context2.next = 2; return this.getPort(); case 2: _context2.t0 = _context2.sent; return _context2.abrupt("return", "http://127.0.0.1:" + _context2.t0); case 4: case "end": return _context2.stop(); } } }, _callee2, this); })); function getUrl() { return _getUrl.apply(this, arguments); } return getUrl; }(); _proto.getSwaggerJson = /*#__PURE__*/function () { var _getSwaggerJson = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() { var res; return _regenerator.default.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: if (!(0, _vtils.isEmpty)(this.swaggerJson)) { _context3.next = 5; break; } _context3.next = 3; return (0, _utils.httpGet)(this.options.swaggerJsonUrl); case 3: res = _context3.sent; this.swaggerJson = res; case 5: return _context3.abrupt("return", this.swaggerJson); case 6: case "end": return _context3.stop(); } } }, _callee3, this); })); function getSwaggerJson() { return _getSwaggerJson.apply(this, arguments); } return getSwaggerJson; }(); _proto.getYApiData = /*#__PURE__*/function () { var _getYApiData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() { return _regenerator.default.wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: if (!(0, _vtils.isEmpty)(this.yapiData)) { _context4.next = 8; break; } _context4.t0 = _swaggerJsonToYApiData.swaggerJsonToYApiData; _context4.next = 4; return this.getSwaggerJson(); case 4: _context4.t1 = _context4.sent; _context4.next = 7; return (0, _context4.t0)(_context4.t1); case 7: this.yapiData = _context4.sent; case 8: return _context4.abrupt("return", this.yapiData); case 9: case "end": return _context4.stop(); } } }, _callee4, this); })); function getYApiData() { return _getYApiData.apply(this, arguments); } return getYApiData; }(); _proto.start = /*#__PURE__*/function () { var _start = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() { var _this = this; var yapiData; return _regenerator.default.wrap(function _callee7$(_context7) { while (1) { switch (_context7.prev = _context7.next) { case 0: _context7.next = 2; return this.getYApiData(); case 2: yapiData = _context7.sent; _context7.next = 5; return new Promise( /*#__PURE__*/function () { var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(resolve) { return _regenerator.default.wrap(function _callee6$(_context6) { while (1) { switch (_context6.prev = _context6.next) { case 0: _context6.t0 = _http.default.createServer( /*#__PURE__*/function () { var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(req, res) { var _url$parse, pathname; return _regenerator.default.wrap(function _callee5$(_context5) { while (1) { switch (_context5.prev = _context5.next) { case 0: _url$parse = _url.default.parse(req.url || ''), pathname = _url$parse.pathname; res.setHeader('Content-Type', 'application/json'); if (pathname.includes('/api/plugin/export')) { res.end(JSON.stringify(yapiData.cats.map(function (cat) { return (0, _extends2.default)({}, cat, { list: yapiData.interfaces.filter(function (item) { return 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'); } case 3: case "end": return _context5.stop(); } } }, _callee5); })); return function (_x2, _x3) { return _ref2.apply(this, arguments); }; }()); _context6.next = 3; return _this.getPort(); case 3: _context6.t1 = _context6.sent; _context6.t2 = function () { (0, _signalExit.default)(function () { return _this.stop(); }); resolve(); }; _this.httpServer = _context6.t0.listen.call(_context6.t0, _context6.t1, '127.0.0.1', _context6.t2); case 6: case "end": return _context6.stop(); } } }, _callee6); })); return function (_x) { return _ref.apply(this, arguments); }; }()); case 5: return _context7.abrupt("return", this.getUrl()); case 6: case "end": return _context7.stop(); } } }, _callee7, this); })); function start() { return _start.apply(this, arguments); } return start; }(); _proto.stop = /*#__PURE__*/function () { var _stop = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8() { var _this2 = this; return _regenerator.default.wrap(function _callee8$(_context8) { while (1) { switch (_context8.prev = _context8.next) { case 0: return _context8.abrupt("return", new Promise(function (resolve, reject) { if (!_this2.httpServer) { resolve(); } else { _this2.httpServer.close(function (err) { if (err) { reject(err); } else { resolve(); } }); } })); case 1: case "end": return _context8.stop(); } } }, _callee8); })); function stop() { return _stop.apply(this, arguments); } return stop; }(); return SwaggerToYApiServer; }(); exports.SwaggerToYApiServer = SwaggerToYApiServer;