openapi-metadata
Version:
Auto-Generate OpenAPI specifications from Typescript decorators
23 lines (20 loc) • 719 B
text/typescript
import {
type OperationMetadata,
OperationMetadataStorage,
OperationParameterMetadataStorage,
} from "../metadata/index.js";
export type ApiOperationOptions = OperationMetadata;
/**
* Configures a new operation.
* When multiple methods are defined, multiple operations will be added to the document.
*
* @see https://swagger.io/specification/#operation-object
*/
export function ApiOperation(options: ApiOperationOptions): MethodDecorator {
return (target, propertyKey) => {
OperationMetadataStorage.defineMetadata(target, options, propertyKey);
if (Array.isArray(options.parameters)) {
OperationParameterMetadataStorage.mergeMetadata(target, options.parameters, propertyKey);
}
};
}