UNPKG

@nestjs/swagger

Version:

Nest - modern, fast, powerful node.js web framework (@swagger)

44 lines (43 loc) 2.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.exploreApiOperationMetadata = void 0; const constants_1 = require("../constants"); const api_operation_decorator_1 = require("../decorators/api-operation.decorator"); const plugin_constants_1 = require("../plugin/plugin-constants"); const exploreApiOperationMetadata = (instance, prototype, method) => { applyMetadataFactory(prototype, instance); return Reflect.getMetadata(constants_1.DECORATORS.API_OPERATION, method); }; exports.exploreApiOperationMetadata = exploreApiOperationMetadata; function applyMetadataFactory(prototype, instance) { const classPrototype = prototype; do { if (!prototype.constructor) { return; } if (!prototype.constructor[plugin_constants_1.METADATA_FACTORY_NAME]) { continue; } const metadata = prototype.constructor[plugin_constants_1.METADATA_FACTORY_NAME](); const methodKeys = Object.keys(metadata).filter((key) => typeof instance[key] === 'function'); methodKeys.forEach((key) => { const operationMeta = {}; const { summary, deprecated, tags, description } = metadata[key]; applyIfNotNil(operationMeta, 'summary', summary); applyIfNotNil(operationMeta, 'deprecated', deprecated); applyIfNotNil(operationMeta, 'tags', tags); applyIfNotNil(operationMeta, 'description', description); if (Object.keys(operationMeta).length === 0) { return; } (0, api_operation_decorator_1.ApiOperation)(operationMeta, { overrideExisting: false })(classPrototype, key, Object.getOwnPropertyDescriptor(classPrototype, key)); }); } while ((prototype = Reflect.getPrototypeOf(prototype)) && prototype !== Object.prototype && prototype); } function applyIfNotNil(target, key, value) { if (value !== undefined && value !== null) { target[key] = value; } }