UNPKG

@ahmedhegazee/nestjs-telescope

Version:

Advanced observability and monitoring solution for NestJS applications with ML-powered analytics, enterprise features, and production-ready scaling

119 lines 5.18 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 TelescopeModule_1; Object.defineProperty(exports, "__esModule", { value: true }); exports.TelescopeModule = void 0; const common_1 = require("@nestjs/common"); const config_1 = require("@nestjs/config"); const telescope_service_1 = require("./core/services/telescope.service"); const entry_manager_service_1 = require("./core/services/entry-manager.service"); const storage_service_1 = require("./storage/storage.service"); const storage_manager_service_1 = require("./storage/storage-manager.service"); const memory_storage_driver_1 = require("./storage/drivers/memory-storage.driver"); const file_storage_driver_1 = require("./storage/drivers/file-storage.driver"); const redis_storage_driver_1 = require("./storage/drivers/redis-storage.driver"); const watcher_registry_service_1 = require("./watchers/watcher-registry.service"); const telescope_config_interface_1 = require("./core/interfaces/telescope-config.interface"); let TelescopeModule = TelescopeModule_1 = class TelescopeModule { static forRoot(config = {}) { const mergedConfig = { ...telescope_config_interface_1.defaultTelescopeConfig, ...config }; const providers = this.buildProviders(mergedConfig); const imports = this.buildImports(mergedConfig); const exports = this.buildExports(mergedConfig); const controllers = this.buildControllers(mergedConfig); return { module: TelescopeModule_1, imports, controllers, providers, exports, }; } static buildImports(config) { const imports = []; imports.push(config_1.ConfigModule.forFeature(() => ({ telescope: config, }))); return imports; } static buildProviders(config) { const providers = []; providers.push({ provide: 'TELESCOPE_CONFIG', useValue: config, }); providers.push(storage_service_1.StorageService, entry_manager_service_1.EntryManagerService, telescope_service_1.TelescopeService, watcher_registry_service_1.WatcherRegistryService, common_1.Logger); providers.push({ provide: memory_storage_driver_1.MemoryStorageDriver, useFactory: () => new memory_storage_driver_1.MemoryStorageDriver(), }, { provide: file_storage_driver_1.FileStorageDriver, useFactory: (cfg) => new file_storage_driver_1.FileStorageDriver(cfg.storage), inject: ['TELESCOPE_CONFIG'], }); if (this.isDependencyAvailable('redis')) { providers.push({ provide: redis_storage_driver_1.RedisStorageDriver, useFactory: (cfg) => new redis_storage_driver_1.RedisStorageDriver(cfg.storage), inject: ['TELESCOPE_CONFIG'], }); } providers.push(storage_manager_service_1.StorageManagerService); return providers; } static buildControllers(config) { const controllers = []; return controllers; } static buildExports(config) { const exports = [ 'TELESCOPE_CONFIG', telescope_service_1.TelescopeService, storage_manager_service_1.StorageManagerService, watcher_registry_service_1.WatcherRegistryService, ]; return exports; } static isFeatureEnabled(config, feature) { return true; } static isDependencyAvailable(dependency) { try { switch (dependency) { case 'redis': require.resolve('redis'); return true; case 'bull': require.resolve('bull'); return true; case 'typeorm': require.resolve('typeorm'); return true; case '@nestjs/bull': require.resolve('@nestjs/bull'); return true; case 'puppeteer': require.resolve('puppeteer'); return true; default: return false; } } catch (error) { common_1.Logger.warn(`Optional dependency '${dependency}' not available: ${error.message}`); return false; } } }; exports.TelescopeModule = TelescopeModule; exports.TelescopeModule = TelescopeModule = TelescopeModule_1 = __decorate([ (0, common_1.Module)({ providers: [common_1.Logger], }) ], TelescopeModule); //# sourceMappingURL=telescope.module.js.map