UNPKG

nestwhats

Version:

A whatsapp-web.js wrapper for NestJS to create WhatsApp bots

64 lines (63 loc) 3.34 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ExplorerService = void 0; const common_1 = require("@nestjs/common"); const constants_1 = require("@nestjs/common/constants"); const core_1 = require("@nestjs/core"); const external_context_creator_1 = require("@nestjs/core/helpers/external-context-creator"); const constants_2 = require("@nestjs/core/injector/constants"); const context_1 = require("./context"); let ExplorerService = class ExplorerService extends core_1.Reflector { constructor(discoveryService, externalContextCreator, metadataScanner) { super(); this.discoveryService = discoveryService; this.externalContextCreator = externalContextCreator; this.metadataScanner = metadataScanner; this.moduleParamsFactory = new context_1.NestWhatsParamsFactory(); } explore(metadataKey) { const wrappers = this.discoveryService.getProviders().filter((wrapper) => { const { instance } = wrapper; const prototype = instance ? Object.getPrototypeOf(instance) : null; return instance && prototype && wrapper.isDependencyTreeStatic(); }); return wrappers .flatMap((wrapper) => this.filterProperties(wrapper, metadataKey)) .filter((item) => !!item); } filterProperties({ instance }, metadataKey) { const prototype = Object.getPrototypeOf(instance); return this.metadataScanner .getAllMethodNames(prototype) .map((methodName) => { const item = this.get(metadataKey, instance[methodName]); if (!item) return; item.setDiscoveryMeta({ class: instance.constructor, handler: instance[methodName], }); item.setContextCallback(this.createContextCallback(instance, prototype, methodName)); return item; }); } createContextCallback(instance, prototype, methodName) { return this.externalContextCreator.create(instance, prototype[methodName], methodName, constants_1.ROUTE_ARGS_METADATA, this.moduleParamsFactory, constants_2.STATIC_CONTEXT, undefined, { guards: true, filters: true, interceptors: true }, "nestwhats"); } }; exports.ExplorerService = ExplorerService; exports.ExplorerService = ExplorerService = __decorate([ (0, common_1.Injectable)(), __metadata("design:paramtypes", [core_1.DiscoveryService, external_context_creator_1.ExternalContextCreator, core_1.MetadataScanner]) ], ExplorerService);