import type { NestModuleDefinition } from '@rsdk/common.nestjs'; import { LoggerFactory } from '@rsdk/logging'; import type { RsdkMetadataProvider } from '@rsdk/metadata'; import { LOGGING_RSDK_METADATA_SCOPE } from './metadata/constants'; import type { LoggingRsdkMetadata } from './types'; class GlobalLoggerProvidersGenerator { generate(rsdkMetadataProvider: RsdkMetadataProvider): NestModuleDefinition { const resources = rsdkMetadataProvider.get( LOGGING_RSDK_METADATA_SCOPE, ); const providers = resources.map(({ value }) => ({ provide: value.token, useValue: LoggerFactory.create(value.context), })); return { global: true, providers: providers, module: GlobalLoggerProvidersGenerator, exports: providers, }; } } export const globalLoggerProvidersModule = new GlobalLoggerProvidersGenerator();