UNPKG

@hestjs/core

Version:

HestJS Core Framework - A TypeScript framework built on Hono with dependency injection and decorators

97 lines 3.11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Context = exports.Res = exports.Req = exports.Header = exports.Query = exports.Param = exports.Body = exports.Patch = exports.Delete = exports.Put = exports.Post = exports.Get = void 0; require("reflect-metadata"); const constants_1 = require("../utils/constants"); /** * 创建路由装饰器 */ function createRouteDecorator(method) { return (path = '') => { return (target, propertyKey, descriptor) => { const metadata = { method, path: path.startsWith('/') ? path : `/${path}`, methodName: String(propertyKey), }; const existingRoutes = Reflect.getMetadata(constants_1.METADATA_KEYS.ROUTE, target.constructor) || []; existingRoutes.push(metadata); Reflect.defineMetadata(constants_1.METADATA_KEYS.ROUTE, existingRoutes, target.constructor); return descriptor || { value: target[propertyKey], writable: true, enumerable: true, configurable: true, }; }; }; } /** * GET 请求装饰器 */ exports.Get = createRouteDecorator(constants_1.HttpMethod.GET); /** * POST 请求装饰器 */ exports.Post = createRouteDecorator(constants_1.HttpMethod.POST); /** * PUT 请求装饰器 */ exports.Put = createRouteDecorator(constants_1.HttpMethod.PUT); /** * DELETE 请求装饰器 */ exports.Delete = createRouteDecorator(constants_1.HttpMethod.DELETE); /** * PATCH 请求装饰器 */ exports.Patch = createRouteDecorator(constants_1.HttpMethod.PATCH); /** * 创建参数装饰器 */ function createParamDecorator(type) { return (key) => { return (target, propertyKey, parameterIndex) => { if (!propertyKey) return; const metadata = { index: parameterIndex, type, key, }; const paramKey = `${constants_1.METADATA_KEYS.PARAM.toString()}_${String(propertyKey)}`; const existingParams = Reflect.getMetadata(paramKey, target.constructor) || []; existingParams.push(metadata); Reflect.defineMetadata(paramKey, existingParams, target.constructor); }; }; } /** * 请求体参数装饰器 */ exports.Body = createParamDecorator(constants_1.ParamType.BODY); /** * 路径参数装饰器 */ exports.Param = createParamDecorator(constants_1.ParamType.PARAM); /** * 查询参数装饰器 */ exports.Query = createParamDecorator(constants_1.ParamType.QUERY); /** * 请求头参数装饰器 */ exports.Header = createParamDecorator(constants_1.ParamType.HEADER); /** * 完整请求对象装饰器 */ exports.Req = createParamDecorator(constants_1.ParamType.REQUEST); /** * 响应对象装饰器 */ exports.Res = createParamDecorator(constants_1.ParamType.RESPONSE); /** * 上下文装饰器 - 获取完整的 Hono Context */ exports.Context = createParamDecorator(constants_1.ParamType.CONTEXT); //# sourceMappingURL=route.js.map