@alova/wormhole
Version:
More modern openAPI generating solution for alova.js
45 lines (44 loc) • 1.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.objectTypeParser = objectTypeParser;
const type_1 = require("../../../../type");
const utils_1 = require("./utils");
function objectTypeParser(schema, ctx) {
const result = {
...(0, utils_1.initAST)(schema, ctx),
type: type_1.ASTType.INTERFACE,
params: [],
};
const properties = schema.properties || {};
const required = new Set(schema.required ?? []);
for (const [key, value] of Object.entries(properties)) {
ctx.pathKey = key;
result.params.push({
ast: ctx.next(value, ctx.options),
keyName: key,
isRequired: required.has(key) || !!ctx.options.defaultRequire,
});
}
if (!result.params.length && !schema.additionalProperties) {
return {
...result,
type: type_1.ASTType.OBJECT,
};
}
if (schema.additionalProperties) {
if (typeof schema.additionalProperties === 'boolean') {
result.addParams = {
type: type_1.ASTType.ANY,
};
}
else {
ctx.pathKey = '[key: string]';
result.addParams = ctx.next(schema.additionalProperties, ctx.options);
}
}
return result;
}
exports.default = {
type: 'object',
parse: objectTypeParser,
};