@nestjsforge/echarts

Configuration (forRootAsync)

Configure EChartsModule asynchronously using useFactory, useClass, or useExisting.

Use EChartsModule.forRootAsync() when configuration depends on other providers (e.g., ConfigService).

useFactory

app.module.ts
import { ConfigModule, ConfigService } from '@nestjs/config';

EChartsModule.forRootAsync({
  imports: [ConfigModule],
  inject: [ConfigService],
  useFactory: (config: ConfigService) => ({
    poolSize: config.get<number>('ECHARTS_POOL_SIZE', 2),
    timeout: config.get<number>('ECHARTS_TIMEOUT', 15_000),
    defaultTheme: config.get<string>('ECHARTS_THEME', 'dark'),
    puppeteerOptions: {
      executablePath: config.get('CHROME_PATH'),
      args: ['--no-sandbox', '--disable-setuid-sandbox'],
    },
  }),
})

useClass

Use useClass to provide a class that implements EChartsOptionsFactory:

echarts-config.service.ts
import { Injectable } from '@nestjs/common';
import { EChartsOptionsFactory, EChartsModuleOptions } from '@nestjsforge/echarts';

@Injectable()
export class EChartsConfigService implements EChartsOptionsFactory {
  createEChartsOptions(): EChartsModuleOptions {
    return {
      poolSize: 3,
      timeout: 20_000,
      defaultTheme: 'dark',
    };
  }
}

// In AppModule:
EChartsModule.forRootAsync({ useClass: EChartsConfigService })

useExisting

Reuse an existing provider that implements EChartsOptionsFactory:

app.module.ts
EChartsModule.forRootAsync({
  imports: [SharedConfigModule],
  useExisting: AppConfigService,
})