@antmjs/rapper
Version:
rapper, use http api as a function
124 lines (123 loc) • 5.67 kB
JavaScript
;
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;