routing-controllers-openapi-extended
Version:
Runtime Swagger v2 / OpenAPI v2 specification generation for routing-controllers
69 lines • 5.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
require("reflect-metadata");
const storage_1 = require("../storage");
const _ = require("lodash");
const PRIMITIVE_TYPES = new Set(['string', 'number', 'boolean']);
function resolveType(property) {
let type = '';
if (property.type) {
if (typeof property.type === 'string') {
type = property.type.toLowerCase();
}
else {
type = property.type.name.toLowerCase();
}
}
return type;
}
function resolveProperty(property) {
const { type: proType, itemType } = property;
const type = resolveType(property);
delete property.name;
delete property.type;
delete property.required;
delete property.itemType;
if (PRIMITIVE_TYPES.has(type)) {
return Object.assign({}, { type }, property);
}
if (type === 'array') {
return Object.assign(Object.assign({ type }, property), { items: resolveModel(itemType) });
}
return resolveModel(proType);
}
function resolveModel(model) {
if (!model) {
return { type: '' };
}
const type = model.name.toLowerCase();
const properties = storage_1.getStorage().filterPropertyByTarget(model);
if (PRIMITIVE_TYPES.has(type)) {
return { type };
}
return {
type: 'object',
required: properties.reduce((acc, property) => {
if (property.required) {
acc.push(property.name);
}
return acc;
}, []),
properties: properties.reduce((acc, property) => {
acc[property.name || ''] = resolveProperty(property);
return acc;
}, {}),
};
}
function parseModel(models) {
return models.reduce((acc, model) => {
const modelOptions = storage_1.getStorage().filterModelByTarget(model) || [];
const options = _.merge({}, ...modelOptions);
if (options.enabled) {
acc[model.name] = resolveModel(model);
}
return acc;
}, {});
}
exports.parseModel = parseModel;
;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxQYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFyc2VyL21vZGVsUGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNEJBQTBCO0FBQzFCLHdDQUF3QztBQUN4Qyw0QkFBNkI7QUFHN0IsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFFakUsU0FBUyxXQUFXLENBQUMsUUFBeUI7SUFDNUMsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRWQsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFO1FBQ2pCLElBQUksT0FBTyxRQUFRLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUNyQyxJQUFJLEdBQUksUUFBUSxDQUFDLElBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNoRDthQUFNO1lBQ0wsSUFBSSxHQUFJLFFBQVEsQ0FBQyxJQUFpQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN2RDtLQUNGO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsUUFBeUI7SUFDaEQsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsUUFBUSxDQUFDO0lBQzdDLE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUVuQyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDckIsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ3JCLE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQztJQUN6QixPQUFPLFFBQVEsQ0FBQyxRQUFRLENBQUM7SUFDekIsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQzdCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztLQUM5QztJQUNELElBQUksSUFBSSxLQUFLLE9BQU8sRUFBRTtRQUNwQixxQ0FDRSxJQUFJLElBQ0QsUUFBUSxLQUNYLEtBQUssRUFBRSxZQUFZLENBQUMsUUFBb0IsQ0FBQyxJQUMxQztLQUNGO0lBQ0QsT0FBTyxZQUFZLENBQUMsT0FBbUIsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxLQUFlO0lBQ25DLElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDVixPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO0tBQ3JCO0lBRUQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN0QyxNQUFNLFVBQVUsR0FBRyxvQkFBVSxFQUFFLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFOUQsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQzdCLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztLQUNqQjtJQUNELE9BQU87UUFDTCxJQUFJLEVBQUUsUUFBUTtRQUNkLFFBQVEsRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQzVDLElBQUksUUFBUSxDQUFDLFFBQVEsRUFBRTtnQkFDckIsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDekI7WUFDRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDTixVQUFVLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUM5QyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsR0FBRyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDckQsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDO0tBQ1AsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFnQixVQUFVLENBQUMsTUFBa0I7SUFDM0MsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQ2xDLE1BQU0sWUFBWSxHQUFHLG9CQUFVLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkUsTUFBTSxPQUFPLEdBQWlCLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEdBQUcsWUFBWSxDQUFDLENBQUM7UUFFM0QsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ25CLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3ZDO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLEVBQUUsRUFBNEIsQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFYRCxnQ0FXQztBQUFBLENBQUMifQ==