UNPKG

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
"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, }); } }); }