UNPKG

@hestjs/scalar

Version:

HestJS Scalar API Reference Integration - Beautiful API documentation for HestJS applications

113 lines 3.19 kB
import 'reflect-metadata'; /** * OpenAPI Tags 装饰器 - OpenAPI 标准 */ export function ApiTags(...tags) { return (target) => { Reflect.defineMetadata('openapi:tags', tags, target); }; } /** * OpenAPI Operation 装饰器 - OpenAPI 标准 */ export function ApiOperation(operation) { return (target, propertyKey) => { if (!propertyKey) return; Reflect.defineMetadata('openapi:operation', operation, target, propertyKey); }; } /** * OpenAPI Response 装饰器 - OpenAPI 标准 */ export function ApiResponse(status, response) { return (target, propertyKey) => { if (!propertyKey) return; const existingResponses = Reflect.getMetadata('openapi:responses', target, propertyKey) || {}; existingResponses[status] = response; Reflect.defineMetadata('openapi:responses', existingResponses, target, propertyKey); }; } /** * OpenAPI Parameter 装饰器 - OpenAPI 标准 */ export function ApiParameter(param) { return (target, propertyKey) => { if (!propertyKey) return; const existingParams = Reflect.getMetadata('openapi:parameters', target, propertyKey) || []; existingParams.push(param); Reflect.defineMetadata('openapi:parameters', existingParams, target, propertyKey); }; } /** * OpenAPI Request Body 装饰器 - OpenAPI 标准 */ export function ApiRequestBody(requestBody) { return (target, propertyKey) => { if (!propertyKey) return; Reflect.defineMetadata('openapi:requestBody', requestBody, target, propertyKey); }; } /** * OpenAPI Security 装饰器 - OpenAPI 标准 */ export function ApiSecurity(security) { return (target, propertyKey) => { if (!propertyKey) return; Reflect.defineMetadata('openapi:security', security, target, propertyKey); }; } /** * OpenAPI Schema 装饰器 - OpenAPI 标准 */ export function ApiSchema(schema) { return (target) => { Reflect.defineMetadata('openapi:schema', schema, target); }; } /** * OpenAPI Property 装饰器 - OpenAPI 标准 */ export function ApiProperty(property) { return (target, propertyKey) => { if (!propertyKey) return; const existingProperties = Reflect.getMetadata('openapi:properties', target.constructor) || {}; existingProperties[propertyKey] = property; Reflect.defineMetadata('openapi:properties', existingProperties, target.constructor); }; } // 便捷装饰器 - 基于 OpenAPI 标准的常用场景 export function ApiQuery(name, options = {}) { return ApiParameter({ name, in: 'query', ...options }); } export function ApiParam(name, options = {}) { return ApiParameter({ name, in: 'path', required: true, ...options }); } export function ApiHeader(name, options = {}) { return ApiParameter({ name, in: 'header', ...options }); } export function ApiBody(content, options = {}) { return ApiRequestBody({ content, ...options }); } //# sourceMappingURL=openapi.decorators.js.map