UNPKG

1.26 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.MetadataScanner = void 0;
4const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
5const iterare_1 = require("iterare");
6class MetadataScanner {
7 scanFromPrototype(instance, prototype, callback) {
8 const methodNames = new Set(this.getAllFilteredMethodNames(prototype));
9 return (0, iterare_1.iterate)(methodNames)
10 .map(callback)
11 .filter(metadata => !(0, shared_utils_1.isNil)(metadata))
12 .toArray();
13 }
14 *getAllFilteredMethodNames(prototype) {
15 const isMethod = (prop) => {
16 const descriptor = Object.getOwnPropertyDescriptor(prototype, prop);
17 if (descriptor.set || descriptor.get) {
18 return false;
19 }
20 return !(0, shared_utils_1.isConstructor)(prop) && (0, shared_utils_1.isFunction)(prototype[prop]);
21 };
22 do {
23 yield* (0, iterare_1.iterate)(Object.getOwnPropertyNames(prototype))
24 .filter(isMethod)
25 .toArray();
26 } while ((prototype = Reflect.getPrototypeOf(prototype)) &&
27 prototype !== Object.prototype);
28 }
29}
30exports.MetadataScanner = MetadataScanner;