mirror of
				https://github.com/lingble/twenty.git
				synced 2025-10-30 20:27:55 +00:00 
			
		
		
		
	 cf334ada0e
			
		
	
	cf334ada0e
	
	
	
		
			
			* feat: wip exception handlers * feat: exception capturer * fix: rename exception-capturer into exception-handler * fix: remove unused variable
		
			
				
	
	
		
			59 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { DynamicModule, Global, ConsoleLogger, Module } from '@nestjs/common';
 | |
| 
 | |
| import { LoggerDriverType } from 'src/integrations/logger/interfaces';
 | |
| 
 | |
| import { LoggerService } from './logger.service';
 | |
| import { LOGGER_DRIVER } from './logger.constants';
 | |
| import {
 | |
|   ASYNC_OPTIONS_TYPE,
 | |
|   ConfigurableModuleClass,
 | |
|   OPTIONS_TYPE,
 | |
| } from './logger.module-definition';
 | |
| 
 | |
| @Global()
 | |
| @Module({
 | |
|   providers: [LoggerService],
 | |
|   exports: [LoggerService],
 | |
| })
 | |
| export class LoggerModule extends ConfigurableModuleClass {
 | |
|   static forRoot(options: typeof OPTIONS_TYPE): DynamicModule {
 | |
|     const provider = {
 | |
|       provide: LOGGER_DRIVER,
 | |
|       useValue:
 | |
|         options.type === LoggerDriverType.Console
 | |
|           ? new ConsoleLogger()
 | |
|           : undefined,
 | |
|     };
 | |
|     const dynamicModule = super.forRoot(options);
 | |
| 
 | |
|     return {
 | |
|       ...dynamicModule,
 | |
|       providers: [...(dynamicModule.providers ?? []), provider],
 | |
|     };
 | |
|   }
 | |
| 
 | |
|   static forRootAsync(options: typeof ASYNC_OPTIONS_TYPE): DynamicModule {
 | |
|     const provider = {
 | |
|       provide: LOGGER_DRIVER,
 | |
|       useFactory: async (...args: any[]) => {
 | |
|         const config = await options?.useFactory?.(...args);
 | |
| 
 | |
|         if (!config) {
 | |
|           return null;
 | |
|         }
 | |
| 
 | |
|         return config?.type === LoggerDriverType.Console
 | |
|           ? new ConsoleLogger()
 | |
|           : undefined;
 | |
|       },
 | |
|       inject: options.inject || [],
 | |
|     };
 | |
|     const dynamicModule = super.forRootAsync(options);
 | |
| 
 | |
|     return {
 | |
|       ...dynamicModule,
 | |
|       providers: [...(dynamicModule.providers ?? []), provider],
 | |
|     };
 | |
|   }
 | |
| }
 |