1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.ListenerMetadataExplorer = void 0;
|
4 | const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
|
5 | const constants_1 = require("./constants");
|
6 | const pattern_handler_enum_1 = require("./enums/pattern-handler.enum");
|
7 | class ListenerMetadataExplorer {
|
8 | constructor(metadataScanner) {
|
9 | this.metadataScanner = metadataScanner;
|
10 | }
|
11 | explore(instance) {
|
12 | const instancePrototype = Object.getPrototypeOf(instance);
|
13 | return this.metadataScanner.scanFromPrototype(instance, instancePrototype, method => this.exploreMethodMetadata(instancePrototype, method));
|
14 | }
|
15 | exploreMethodMetadata(instancePrototype, methodKey) {
|
16 | const targetCallback = instancePrototype[methodKey];
|
17 | const handlerType = Reflect.getMetadata(constants_1.PATTERN_HANDLER_METADATA, targetCallback);
|
18 | if (shared_utils_1.isUndefined(handlerType)) {
|
19 | return;
|
20 | }
|
21 | const pattern = Reflect.getMetadata(constants_1.PATTERN_METADATA, targetCallback);
|
22 | const transport = Reflect.getMetadata(constants_1.TRANSPORT_METADATA, targetCallback);
|
23 | return {
|
24 | methodKey,
|
25 | targetCallback,
|
26 | pattern,
|
27 | transport,
|
28 | isEventHandler: handlerType === pattern_handler_enum_1.PatternHandler.EVENT,
|
29 | };
|
30 | }
|
31 | *scanForClientHooks(instance) {
|
32 | for (const propertyKey in instance) {
|
33 | if (shared_utils_1.isFunction(propertyKey)) {
|
34 | continue;
|
35 | }
|
36 | const property = String(propertyKey);
|
37 | const isClient = Reflect.getMetadata(constants_1.CLIENT_METADATA, instance, property);
|
38 | if (shared_utils_1.isUndefined(isClient)) {
|
39 | continue;
|
40 | }
|
41 | const metadata = Reflect.getMetadata(constants_1.CLIENT_CONFIGURATION_METADATA, instance, property);
|
42 | yield { property, metadata };
|
43 | }
|
44 | }
|
45 | }
|
46 | exports.ListenerMetadataExplorer = ListenerMetadataExplorer;
|