UNPKG

@ivamuno/nestjs-openapi

Version:
37 lines (36 loc) 1.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.OperationObjectFactory = void 0; const model_properties_accessor_1 = require("@nestjs/swagger/dist/services/model-properties-accessor"); const schema_object_factory_1 = require("@nestjs/swagger/dist/services/schema-object-factory"); const swagger_types_mapper_1 = require("@nestjs/swagger/dist/services/swagger-types-mapper"); const utils_1 = require("@nestjs/swagger/dist/utils"); const lodash_1 = require("lodash"); class OperationObjectFactory { constructor() { this.modelPropertiesAccessor = new model_properties_accessor_1.ModelPropertiesAccessor(); this.swaggerTypesMapper = new swagger_types_mapper_1.SwaggerTypesMapper(); this.schemaObjectFactory = new schema_object_factory_1.SchemaObjectFactory(this.modelPropertiesAccessor, this.swaggerTypesMapper); } create(operation, produces, schemas) { const { message } = operation; const messagePayloadType = message.payload.type; const name = this.schemaObjectFactory.exploreModelSchema(messagePayloadType, schemas); const discriminator = operation.message.payload.discriminator; if (operation.message.payload.discriminator) { schemas.filter(s => s[name] !== undefined).map(s => (s[name].discriminator = discriminator)); } return this.toRefObject(operation, name, produces); } toRefObject(operation, name, produces) { const asyncOperationObject = lodash_1.omit(operation, 'examples'); return Object.assign(Object.assign({}, asyncOperationObject), { message: { name: operation.message.name, payload: { $ref: utils_1.getSchemaPath(name), examples: operation.message.payload.examples, }, } }); } } exports.OperationObjectFactory = OperationObjectFactory;