UNPKG

swagger-decorator

Version:
121 lines (90 loc) 3.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _keys = require("babel-runtime/core-js/object/keys"); var _keys2 = _interopRequireDefault(_keys); var _getIterator2 = require("babel-runtime/core-js/get-iterator"); var _getIterator3 = _interopRequireDefault(_getIterator2); var _assign = require("babel-runtime/core-js/object/assign"); var _assign2 = _interopRequireDefault(_assign); exports.buildDefinitions = buildDefinitions; var _swagger = require("./template/swagger.json"); var _type = require("../entity/type"); var _singleton = require("../internal/singleton"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * Description 构建实例定义 * @private */ function buildDefinitions(Class) { // 为了避免部分情况下传入的是 Class 数组,因此首先进行递归处理 while (Array.isArray(Class)) { Class = Class[0]; } // 初始化 Swagger JSON 中的 definitions 字段 _swagger.swaggerJSON["definitions"] || (_swagger.swaggerJSON["definitions"] = {}); // 如果非类对象,直接返回 if (!Class || !(typeof Class === "function")) { return; } // 类型名 var entityName = Class.name; // 如果已经构建过,则直接返回 if (_swagger.swaggerJSON["definitions"][entityName]) { return; } // 从实体类中推导出属性定义 var properties = (0, _type.inferenceEntityProperties)(Class, _singleton.innerEntityObject); // 重构 properties var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(properties)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var propertyName = _step.value; var property = properties[propertyName]; // 截止到这里 type 在还是存放的原始用户输入的数据 if (Array.isArray(property.type)) { var originType = property.type; property.type = "array"; var realType = originType[0]; property.items = typeof realType === "function" ? { $ref: "#/definitions/" + originType[0].name } : { type: "" + originType[0] }; } // 如果为函数类型 if (typeof property.type === "function") { var _originType = property.type; property.type = "object"; property["$ref"] = "#/definitions/" + _originType.name; } // 重定义默认属性 property["default"] = property.defaultValue; // 移除不必要的属性 delete property["primaryKey"]; delete property["allowNull"]; delete property["defaultValue"]; } // 设置原属性的定义 } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } _swagger.swaggerJSON["definitions"][entityName] = (0, _assign2.default)({}, _singleton.innerEntityObject[entityName], { properties: properties, type: "object" }); }