@alova/wormhole
Version:
More modern openAPI generating solution for alova.js
39 lines (38 loc) • 1.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.enumTypeParser = enumTypeParser;
const standardLoader_1 = require("../../../../core/loader/standardLoader");
const helper_1 = require("../../../../helper");
const type_1 = require("../../../../type");
const utils_1 = require("../../../../utils");
const utils_2 = require("./utils");
function enumTypeParser(schema, ctx) {
const result = {
...(0, utils_2.initAST)(schema, ctx),
type: type_1.ASTType.ENUM,
params: [],
};
const enumArray = schema.enum ?? [];
const typeArray = [schema.type ?? []].flat();
if (enumArray.some(item => !typeArray.includes((0, utils_1.getType)(item)))) {
throw helper_1.logger.throwError(`enum ${schema.title} type error`, {
enum: enumArray,
type: typeArray,
});
}
enumArray.forEach((item) => {
const keyName = typeof item === 'string' && standardLoader_1.standardLoader.validate(item) ? item.toUpperCase() : '';
result.params.push({
keyName,
ast: {
type: type_1.ASTType.LITERAL,
params: item,
},
});
});
return result;
}
exports.default = {
type: 'enum',
parse: enumTypeParser,
};