UNPKG

@alova/wormhole

Version:

More modern openAPI generating solution for alova.js

62 lines (61 loc) 2.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.normalEnumTypeGenerator = normalEnumTypeGenerator; exports.isNormalEnum = isNormalEnum; exports.enumTypeGenerator = enumTypeGenerator; const loader_1 = require("../../../../core/loader"); const type_1 = require("../../../../type"); const utils_1 = require("../../../../utils"); const utils_2 = require("./utils"); function normalEnumTypeGenerator(ast, ctx) { const result = { name: ast.keyName ?? '', comment: (0, utils_2.setComment)(ast, ctx.options), type: 'enum', code: '', }; const lines = [`{`]; ast.params.forEach((param, idx, arr) => { ctx.pathKey = param.keyName; const paramResult = ctx.next(param.ast, ctx.options); const endText = idx === arr.length - 1 ? '' : ','; const keyName = loader_1.standardLoader.validate(param.keyName) ? param.keyName : `"${param.keyName || paramResult.code}"`; `${param.ast.comment ?? ''}${keyName} = ${paramResult.code}${endText}` .split('\n') .forEach(line => lines.push(` ${line}`)); }); lines.push(`}`); result.code = lines.join('\n'); return result; } function otherEnumTypeGenerator(ast, ctx) { const result = { name: ast.keyName ?? '', comment: (0, utils_2.setComment)(ast, ctx.options), type: 'type', code: '', }; result.code = ast.params .map((param) => { ctx.pathKey = param.keyName; return (0, utils_2.getValue)(ctx.next(param.ast, ctx.options), ctx.options); }) .join(' | '); return result; } function isNormalEnum(ast, ctx) { return !ctx.options.noEnum && ast.params.every(item => item.ast.type === type_1.ASTType.LITERAL && ['string', 'number', 'integer'].includes((0, utils_1.getType)(item.ast.params)) && item.keyName); } function enumTypeGenerator(ast, ctx) { if (ctx.path.length <= 1 && isNormalEnum(ast, ctx)) { return normalEnumTypeGenerator(ast, ctx); } return otherEnumTypeGenerator(ast, ctx); } exports.default = { type: type_1.ASTType.ENUM, generate: enumTypeGenerator, };