UNPKG

tg-bot-builder

Version:

Modular NestJS builder for multi-step Telegram bots with Prisma persistence and pluggable session storage.

94 lines 4.08 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 BotBuilder_1; Object.defineProperty(exports, "__esModule", { value: true }); exports.BotBuilder = void 0; const common_1 = require("@nestjs/common"); const app_constants_1 = require("./app.constants"); const builder_service_1 = require("./builder/builder.service"); const bot_registry_service_1 = require("./builder/bot-registry.service"); const bot_runtime_1 = require("./builder/bot-runtime"); const BOT_BUILDER_BOTS_REGISTRATION = Symbol('BOT_BUILDER_BOTS_REGISTRATION'); let BotBuilder = BotBuilder_1 = class BotBuilder { static forRootAsync(options) { const asyncOptions = this.createAsyncOptionsProvider(options); const botsRegistration = this.createBotsRegistrationProvider(); const prismaProvider = this.createPrismaProvider(); return { module: BotBuilder_1, imports: options.imports ?? [], providers: [ asyncOptions, builder_service_1.BuilderService, botsRegistration, bot_registry_service_1.BotRegistryService, prismaProvider, ], exports: [ BotBuilder_1, builder_service_1.BuilderService, bot_registry_service_1.BotRegistryService, app_constants_1.BOT_BUILDER_MODULE_OPTIONS, app_constants_1.BOT_BUILDER_PRISMA, ], }; } static forFeature(options) { const normalized = this.normalizeOptions(options); const featureToken = Symbol('BOT_BUILDER_FEATURE_REGISTRATION'); const featureRegistration = { provide: featureToken, useFactory: (builderService) => { builderService.registerBots(normalized); return true; }, inject: [builder_service_1.BuilderService], }; return { module: BotBuilder_1, providers: [featureRegistration], exports: [builder_service_1.BuilderService], }; } static createAsyncOptionsProvider(options) { return { provide: app_constants_1.BOT_BUILDER_MODULE_OPTIONS, useFactory: async (...args) => { const resolvedOptions = await options.useFactory(...args); return BotBuilder_1.normalizeOptions(resolvedOptions); }, inject: options.inject || [], }; } static createBotsRegistrationProvider() { return { provide: BOT_BUILDER_BOTS_REGISTRATION, useFactory: (builderService, options) => { builderService.registerBots(options); return true; }, inject: [builder_service_1.BuilderService, app_constants_1.BOT_BUILDER_MODULE_OPTIONS], }; } static createPrismaProvider() { return { provide: app_constants_1.BOT_BUILDER_PRISMA, useFactory: (options) => options.find((option) => option.prisma)?.prisma, inject: [app_constants_1.BOT_BUILDER_MODULE_OPTIONS], }; } static normalizeOptions(options) { const list = Array.isArray(options) ? options : [options]; return list.map((option, index) => (0, bot_runtime_1.normalizeBotOptions)(option, index)); } }; exports.BotBuilder = BotBuilder; exports.BotBuilder = BotBuilder = BotBuilder_1 = __decorate([ (0, common_1.Module)({}) ], BotBuilder); //# sourceMappingURL=app.module.js.map