@hestjs/scalar
Version:
HestJS Scalar API Reference Integration - Beautiful API documentation for HestJS applications
113 lines • 3.19 kB
JavaScript
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