UNPKG

routing-controllers-openapi-extended

Version:

Runtime Swagger v2 / OpenAPI v2 specification generation for routing-controllers

69 lines 5.18 kB
"use strict"; 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==