File

projects/opentelemetry-interceptor/src/lib/otel-webtracer.module.ts

Methods

Static forRoot
forRoot(config: OpenTelemetryConfig | null | undefined, configProvider?: ValueProvider | ClassProvider | ConstructorProvider | ExistingProvider | FactoryProvider)
Parameters :
Name Type Optional
config OpenTelemetryConfig | null | undefined No
configProvider ValueProvider | ClassProvider | ConstructorProvider | ExistingProvider | FactoryProvider Yes
import {
  APP_INITIALIZER,
  ClassProvider,
  ConstructorProvider,
  ExistingProvider,
  FactoryProvider,
  ModuleWithProviders,
  NgModule,
  Optional,
  SkipSelf,
  ValueProvider,
} from '@angular/core';
import {
  defineConfigProvider,
  OpenTelemetryConfig,
} from './configuration/opentelemetry-config';
import { InstrumentationService } from './services/instrumentation/instrumentation.service';

export const instruServiceLoader = (instrumentationService: InstrumentationService) => {
  const loader = () => instrumentationService.initInstrumentation();
  return loader;
};


@NgModule()
export class OtelWebTracerModule {

  constructor(
    @Optional() @SkipSelf() parentModule?: OtelWebTracerModule
  ) {
    if (parentModule) {
      throw new Error(
        'OtelWebTracerModule is already loaded. Import it in the AppModule only'
      );
    }
  }

  public static forRoot(
    config: OpenTelemetryConfig | null | undefined,
    configProvider?: ValueProvider | ClassProvider | ConstructorProvider | ExistingProvider | FactoryProvider
  ): ModuleWithProviders<OtelWebTracerModule> {

    configProvider = defineConfigProvider(config, configProvider);

    return {
      ngModule: OtelWebTracerModule,
      providers: [
        configProvider,
        InstrumentationService,
        {
          provide: APP_INITIALIZER,
          useFactory: instruServiceLoader,
          deps: [InstrumentationService],
          multi: true
        }
      ],
    };
  }
}

results matching ""

    No results matching ""