@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
JavaScript
;
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