@opra/nestjs
Version:
Opra NestJS module
37 lines (36 loc) • 1.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.OpraNestUtils = void 0;
const GUARDS_METADATA = '__guards__';
const INTERCEPTORS_METADATA = '__interceptors__';
const EXCEPTION_FILTERS_METADATA = '__exceptionFilters__';
class OpraNestUtils {
static copyDecoratorMetadata(target, ...source) {
for (const parent of source) {
const metadataKeys = Reflect.getOwnMetadataKeys(parent);
for (const key of metadataKeys) {
if (typeof key === 'string' &&
key.startsWith('opra.') &&
!Reflect.hasOwnMetadata(key, target)) {
const metadata = Reflect.getMetadata(key, parent);
Reflect.defineMetadata(key, metadata, target);
continue;
}
if (key === GUARDS_METADATA ||
key === INTERCEPTORS_METADATA ||
key === EXCEPTION_FILTERS_METADATA) {
const m1 = Reflect.getMetadata(key, target) || [];
const metadata = [...m1];
const m2 = Reflect.getOwnMetadata(key, parent) || [];
m2.forEach((t) => {
if (!metadata.includes(t)) {
metadata.push(t);
}
});
Reflect.defineMetadata(key, metadata, target);
}
}
}
}
}
exports.OpraNestUtils = OpraNestUtils;