UNPKG

gen-api-js

Version:

根据线上接口文档轻量化简易一键批量生成模块化 JavaScript/TypeScript API接口

221 lines (220 loc) 11.8 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } var _require = require("../utils/index"), getIds = _require.getIds; module.exports = /*#__PURE__*/function (_Generator) { function ApiFox(config) { var _this; (0, _classCallCheck2.default)(this, ApiFox); _this = _callSuper(this, ApiFox, [config]); _this.setDocUrl("https://app.apifox.com"); _this.setResponse("errorMessage", "errorCode"); return _this; } (0, _inherits2.default)(ApiFox, _Generator); return (0, _createClass2.default)(ApiFox, [{ key: "getUrl", value: function getUrl(catId) { return { projectUrl: this.config.docUrl + "/project/".concat(this.projectId, "/interface/api/cat_").concat(catId), menuUrl: this.config.docUrl + "/project/".concat(this.projectId), indexUrl: this.config.docUrl + "/project/".concat(this.projectId) }; } }, { key: "init", value: function () { var _init = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3(opt, index) { var _this2 = this; return _regenerator.default.wrap(function _callee3$(_context3) { while (1) switch (_context3.prev = _context3.next) { case 0: this.projectId = opt.projectId; this.setIndexUrl("/project/".concat(this.projectId)); this.opt = opt; this.catIds = opt.catIds; this.index = index; _context3.prev = 5; return _context3.abrupt("return", new Promise(/*#__PURE__*/function () { var _ref = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2(resolve, reject) { var projectClass, options, _yield$_this2$getData, _yield$_this2$getData2, menuList, details, readList, list, currentMenus, listAll, _diff; return _regenerator.default.wrap(function _callee2$(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: _context2.next = 2; return _this2.browser.newPage(); case 2: _this2.page = _context2.sent; _context2.next = 5; return _this2.page.goto(_this2.indexUrl); case 5: _this2.page.setDefaultTimeout(0); projectClass = "#root > div > section > div > div.container-PJZkzQ.webContainer-sdsCoJ > div.webTitleBar-pNIDD3 > div > div.h-full.flex-1 > nav > ol > li:nth-child(2) > span.ui-breadcrumb-overlay-link.cursor-pointer > span > div > div"; _context2.next = 9; return _this2.page.$(projectClass); case 9: if (_context2.sent) { _context2.next = 11; break; } _this2.spinner.warn("请登录"); case 11: _context2.next = 13; return _this2.page.waitForSelector(projectClass); case 13: _context2.next = 15; return _this2.page.$eval(projectClass, function (el) { return el.innerText; }); case 15: _this2.projectName = _context2.sent; _this2.projectNames.push("".concat(_this2.projectName, "(").concat(_this2.indexUrl, ")")); if (_this2.isCatIds(_this2.catIds)) { _context2.next = 20; break; } resolve(); return _context2.abrupt("return"); case 20: _this2.setFiles(); options = { projectName: _this2.projectName }; _context2.next = 24; return _this2.page.reload(); case 24: _context2.next = 26; return _this2.getData(["/api-tree-list", "/api-details"]); case 26: _yield$_this2$getData = _context2.sent; _yield$_this2$getData2 = (0, _slicedToArray2.default)(_yield$_this2$getData, 2); menuList = _yield$_this2$getData2[0]; details = _yield$_this2$getData2[1]; // 获取详情 readList = function readList(lIndex, item) { return new Promise(/*#__PURE__*/function () { var _ref2 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(resolve) { var data, _data$responses$prope, _data$responseExample; return _regenerator.default.wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: data = details.find(function (dItem) { return dItem.folderId === item.folderId; }); data.reqBody = data.parameters.query; data.reqType = data.requestBody.type; data.ReqJsonSchema = null; if (data.responses.properties) { data.ResJsonSchema = ((_data$responses$prope = data.responses.properties) === null || _data$responses$prope === void 0 ? void 0 : _data$responses$prope.data) || ""; } else { data.ResJsonSchema = ((_data$responseExample = data.responseExamples) === null || _data$responseExample === void 0 ? void 0 : _data$responseExample.data) || ""; } resolve(data); case 6: case "end": return _context.stop(); } }, _callee); })); return function (_x5) { return _ref2.apply(this, arguments); }; }()); }; list = [], currentMenus = [], listAll = []; _diff = function diff(obj) { if (obj && obj.children.length) { obj.children.forEach(function (item) { _diff(item); }); } else { if (!obj.api) { return; } var apiObj = null; obj.api._id = obj.api.id; obj.api.title = obj.api.name; apiObj = JSON.parse(JSON.stringify(obj.api)); obj = null; obj = apiObj; delete obj.api; list.push(obj); listAll.push(obj); } }; menuList.forEach(function (item) { var _item$folder, _item$folder2, _item$api; _diff(item); item.list = list; list = []; item._id = (_item$folder = item.folder) !== null && _item$folder !== void 0 && _item$folder.id ? (_item$folder2 = item.folder) === null || _item$folder2 === void 0 ? void 0 : _item$folder2.id : (_item$api = item.api) === null || _item$api === void 0 ? void 0 : _item$api.id; if (item._id === getIds(_this2.catIds)) { currentMenus = item; } }); if (!_this2.isProjectId()) { _context2.next = 39; break; } _context2.next = 37; return _this2.genAllApi(menuList, options); case 37: _context2.next = 46; break; case 39: if (_this2.opt.catIds) { _context2.next = 44; break; } _context2.next = 42; return _this2.genProjectApi({ list: listAll }, readList, options); case 42: _context2.next = 46; break; case 44: _context2.next = 46; return _this2.genProjectMenusApi(menuList, readList, options); case 46: _context2.next = 48; return _this2.createWriteFile().writeHeader().writeApi(); case 48: resolve(); case 49: case "end": return _context2.stop(); } }, _callee2); })); return function (_x3, _x4) { return _ref.apply(this, arguments); }; }())); case 9: _context3.prev = 9; _context3.t0 = _context3["catch"](5); console.log("🚀 ~ ApiFox ~ init ~ error:", _context3.t0); case 12: case "end": return _context3.stop(); } }, _callee3, this, [[5, 9]]); })); function init(_x, _x2) { return _init.apply(this, arguments); } return init; }() }]); }(Generator);