UNPKG

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