UNPKG

@antmjs/rapper

Version:

rapper, use http api as a function

124 lines (123 loc) 5.67 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateUploadRapJson = exports.tsTypeParse = void 0; var TJS = __importStar(require("typescript-json-schema")); var chalk_1 = __importDefault(require("chalk")); var settings = { required: true, comments: true, validationKeywords: ['value', 'rule', 'url', 'method', 'rapUrl'], }; var compilerOptions = { strictNullChecks: true, }; function getGeneric(definitions, genericName) { var element = genericName.replace(/^#\//, '').split('/'); element.shift(); return element.reduce(function (c, n) { return c[n]; }, definitions); } function tsTypeParse(file) { var program = TJS.getProgramFromFiles([file], compilerOptions, './'); return TJS.generateSchema(program, '*', settings); } exports.tsTypeParse = tsTypeParse; var IDX = 1; function generateRapJson(commonProps, currentDefinitions, scope, parentId, interfaceId) { var _a; var codePosition = commonProps.codePosition, _b = commonProps.definitions, definitions = _b === void 0 ? {} : _b; var ifs = []; var ref = currentDefinitions['$ref'] || ((_a = currentDefinitions === null || currentDefinitions === void 0 ? void 0 : currentDefinitions['items']) === null || _a === void 0 ? void 0 : _a['$ref']); var obj = ref ? getGeneric(definitions, ref) : currentDefinitions; var isAny = Object.keys(obj).length === 0; var isObject = (obj === null || obj === void 0 ? void 0 : obj.type) === 'object' || isAny; var properties = isObject ? obj.properties : obj.items.properties; var required = (isObject ? obj.required : obj.items.required) || []; for (var key in properties) { var element = properties[key]; if (element['$ref']) { element = getGeneric(definitions, element['$ref']); } var id = "$memory-".concat(IDX); var type = element.enum ? typeof element.enum[0] : element.type; if (Array.isArray(type)) { console.log(chalk_1.default.red("".concat(codePosition, "Union Types: ").concat(type, "\u6CE8\u610F\uFF1A \u81EA\u52A8\u53D6\u7B2C\u4E00\u4E2A"))); type = type[0]; } var ifItem = { scope: scope, name: key, type: type.charAt(0).toUpperCase() + type.slice(1), value: typeof element.value === 'string' ? element.value.replace(/^(#|\\@|\/@)/, '@') : JSON.stringify(element.value) || '', description: element.description || '', parentId: parentId, interfaceId: interfaceId, id: id, pos: 2, required: required.includes(key), rule: element.rule || '', memory: true, }; ifs.push(ifItem); IDX++; if (element.type === 'object' || element.type === 'array') { ifs.push.apply(ifs, generateRapJson(commonProps, element, scope, id, interfaceId)); } } return ifs; } function getProperties(data, namePath) { var _namePath = Array.isArray(namePath) ? namePath : [namePath]; return _namePath.reduce(function (curr, next) { if (curr === void 0) { curr = {}; } var result = curr.properties[next]; return result; }, data); } function generateUploadRapJson(codePosition, schema, interfaceId, responseTypeName, requestTypeName) { var parentId = -1; IDX = 1; var rootProperties = { properties: schema.definitions }; var reqProperties = getProperties(rootProperties, requestTypeName); var resProperties = getProperties(rootProperties, responseTypeName); if (!resProperties || !reqProperties) { throw new Error("".concat(codePosition, "[").concat(requestTypeName, "] \u6216 [").concat(responseTypeName, "]\u51FA\u73B0\u4E86\u4E00\u4E2A\u9519\u8BEF\uFF0C\u7C7B\u578B\u672A\u627E\u5230")); } try { return generateRapJson({ codePosition: codePosition, definitions: schema === null || schema === void 0 ? void 0 : schema.definitions }, reqProperties, 'request', parentId, interfaceId).concat(generateRapJson({ codePosition: codePosition, definitions: schema === null || schema === void 0 ? void 0 : schema.definitions }, resProperties, 'response', parentId, interfaceId)); } catch (error) { console.log(chalk_1.default.red("".concat(codePosition, "\u7C7B\u578B\u89E3\u6790\u51FA\u9519"))); throw error; } } exports.generateUploadRapJson = generateUploadRapJson;