openapi-ts-request
Version:
Swagger2/OpenAPI3/Apifox to TypeScript/JavaScript, request client(support any client), request mock service, enum and enum translation, react-query/vue-query, type field label, JSON Schemas
56 lines (55 loc) • 3.34 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateService = generateService;
const tslib_1 = require("tslib");
const lodash_1 = require("lodash");
const config_1 = require("./config");
const mockGenarator_1 = require("./generator/mockGenarator");
const serviceGenarator_1 = tslib_1.__importDefault(require("./generator/serviceGenarator"));
const util_1 = require("./util");
tslib_1.__exportStar(require("./generator/patchSchema"), exports);
function generateService(_a) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
var { requestLibPath, schemaPath, mockFolder, includeTags, excludeTags, includePaths, excludePaths, authorization, isTranslateToEnglishTag, priorityRule = config_1.PriorityRule.include, timeout = 60000, reactQueryMode = config_1.ReactQueryMode.react, apifoxConfig } = _a, rest = tslib_1.__rest(_a, ["requestLibPath", "schemaPath", "mockFolder", "includeTags", "excludeTags", "includePaths", "excludePaths", "authorization", "isTranslateToEnglishTag", "priorityRule", "timeout", "reactQueryMode", "apifoxConfig"]);
if (!schemaPath && !apifoxConfig) {
return;
}
let openAPI = null;
if (apifoxConfig) {
openAPI = (yield (0, util_1.getOpenAPIConfigByApifox)(apifoxConfig));
}
if (schemaPath) {
openAPI = (yield (0, util_1.getOpenAPIConfig)(schemaPath, authorization, timeout));
}
if (!openAPI || (0, lodash_1.isEmpty)(openAPI)) {
return;
}
if (isTranslateToEnglishTag) {
const res = yield (0, util_1.translateChineseModuleNodeToEnglish)(openAPI);
if ((0, lodash_1.isObject)(res) && !(0, lodash_1.isEmpty)(includeTags)) {
includeTags = (0, lodash_1.map)(includeTags, (item) => {
return (0, lodash_1.isString)(item) ? res[item] || item : item;
});
}
}
const requestImportStatement = (0, util_1.getImportStatement)(requestLibPath);
const serviceGenerator = new serviceGenarator_1.default(Object.assign({ schemaPath, serversPath: './src/apis', requestImportStatement, enableLogging: false, priorityRule, includeTags: includeTags
? includeTags
: priorityRule === config_1.PriorityRule.include ||
priorityRule === config_1.PriorityRule.both
? [/.*/g]
: null, includePaths: includePaths
? includePaths
: priorityRule === config_1.PriorityRule.include ||
priorityRule === config_1.PriorityRule.both
? [/.*/g]
: null, excludeTags: excludeTags ? excludeTags : null, excludePaths: excludePaths ? excludePaths : null, requestOptionsType: '{[key: string]: unknown}', namespace: 'API', isGenReactQuery: false, reactQueryMode, isGenJavaScript: false, isDisplayTypeLabel: false, isGenJsonSchemas: false, nullable: false, isOnlyGenTypeScriptType: false, isCamelCase: true, isSupportParseEnumDesc: false, full: true }, rest), openAPI);
serviceGenerator.genFile();
if (mockFolder) {
(0, mockGenarator_1.mockGenerator)({
openAPI,
mockFolder: mockFolder,
});
}
});
}