UNPKG

@tsclean/core

Version:

Plugin for API Rest Full development, based on Clean Architecture, IoC and Dependency Injection.

64 lines 7.95 kB
"use strict"; 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