UNPKG

ts-convict

Version:

Model style decorators for your convict config.

49 lines (48 loc) 1.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); class Reflector { constructor() { const reflectInstalled = Reflect && Reflect.getMetadata ? true : false; if (!reflectInstalled) { throw new Error("reflect-metadata should be installed properly"); } this._reflect = Reflect; } isConstructor(target) { return (!!target.prototype && !!target.prototype.constructor.name && target instanceof Function); } isConfigClass(target) { const hasProps = this._reflect.hasMetadata("tsconvict:properties", target); const hasSchema = this._reflect.hasMetadata("tsconvict:schema", target); return hasProps || hasSchema; } getTsType(target, propertyName) { return this._reflect.getMetadata("design:type", target, propertyName); } getConvictMetaForProperty(target, propertyName) { return this._reflect.getMetadata("tsconvict:property", target, propertyName); } setConvictMetaForProperty(schemaObj, target, propertyName) { return this._reflect.defineMetadata("tsconvict:property", schemaObj, target, propertyName); } setConvictMetaForClass(schemaObj, target) { return this._reflect.defineMetadata("tsconvict:schema", schemaObj, target); } getConvictMetaForClass(target) { return this._reflect.getMetadata("tsconvict:schema", target) || null; } setPropertyForClass(target, propertyName) { let props = this.getClassProperties(target); if (props.length === 0) { this._reflect.defineMetadata("tsconvict:properties", [], target.constructor); props = this.getClassProperties(target); } return props.push(propertyName); } getClassProperties(target) { return (this._reflect.getMetadata("tsconvict:properties", target.constructor) || []); } } exports.default = new Reflector();