@zerooneit/expressive-tea
Version:
A REST API over Express and Typescript
69 lines (68 loc) • 2.93 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
/* istanbul ignore file */
require("reflect-metadata");
const object_helper_1 = require("../helpers/object-helper");
function get(key, target, propertyKey, own = false) {
return own ?
Reflect.getOwnMetadata(key, (0, object_helper_1.getClass)(target), propertyKey) :
Reflect.getMetadata(key, (0, object_helper_1.getClass)(target), propertyKey);
}
class Metadata {
static get(key, target, propertyKey) {
return get(key, (0, object_helper_1.getClass)(target), propertyKey);
}
static getOwn(key, target, propertyKey) {
return get(key, (0, object_helper_1.getClass)(target), propertyKey, true);
}
static getType(target, propertyKey) {
return Reflect.getMetadata(DESIGN_TYPE, target, propertyKey);
}
static getOwnType(target, propertyKey) {
return Reflect.getMetadata(DESIGN_TYPE, target, propertyKey);
}
static getReturnType(target, propertyKey) {
return Reflect.getMetadata(DESIGN_RETURN_TYPE, target, propertyKey);
}
static getOwnReturnType(target, propertyKey) {
return Reflect.getOwnMetadata(DESIGN_RETURN_TYPE, target, propertyKey);
}
static has(key, target, propertyKey) {
try {
return Reflect.hasMetadata(key, (0, object_helper_1.getClass)(target), propertyKey);
}
catch (er) {
}
return false;
}
static hasOwn(key, target, propertyKey) {
return Reflect.hasOwnMetadata(key, (0, object_helper_1.getClass)(target), propertyKey);
}
static setParamTypes(target, propertyKey, value) {
return this.set(DESIGN_PARAM_TYPES, value, target.prototype, propertyKey);
}
static delete(key, target, propertyKey) {
return Reflect.deleteMetadata(key, (0, object_helper_1.getClass)(target), propertyKey);
}
static set(key, value, target, propertyKey) {
const targets = PROPERTIES.has(key) ? PROPERTIES.get(key) || [] : [];
const classConstructor = (0, object_helper_1.getClass)(target);
if (targets.indexOf(classConstructor) === -1) {
targets.push(classConstructor);
PROPERTIES.set(key, targets);
}
Reflect.defineMetadata(key, value, (0, object_helper_1.getClass)(target), propertyKey);
}
static getParamTypes(targetPrototype, propertyKey) {
return get(DESIGN_PARAM_TYPES, targetPrototype, propertyKey) || [];
}
static getOwnParamTypes(target, propertyKey) {
return get(DESIGN_PARAM_TYPES, target, propertyKey, true) || [];
}
}
exports.default = Metadata;
Metadata.getTargetsFromPropertyKey = (metadataKey) => PROPERTIES.has(metadataKey) ? PROPERTIES.get(metadataKey) || [] : [];
const DESIGN_PARAM_TYPES = 'design:paramtypes';
const DESIGN_TYPE = 'design:type';
const DESIGN_RETURN_TYPE = 'design:returntype';
const PROPERTIES = new Map();
;