@tsclean/core
Version:
Plugin for API Rest Full development, based on Clean Architecture, IoC and Dependency Injection.
64 lines • 7.95 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Reflector = void 0;
const shared_utils_1 = require("../utils/shared.utils");
class Reflector {
/**
* Retrieve metadata for a specified key for a specified target.
*
* @example
* `const roles = this.reflector.get<string[]>('roles', context.getHandler());`
*
* @param metadataKey lookup key for metadata to retrieve
* @param target context (decorated object) to retrieve metadata from
*
*/
get(metadataKey, target) {
return Reflect.getMetadata(metadataKey, target);
}
/**
* Retrieve metadata for a specified key for a specified set of targets.
*
* @param metadataKey lookup key for metadata to retrieve
* @param targets context (decorated objects) to retrieve metadata from
*
*/
getAll(metadataKey, targets) {
return (targets || []).map(target => Reflect.getMetadata(metadataKey, target));
}
/**
* Retrieve metadata for a specified key for a specified set of targets and merge results.
*
* @param metadataKey lookup key for metadata to retrieve
* @param targets context (decorated objects) to retrieve metadata from
*
*/
getAllAndMerge(metadataKey, targets) {
const metadataCollection = this.getAll(metadataKey, targets).filter(item => item !== undefined);
if ((0, shared_utils_1.isEmpty)(metadataCollection)) {
return metadataCollection;
}
return metadataCollection.reduce((a, b) => {
if (Array.isArray(a)) {
return a.concat(b);
}
if ((0, shared_utils_1.isObject)(a) && (0, shared_utils_1.isObject)(b)) {
return Object.assign(Object.assign({}, a), b);
}
return [a, b];
});
}
/**
* Retrieve metadata for a specified key for a specified set of targets and return a first not undefined value.
*
* @param metadataKey lookup key for metadata to retrieve
* @param targets context (decorated objects) to retrieve metadata from
*
*/
getAllAndOverride(metadataKey, targets) {
const metadataCollection = this.getAll(metadataKey, targets).filter(item => item !== undefined);
return metadataCollection[0];
}
}
exports.Reflector = Reflector;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvcmVmbGVjdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBUUEsd0RBQXdEO0FBRXhELE1BQWEsU0FBUztJQUNwQjs7Ozs7Ozs7O09BU0c7SUFDSSxHQUFHLENBQ1IsV0FBaUIsRUFDakIsTUFBNEI7UUFFNUIsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQVksQ0FBQztJQUM3RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUNYLFdBQWlCLEVBQ2pCLE9BQWlDO1FBRWpDLE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQ2xDLE9BQU8sQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUM5QixDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGNBQWMsQ0FDbkIsV0FBaUIsRUFDakIsT0FBaUM7UUFFakMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUNwQyxXQUFXLEVBQ1gsT0FBTyxDQUNSLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDO1FBRXJDLElBQUksSUFBQSxzQkFBTyxFQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztZQUNoQyxPQUFPLGtCQUE2QixDQUFDO1FBQ3ZDLENBQUM7UUFDRCxPQUFPLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN4QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDckIsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JCLENBQUM7WUFDRCxJQUFJLElBQUEsdUJBQVEsRUFBQyxDQUFDLENBQUMsSUFBSSxJQUFBLHVCQUFRLEVBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsdUNBQ0ssQ0FBQyxHQUNELENBQUMsRUFDSjtZQUNKLENBQUM7WUFDRCxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGlCQUFpQixDQUN0QixXQUFpQixFQUNqQixPQUFpQztRQUVqQyxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FDakUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUMzQixDQUFDO1FBQ0YsT0FBTyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixDQUFDO0NBQ0Y7QUFuRkQsOEJBbUZDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBIZWxwZXIgY2xhc3MgcHJvdmlkaW5nIE5lc3QgcmVmbGVjdGlvbiBjYXBhYmlsaXRpZXMuXG4gKlxuICogQHNlZSBbUmVmbGVjdGlvbl0oaHR0cHM6Ly9kb2NzLm5lc3Rqcy5jb20vZ3VhcmRzI3B1dHRpbmctaXQtYWxsLXRvZ2V0aGVyKVxuICpcbiAqIEBwdWJsaWNBcGlcbiAqL1xuaW1wb3J0IHtUeXBlfSBmcm9tIFwiLi4vY29udHJhY3RzXCI7XG5pbXBvcnQge2lzRW1wdHksIGlzT2JqZWN0fSBmcm9tIFwiLi4vdXRpbHMvc2hhcmVkLnV0aWxzXCI7XG5cbmV4cG9ydCBjbGFzcyBSZWZsZWN0b3Ige1xuICAvKipcbiAgICogUmV0cmlldmUgbWV0YWRhdGEgZm9yIGEgc3BlY2lmaWVkIGtleSBmb3IgYSBzcGVjaWZpZWQgdGFyZ2V0LlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgY29uc3Qgcm9sZXMgPSB0aGlzLnJlZmxlY3Rvci5nZXQ8c3RyaW5nW10+KCdyb2xlcycsIGNvbnRleHQuZ2V0SGFuZGxlcigpKTtgXG4gICAqXG4gICAqIEBwYXJhbSBtZXRhZGF0YUtleSBsb29rdXAga2V5IGZvciBtZXRhZGF0YSB0byByZXRyaWV2ZVxuICAgKiBAcGFyYW0gdGFyZ2V0IGNvbnRleHQgKGRlY29yYXRlZCBvYmplY3QpIHRvIHJldHJpZXZlIG1ldGFkYXRhIGZyb21cbiAgICpcbiAgICovXG4gIHB1YmxpYyBnZXQ8VFJlc3VsdCA9IGFueSwgVEtleSA9IGFueT4oXG4gICAgbWV0YWRhdGFLZXk6IFRLZXksXG4gICAgdGFyZ2V0OiBUeXBlPGFueT4gfCBGdW5jdGlvbixcbiAgKTogVFJlc3VsdCB7XG4gICAgcmV0dXJuIFJlZmxlY3QuZ2V0TWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCkgYXMgVFJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSBtZXRhZGF0YSBmb3IgYSBzcGVjaWZpZWQga2V5IGZvciBhIHNwZWNpZmllZCBzZXQgb2YgdGFyZ2V0cy5cbiAgICpcbiAgICogQHBhcmFtIG1ldGFkYXRhS2V5IGxvb2t1cCBrZXkgZm9yIG1ldGFkYXRhIHRvIHJldHJpZXZlXG4gICAqIEBwYXJhbSB0YXJnZXRzIGNvbnRleHQgKGRlY29yYXRlZCBvYmplY3RzKSB0byByZXRyaWV2ZSBtZXRhZGF0YSBmcm9tXG4gICAqXG4gICAqL1xuICBwdWJsaWMgZ2V0QWxsPFRSZXN1bHQgZXh0ZW5kcyBhbnlbXSA9IGFueVtdLCBUS2V5ID0gYW55PihcbiAgICBtZXRhZGF0YUtleTogVEtleSxcbiAgICB0YXJnZXRzOiAoVHlwZTxhbnk+IHwgRnVuY3Rpb24pW10sXG4gICk6IFRSZXN1bHQge1xuICAgIHJldHVybiAodGFyZ2V0cyB8fCBbXSkubWFwKHRhcmdldCA9PlxuICAgICAgUmVmbGVjdC5nZXRNZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0KSxcbiAgICApIGFzIFRSZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgbWV0YWRhdGEgZm9yIGEgc3BlY2lmaWVkIGtleSBmb3IgYSBzcGVjaWZpZWQgc2V0IG9mIHRhcmdldHMgYW5kIG1lcmdlIHJlc3VsdHMuXG4gICAqXG4gICAqIEBwYXJhbSBtZXRhZGF0YUtleSBsb29rdXAga2V5IGZvciBtZXRhZGF0YSB0byByZXRyaWV2ZVxuICAgKiBAcGFyYW0gdGFyZ2V0cyBjb250ZXh0IChkZWNvcmF0ZWQgb2JqZWN0cykgdG8gcmV0cmlldmUgbWV0YWRhdGEgZnJvbVxuICAgKlxuICAgKi9cbiAgcHVibGljIGdldEFsbEFuZE1lcmdlPFRSZXN1bHQgZXh0ZW5kcyBhbnlbXSA9IGFueVtdLCBUS2V5ID0gYW55PihcbiAgICBtZXRhZGF0YUtleTogVEtleSxcbiAgICB0YXJnZXRzOiAoVHlwZTxhbnk+IHwgRnVuY3Rpb24pW10sXG4gICk6IFRSZXN1bHQge1xuICAgIGNvbnN0IG1ldGFkYXRhQ29sbGVjdGlvbiA9IHRoaXMuZ2V0QWxsPFRSZXN1bHQsIFRLZXk+KFxuICAgICAgbWV0YWRhdGFLZXksXG4gICAgICB0YXJnZXRzLFxuICAgICkuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gdW5kZWZpbmVkKTtcblxuICAgIGlmIChpc0VtcHR5KG1ldGFkYXRhQ29sbGVjdGlvbikpIHtcbiAgICAgIHJldHVybiBtZXRhZGF0YUNvbGxlY3Rpb24gYXMgVFJlc3VsdDtcbiAgICB9XG4gICAgcmV0dXJuIG1ldGFkYXRhQ29sbGVjdGlvbi5yZWR1Y2UoKGEsIGIpID0+IHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGEpKSB7XG4gICAgICAgIHJldHVybiBhLmNvbmNhdChiKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc09iamVjdChhKSAmJiBpc09iamVjdChiKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmEsXG4gICAgICAgICAgLi4uYixcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbYSwgYl07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgbWV0YWRhdGEgZm9yIGEgc3BlY2lmaWVkIGtleSBmb3IgYSBzcGVjaWZpZWQgc2V0IG9mIHRhcmdldHMgYW5kIHJldHVybiBhIGZpcnN0IG5vdCB1bmRlZmluZWQgdmFsdWUuXG4gICAqXG4gICAqIEBwYXJhbSBtZXRhZGF0YUtleSBsb29rdXAga2V5IGZvciBtZXRhZGF0YSB0byByZXRyaWV2ZVxuICAgKiBAcGFyYW0gdGFyZ2V0cyBjb250ZXh0IChkZWNvcmF0ZWQgb2JqZWN0cykgdG8gcmV0cmlldmUgbWV0YWRhdGEgZnJvbVxuICAgKlxuICAgKi9cbiAgcHVibGljIGdldEFsbEFuZE92ZXJyaWRlPFRSZXN1bHQgPSBhbnksIFRLZXkgPSBhbnk+KFxuICAgIG1ldGFkYXRhS2V5OiBUS2V5LFxuICAgIHRhcmdldHM6IChUeXBlPGFueT4gfCBGdW5jdGlvbilbXSxcbiAgKTogVFJlc3VsdCB7XG4gICAgY29uc3QgbWV0YWRhdGFDb2xsZWN0aW9uID0gdGhpcy5nZXRBbGwobWV0YWRhdGFLZXksIHRhcmdldHMpLmZpbHRlcihcbiAgICAgIGl0ZW0gPT4gaXRlbSAhPT0gdW5kZWZpbmVkLFxuICAgICk7XG4gICAgcmV0dXJuIG1ldGFkYXRhQ29sbGVjdGlvblswXTtcbiAgfVxufVxuIl19