@hestjs/core
Version:
HestJS Core Framework - A TypeScript framework built on Hono with dependency injection and decorators
79 lines • 2.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MetadataScanner = void 0;
require("reflect-metadata");
const constants_1 = require("../utils/constants");
/**
* 元数据扫描器
*/
class MetadataScanner {
/**
* 扫描控制器元数据
*/
static scanController(target) {
return Reflect.getMetadata(constants_1.METADATA_KEYS.CONTROLLER, target);
}
/**
* 扫描路由元数据
*/
static scanRoutes(target) {
return Reflect.getMetadata(constants_1.METADATA_KEYS.ROUTE, target) || [];
}
/**
* 扫描模块元数据
*/
static scanModule(target) {
return Reflect.getMetadata(constants_1.METADATA_KEYS.MODULE, target);
}
/**
* 扫描可注入元数据
*/
static scanInjectable(target) {
return Reflect.getMetadata(constants_1.METADATA_KEYS.INJECTABLE, target);
}
/**
* 扫描方法参数元数据
*/
static scanParameters(target, methodName) {
const paramKey = `${constants_1.METADATA_KEYS.PARAM.toString()}_${methodName}`;
return Reflect.getMetadata(paramKey, target) || [];
}
/**
* 获取构造函数参数类型
*/
static getConstructorParameters(target) {
return Reflect.getMetadata('design:paramtypes', target) || [];
}
/**
* 获取方法参数类型
*/
static getMethodParameters(target, methodName) {
return Reflect.getMetadata('design:paramtypes', target.prototype, methodName) || [];
}
/**
* 检查是否为控制器
*/
static isController(target) {
return Reflect.hasMetadata(constants_1.METADATA_KEYS.CONTROLLER, target);
}
/**
* 检查是否为模块
*/
static isModule(target) {
return Reflect.hasMetadata(constants_1.METADATA_KEYS.MODULE, target);
}
/**
* 检查是否可注入
*/
static isInjectable(target) {
return Reflect.hasMetadata(constants_1.METADATA_KEYS.INJECTABLE, target);
}
/**
* 获取所有元数据键
*/
static getAllMetadataKeys(target, propertyKey) {
return Reflect.getMetadataKeys(target, propertyKey);
}
}
exports.MetadataScanner = MetadataScanner;
//# sourceMappingURL=metadata-scanner.js.map