{"version":3,"file":"jufab-opentelemetry-angular-interceptor.mjs","sources":["../../../projects/opentelemetry-interceptor/src/lib/configuration/opentelemetry-config.ts","../../../projects/opentelemetry-interceptor/src/lib/services/exporter/exporter.interface.ts","../../../projects/opentelemetry-interceptor/src/lib/services/propagator/propagator.interface.ts","../../../projects/opentelemetry-interceptor/src/lib/interceptor/opentelemetry-http.interceptor.ts","../../../projects/opentelemetry-interceptor/src/lib/opentelemetry-interceptor.module.ts","../../../projects/opentelemetry-interceptor/src/lib/services/exporter/otelcol/otelcol-exporter.service.ts","../../../projects/opentelemetry-interceptor/src/lib/services/exporter/otelcol/otelcol-exporter.module.ts","../../../projects/opentelemetry-interceptor/src/lib/services/exporter/console/console-span-exporter.service.ts","../../../projects/opentelemetry-interceptor/src/lib/services/exporter/console/console-span-exporter.module.ts","../../../projects/opentelemetry-interceptor/src/lib/services/exporter/zipkin/zipkin-exporter.service.ts","../../../projects/opentelemetry-interceptor/src/lib/services/exporter/zipkin/zipkin-exporter.module.ts","../../../projects/opentelemetry-interceptor/src/lib/services/exporter/noop-exporter/noop-span-exporter.service.ts","../../../projects/opentelemetry-interceptor/src/lib/services/exporter/noop-exporter/noop-span-exporter.module.ts","../../../projects/opentelemetry-interceptor/src/lib/services/propagator/b3-propagator/b3-propagator.service.ts","../../../projects/opentelemetry-interceptor/src/lib/services/propagator/b3-propagator/b3-propagator.module.ts","../../../projects/opentelemetry-interceptor/src/lib/services/propagator/w3c-trace-context-propagator/w3c-trace-context-propagator.service.ts","../../../projects/opentelemetry-interceptor/src/lib/services/propagator/jaeger-http-trace-propagator/jaeger-http-trace-propagator.service.ts","../../../projects/opentelemetry-interceptor/src/lib/services/propagator/aws-xray-propagator/aws-xray-propagator.service.ts","../../../projects/opentelemetry-interceptor/src/lib/services/propagator/composite-propagator/composite-propagator.service.ts","../../../projects/opentelemetry-interceptor/src/lib/services/propagator/composite-propagator/composite-propagator.module.ts","../../../projects/opentelemetry-interceptor/src/lib/services/propagator/aws-xray-propagator/aws-xray-propagator.module.ts","../../../projects/opentelemetry-interceptor/src/lib/services/propagator/w3c-trace-context-propagator/w3c-trace-context-propagator.module.ts","../../../projects/opentelemetry-interceptor/src/lib/services/propagator/jaeger-http-trace-propagator/jaeger-http-trace-propagator.module.ts","../../../projects/opentelemetry-interceptor/src/lib/services/propagator/noop-http-text-propagator/noop-text-map-propagator.service.ts","../../../projects/opentelemetry-interceptor/src/lib/services/propagator/noop-http-text-propagator/noop-text-map-propagator.module.ts","../../../projects/opentelemetry-interceptor/src/lib/services/instrumentation/instrumentation.service.ts","../../../projects/opentelemetry-interceptor/src/lib/otel-webtracer.module.ts","../../../projects/opentelemetry-interceptor/src/public-api.ts","../../../projects/opentelemetry-interceptor/src/jufab-opentelemetry-angular-interceptor.ts"],"sourcesContent":["import { ClassProvider, ConstructorProvider, ExistingProvider, FactoryProvider, InjectionToken, ValueProvider } from '@angular/core';\nimport { AttributeValue, DiagLogger, DiagLogLevel } from '@opentelemetry/api';\nimport { Instrumentation } from '@opentelemetry/instrumentation';\nimport { CustomSpan } from '../interceptor/custom-span.interface';\n\n/**\n * Common configuration\n */\nexport interface CommonCollectorConfig {\n  /** serviceName : Name of service in trace */\n  serviceName: string;\n  /** resourceAttributes: Extra resource attribute like service.namespace ...*/\n  resourceAttributes?: Partial<Record<string, AttributeValue>>;\n  /** console : boolean to trace in console */\n  console?: boolean;\n  /** production : boolean to use a BatchSpanExporter(async) or SimpleSpanExporter(sync) */\n  production?: boolean;\n  /** probabilitySampler */\n  probabilitySampler?: string;\n  /** log or not body response in span */\n  logBody?: boolean;\n  /** log level for opentelemetry */\n  logLevel?: DiagLogLevel;\n}\n\n/**\n * BatchSpanExporter Configuration\n */\nexport interface BatchSpanProcessorConfig {\n  /** The maximum queue size. After the size is reached spans are dropped. */\n  maxQueueSize?: string;\n  /** The maximum batch size of every export. It must be smaller or equal to maxQueueSize. */\n  maxExportBatchSize?: string;\n  /** The interval between two consecutive exports */\n  scheduledDelayMillis?: string;\n  /** How long the export can run before it is cancelled */\n  exportTimeoutMillis?: string;\n}\n\n/**\n * OpenTelemetry Collector configuration\n */\nexport interface OtelCollectorConfig {\n  /**\n   * An url (Default value: http://localhost:4318/v1/trace)\n   */\n  url?: string;\n  /**\n   * custom headers\n   */\n  headers?: Record<string, string>;\n  /**\n   * An optional limit on pending requests\n   */\n  concurrencyLimit?: string;\n  /**\n   * Maximum time the OTLP exporter will wait for each batch export.\n   * The default value is 10000ms.\n   * */\n  timeoutMillis?: string;\n}\n\n/**\n * Configuration for Zipkin\n */\nexport interface ZipkinCollectorConfig {\n  /**\n   * An url (Default value: http://localhost:9411/api/v2/spans)\n   */\n  url?: string;\n  /**\n   * custom headers\n   */\n  headers?: {\n    [key: string]: string;\n  };\n}\n\n/**\n * Configuration for JaegerPropagatorConfig\n */\nexport interface JaegerPropagatorConfig {\n  /**\n   * A custom Header for the propagator\n   */\n  customHeader?: string;\n}\n\n/**\n * Configuration for B3PropagatorConfig\n */\nexport interface B3PropagatorConfig {\n  /**\n   * Single or Multi Header for b3propagator (default: multi)\n   * Value : 'O' (single), '1' (multi)\n   */\n  multiHeader?: string;\n}\n\n/**\n * Configuration for IgnoreUrlsConfig\n */\nexport interface IgnoreUrlsConfig {\n  /**\n   * URLs that partially match any regex in ignoreUrls will not be traced.\n   * In addition, URLs that are _exact matches_ of strings in ignoreUrls will\n   * also not be traced.\n   */\n  urls?: Array<string | RegExp>;\n}\n\n/**\n * OpenTelemetryConfig\n */\nexport interface OpenTelemetryConfig {\n  /** commonConfig */\n  commonConfig: CommonCollectorConfig;\n  /** batchSpanProcessorConfig */\n  batchSpanProcessorConfig?: BatchSpanProcessorConfig;\n  /** otelcolConfig */\n  otelcolConfig?: OtelCollectorConfig;\n  /** zipkinConfig */\n  zipkinConfig?: ZipkinCollectorConfig;\n  /** jaegerPropagatorConfig */\n  jaegerPropagatorConfig?: JaegerPropagatorConfig;\n  /** b3PropagatorConfig */\n  b3PropagatorConfig?: B3PropagatorConfig;\n  /** ignoreUrls */\n  ignoreUrls?: IgnoreUrlsConfig;\n}\n\n/** OTEL_CONFIG : Config injection */\nexport const OTEL_CONFIG = new InjectionToken<OpenTelemetryConfig>('opentelemetry.config');\n\n/** Logger : injection for a logger compatible */\nexport const OTEL_LOGGER = new InjectionToken<DiagLogger>('otelcol.logger');\n\n/** custom span */\nexport const OTEL_CUSTOM_SPAN = new InjectionToken<CustomSpan>('otelcol.custom-span');\n\nexport const OTEL_INSTRUMENTATION_PLUGINS = new InjectionToken<Instrumentation[]>('otelcol.instrumentation.plugins');\n\nexport const defineConfigProvider = (\n  config: OpenTelemetryConfig | null | undefined,\n  configProvider: ValueProvider | ClassProvider | ConstructorProvider | ExistingProvider | FactoryProvider\n): ValueProvider | ClassProvider | ConstructorProvider | ExistingProvider | FactoryProvider => {\n  if (config) {\n    configProvider = { provide: OTEL_CONFIG, useValue: config };\n  } else {\n    if (configProvider) {\n      if (configProvider.provide !== OTEL_CONFIG) {\n        throw new Error(`Configuration error. token must be : ${OTEL_CONFIG} ,  your token value is : ${configProvider.provide}`);\n      }\n    } else {\n      throw new Error(`Configuration error. you must specify a configuration in config or configProvider`);\n    }\n  }\n  return configProvider;\n};\n","import { InjectionToken } from '@angular/core';\nimport { SpanExporter } from '@opentelemetry/sdk-trace-base';\n\n/**\n * Exporter interface to define a default exporter\n */\nexport interface IExporter {\n  /**\n   * give an inmplementation of SpanExporter\n   *\n   * @return SpanExporter\n   */\n  getExporter(): SpanExporter;\n}\n\n/** injection for a Exporter */\nexport const OTEL_EXPORTER = new InjectionToken<IExporter>('otelcol.exporter');\n","import { InjectionToken } from '@angular/core';\nimport { TextMapPropagator } from '@opentelemetry/api';\n\n/**\n * Interface to define propagator\n */\nexport interface IPropagator {\n  /**\n   * give an implementation of a propagator\n   *\n   * @return HttpTextPropagator\n   */\n  getPropagator(): TextMapPropagator;\n}\n\n/** injection for a propagator */\nexport const OTEL_PROPAGATOR = new InjectionToken<IPropagator>('otelcol.propagator');\n","import { Injectable, Inject, Optional } from '@angular/core';\nimport {\n  HttpRequest,\n  HttpHandler,\n  HttpEvent,\n  HttpInterceptor,\n  HttpResponse,\n  HttpErrorResponse\n} from '@angular/common/http';\nimport { PlatformLocation } from '@angular/common';\nimport { Observable } from 'rxjs';\nimport * as api from '@opentelemetry/api';\nimport { Span, SpanStatusCode, DiagLogger, SpanKind } from '@opentelemetry/api';\nimport { WebTracerProvider, StackContextManager } from '@opentelemetry/sdk-trace-web';\nimport {\n  SimpleSpanProcessor,\n  ConsoleSpanExporter,\n  BatchSpanProcessor,\n  NoopSpanProcessor,\n  AlwaysOnSampler,\n  AlwaysOffSampler,\n  TraceIdRatioBasedSampler,\n  ParentBasedSampler,\n  Sampler,\n  BufferConfig\n} from '@opentelemetry/sdk-trace-base';\nimport {\n  isUrlIgnored\n} from '@opentelemetry/core';\nimport {\n  ATTR_USER_AGENT_ORIGINAL,\n  ATTR_URL_PATH,\n  ATTR_URL_QUERY,\n  ATTR_HTTP_RESPONSE_STATUS_CODE,\n  ATTR_ERROR_TYPE,\n  ATTR_SERVICE_NAME,\n  ATTR_HTTP_REQUEST_METHOD,\n  ATTR_URL_FULL,\n  ATTR_URL_SCHEME,\n  ATTR_SERVER_ADDRESS,\n  ATTR_SERVER_PORT,\n  // ATTR_HTTP_REQUEST_HEADER,\n  //SEMATTRS_ERROR_TYPE\n} from '@opentelemetry/semantic-conventions';\nimport { Resource, resourceFromAttributes } from '@opentelemetry/resources';\nimport { tap, finalize } from 'rxjs/operators';\nimport {\n  CommonCollectorConfig,\n  OpenTelemetryConfig,\n  OTEL_CONFIG,\n} from '../configuration/opentelemetry-config';\nimport infoLibrary from '../../version.json';\nimport { OTEL_EXPORTER, IExporter } from '../services/exporter/exporter.interface';\nimport { OTEL_PROPAGATOR, IPropagator } from '../services/propagator/propagator.interface';\nimport { OTEL_LOGGER, OTEL_CUSTOM_SPAN } from '../configuration/opentelemetry-config';\nimport { CustomSpan } from './custom-span.interface';\n\n/**\n * OpenTelemetryInterceptor class\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class OpenTelemetryHttpInterceptor implements HttpInterceptor {\n  /**\n   * tracer\n   */\n  tracer: WebTracerProvider;\n  /**\n   * context manager\n   */\n  contextManager: StackContextManager;\n  /**\n   * Log or not body\n   */\n  logBody = false;\n\n   /**\n   * constructor\n   *\n   * @param config configuration\n   * @param exporterService service exporter injected\n   * @param propagatorService propagator injected\n   * @param logger define logger\n   * @param customSpan a customSpan interface to add attributes\n   * @param platformLocation encapsulates all calls to DOM APIs\n   */\n   constructor(\n    @Inject(OTEL_CONFIG) private config: OpenTelemetryConfig,\n    @Inject(OTEL_EXPORTER)\n    private exporterService: IExporter,\n    @Inject(OTEL_PROPAGATOR)\n    private propagatorService: IPropagator,\n    @Optional() @Inject(OTEL_LOGGER)\n    private logger: DiagLogger,\n    @Optional() @Inject(OTEL_CUSTOM_SPAN)\n    private customSpan: CustomSpan,\n    private platformLocation: PlatformLocation\n  ) {\n    this.tracer = new WebTracerProvider({\n      sampler: this.defineProbabilitySampler(this.convertStringToNumber(config.commonConfig.probabilitySampler)),\n      resource: this.loadResourceAttributes(this.config.commonConfig),\n      spanProcessors: this.insertOrNotSpanExporter()\n    });\n    this.contextManager = new StackContextManager();\n    this.tracer.register({\n      propagator: this.propagatorService.getPropagator(),\n      contextManager: this.contextManager\n    });\n    this.logBody = config.commonConfig.logBody;\n    api.diag.setLogger(logger, config.commonConfig.logLevel);\n  }\n\n    /**\n   * Overide method\n   * Interceptor from HttpInterceptor Angular\n   *\n   * @param request the current request\n   * @param next next\n   */\n    intercept(\n      request: HttpRequest<unknown>,\n      next: HttpHandler\n    ): Observable<HttpEvent<unknown>> {\n      if (isUrlIgnored(request.url, this.config.ignoreUrls?.urls)) {\n        return next.handle(request);\n      }\n      this.contextManager.disable(); //FIX - reinit contextManager for each http call\n      this.contextManager.enable();\n      const span: Span = this.initSpan(request);\n      const tracedReq = this.injectContextAndHeader(request);\n      return next.handle(tracedReq).pipe(\n        tap(\n          (event: HttpResponse<any>) => {\n            span.setAttributes(\n              {\n                [ATTR_HTTP_RESPONSE_STATUS_CODE]: event.status,\n              }\n            );\n            if (this.logBody && event.body != null) {\n              span.addEvent('response', { body: JSON.stringify(event.body) });\n            }\n            span.setStatus({\n              code: SpanStatusCode.UNSET\n            });\n            this.setCustomSpan(span, request, event);\n          },\n          (event: HttpErrorResponse) => {\n            span.setAttributes(\n              {\n                [ATTR_HTTP_RESPONSE_STATUS_CODE]: event.status,\n                [ATTR_ERROR_TYPE] : event.name,\n              }\n            );\n            span.recordException({\n              name: event.name,\n              message: event.message,\n              stack: event.error\n            });\n            span.setStatus({\n              code: SpanStatusCode.ERROR\n            });\n            this.setCustomSpan(span, request, event);\n          }\n        ),\n        finalize(() => {\n          span.end();\n          this.contextManager.disable();\n        })\n      );\n    }\n\n  /**\n   * Get current scheme, hostname and port\n   */\n  private getURL() {\n    return this.platformLocation.href;\n  }\n\n  /**\n   * Generate Resource Attributes\n   */\n  private loadResourceAttributes(\n    commonConfig: CommonCollectorConfig\n  ): Resource {\n    return resourceFromAttributes({\n      [ATTR_SERVICE_NAME]: commonConfig?.serviceName,\n      ...commonConfig?.resourceAttributes,\n    });\n  }\n  /**\n   * Initialise a span for a request intercepted\n   *\n   * @param request request\n   */\n  private initSpan(request: HttpRequest<unknown>): Span {\n    const urlRequest = (request.urlWithParams.startsWith('http')) ? new URL(request.urlWithParams) : new URL(this.getURL());\n    const span = this.tracer\n      .getTracer(infoLibrary.name, infoLibrary.version)\n      .startSpan(\n        `${request.method.toUpperCase()}`,\n        {\n          attributes: {\n            [ATTR_HTTP_REQUEST_METHOD]: request.method,\n            [ATTR_SERVER_ADDRESS]: urlRequest.host,\n            [ATTR_SERVER_PORT]: urlRequest.port,\n            [ATTR_URL_FULL]: request.urlWithParams,\n            [ATTR_URL_SCHEME]: urlRequest.protocol.replace(':', ''),\n            [ATTR_URL_QUERY]: urlRequest.search,\n            [ATTR_USER_AGENT_ORIGINAL]: window.navigator.userAgent\n          },\n          kind: SpanKind.CLIENT,\n        },\n        this.contextManager.active()\n      );\n    /*eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_currentContext\"] }]*/\n    this.contextManager._currentContext = api.trace.setSpan(\n      this.contextManager.active(),\n      span\n    );\n    return span;\n  }\n\n  /**\n   * Add header propagator in request and conserve original header\n   *\n   * @param request request\n   */\n  private injectContextAndHeader(\n    request: HttpRequest<unknown>\n  ) {\n    const carrier = {};\n    api.propagation.inject(\n      this.contextManager.active(),\n      carrier,\n      api.defaultTextMapSetter\n    );\n    request.headers.keys().map(key => {\n      carrier[key] = request.headers.get(key);\n    });\n    return request.clone({\n      setHeaders: carrier,\n    });\n  }\n\n  /**\n   * Verify to insert or not a Span Exporter\n   */\n  private insertOrNotSpanExporter() {\n\n    if (this.exporterService.getExporter() !== undefined) {\n      return Array.of(this.insertSpanProcessorProductionMode(), this.insertConsoleSpanExporter());\n    } else {\n      return Array.of(new NoopSpanProcessor());\n    }\n  }\n\n  /**\n   * Insert in tracer the console span if config is true\n   */\n  private insertConsoleSpanExporter() {\n    if (this.config.commonConfig.console) {\n      return new SimpleSpanProcessor(new ConsoleSpanExporter());\n    }\n  }\n\n  /**\n   * Insert BatchSpanProcessor in production mode\n   * SimpleSpanProcessor otherwise\n   */\n  private insertSpanProcessorProductionMode() {\n    const bufferConfig: BufferConfig = {\n      maxExportBatchSize: this.convertStringToNumber(this.config.batchSpanProcessorConfig?.maxExportBatchSize),\n      scheduledDelayMillis: this.convertStringToNumber(this.config.batchSpanProcessorConfig?.scheduledDelayMillis),\n      exportTimeoutMillis: this.convertStringToNumber(this.config.batchSpanProcessorConfig?.exportTimeoutMillis),\n      maxQueueSize: this.convertStringToNumber(this.config.batchSpanProcessorConfig?.maxQueueSize)\n    };\n    return this.config.commonConfig.production\n        ? new BatchSpanProcessor(this.exporterService.getExporter(), bufferConfig)\n        : new SimpleSpanProcessor(this.exporterService.getExporter());\n  }\n\n  /**\n   * define the Probability Sampler\n   * By Default, it's always (or 1)\n   *\n   * @param sampleConfig the sample configuration\n   */\n  private defineProbabilitySampler(sampleConfig: number): Sampler {\n    if (sampleConfig >= 1) {\n      return new ParentBasedSampler({ root: new AlwaysOnSampler() });\n    }\n    else if (sampleConfig <= 0 || sampleConfig === undefined) {\n      return new ParentBasedSampler({ root: new AlwaysOffSampler() });\n    } else {\n      return new ParentBasedSampler({ root: new TraceIdRatioBasedSampler(sampleConfig) });\n    }\n  }\n\n  /**\n   * convert String to Number (or undefined)\n   *\n   * @param value\n   * @returns number or undefined\n   */\n  private convertStringToNumber(value: string): number {\n    return value !== undefined ? Number(value) : undefined;\n  }\n\n  /**\n   * Set custom attributes in span with a CustomSpan\n   *\n   * @param span\n   * @param request\n   * @param response\n   * @returns Span\n   */\n  private setCustomSpan(span: Span, request: HttpRequest<unknown>, response: HttpResponse<unknown> | HttpErrorResponse): Span {\n    return this.customSpan != null ? this.customSpan.add(span, request, response) : span;\n  }\n}\n","import {\n  NgModule,\n  ModuleWithProviders,\n  Optional,\n  SkipSelf,\n  ValueProvider,\n  ClassProvider,\n  ConstructorProvider,\n  ExistingProvider,\n  FactoryProvider,\n} from '@angular/core';\nimport {\n  defineConfigProvider,\n  OpenTelemetryConfig,\n} from './configuration/opentelemetry-config';\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\nimport { OpenTelemetryHttpInterceptor } from './interceptor/opentelemetry-http.interceptor';\n\n\n@NgModule({\n  declarations: [],\n  imports: [HttpClientModule],\n  exports: [],\n})\nexport class OpenTelemetryInterceptorModule {\n  constructor(\n    @Optional() @SkipSelf() parentModule?: OpenTelemetryInterceptorModule\n  ) {\n    if (parentModule) {\n      throw new Error(\n        'OpentelemetryInterceptorModule is already loaded. Import it in the AppModule only'\n      );\n    }\n  }\n\n  public static forRoot(\n    config: OpenTelemetryConfig | null | undefined,\n    configProvider?: ValueProvider | ClassProvider | ConstructorProvider | ExistingProvider | FactoryProvider\n    ): ModuleWithProviders<OpenTelemetryInterceptorModule> {\n\n      //Interceptor\n      const interceptorProvider = {\n        provide: HTTP_INTERCEPTORS,\n        useClass: OpenTelemetryHttpInterceptor,\n        multi: true,\n      };\n\n      configProvider = defineConfigProvider(config,configProvider);\n\n    return {\n      ngModule: OpenTelemetryInterceptorModule,\n      providers: [\n        configProvider,\n        interceptorProvider,\n      ],\n    };\n  }\n\n}\n","import { Injectable, Inject, Optional } from '@angular/core';\nimport { IExporter } from '../exporter.interface';\nimport { SpanExporter } from '@opentelemetry/sdk-trace-base';\nimport {\n  OpenTelemetryConfig,\n  OTEL_CONFIG\n} from '../../../configuration/opentelemetry-config';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';\nimport { OTLPExporterConfigBase } from '@opentelemetry/otlp-exporter-base';\n\n/**\n * OtelcolExporterService class\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class OtelcolExporterService implements IExporter {\n  /**\n   * CollectorExporterConfigBase\n   */\n  private otelcolConfig: OTLPExporterConfigBase;\n\n  /**\n   * constructor\n   *\n   * @param config OpenTelemetryConfig\n   */\n  constructor(\n    @Inject(OTEL_CONFIG) config: OpenTelemetryConfig\n  ) {\n    this.otelcolConfig = {\n      url: config.otelcolConfig?.url,\n      headers: config.otelcolConfig?.headers,\n      // eslint-disable-next-line max-len\n      concurrencyLimit: Number(config.otelcolConfig?.concurrencyLimit ?? 0) <= 0 ? undefined : Number(config.otelcolConfig?.concurrencyLimit),\n      timeoutMillis: Number(config.otelcolConfig?.timeoutMillis ?? 0) <= 0 ? undefined :  Number(config.otelcolConfig?.timeoutMillis)\n    };\n  }\n\n  /**\n   * Return a CollectorExporter with the configuration\n   *\n   * @return a CollectorExporter\n   */\n  getExporter(): SpanExporter {\n    return new OTLPTraceExporter(this.otelcolConfig);\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { OtelcolExporterService } from './otelcol-exporter.service';\nimport { OTEL_EXPORTER } from '../exporter.interface';\n\n\n@NgModule({\n  declarations: [],\n  imports: [],\n  providers: [\n    { provide: OTEL_EXPORTER, useClass: OtelcolExporterService },\n  ]\n})\nexport class OtelColExporterModule {\n}\n","import { Injectable } from '@angular/core';\nimport { IExporter } from '../exporter.interface';\nimport { SpanExporter, ConsoleSpanExporter } from '@opentelemetry/sdk-trace-base';\n\n/**\n * ConsoleSpanExporterService\n * A default span exporter\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class ConsoleSpanExporterService implements IExporter {\n  /**\n   * Return a ConsoleSpanExporter\n   *\n   * @return SpanExporter\n   */\n  getExporter(): SpanExporter {\n    return new ConsoleSpanExporter();\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { ConsoleSpanExporterService } from './console-span-exporter.service';\nimport { OTEL_EXPORTER } from '../exporter.interface';\n\n\n\n@NgModule({\n  declarations: [],\n  imports: [],\n  providers: [\n    { provide: OTEL_EXPORTER, useClass: ConsoleSpanExporterService }\n  ]\n})\nexport class ConsoleSpanExporterModule {\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { IExporter } from '../exporter.interface';\nimport { SpanExporter } from '@opentelemetry/sdk-trace-base';\nimport { OpenTelemetryConfig, OTEL_CONFIG } from '../../../configuration/opentelemetry-config';\nimport { ZipkinExporter, ExporterConfig } from '@opentelemetry/exporter-zipkin';\n\n/**\n * ZipkinExporterService class\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class ZipkinExporterService implements IExporter {\n  /**\n   * zipkinConfig\n   */\n  private zipkinConfig: ExporterConfig;\n\n  /**\n   * constructor\n   *\n   * @param config OpenTelemetryConfig\n   */\n  constructor(@Inject(OTEL_CONFIG) config: OpenTelemetryConfig) {\n    this.zipkinConfig = {\n      url: config.zipkinConfig?.url,\n      headers: config.zipkinConfig?.headers\n    };\n  }\n\n  /**\n   * Return a ZipkinExporter configured with zipkinConfig field\n   *\n   * @return SpanExporter\n   */\n  getExporter(): SpanExporter {\n    return new ZipkinExporter(this.zipkinConfig);\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { OTEL_EXPORTER } from '../exporter.interface';\nimport { ZipkinExporterService } from './zipkin-exporter.service';\n\n\n\n@NgModule({\n  declarations: [],\n  imports: [],\n  providers: [\n    { provide: OTEL_EXPORTER, useClass: ZipkinExporterService }\n  ]\n})\nexport class ZipkinExporterModule {\n}\n","import { Injectable } from '@angular/core';\nimport { IExporter } from '../exporter.interface';\nimport { SpanExporter } from '@opentelemetry/sdk-trace-base';\n\n/**\n * NoopSpanExporterService\n * A No-op span exporter\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class NoopSpanExporterService implements IExporter {\n  /**\n   * Return undefined\n   *\n   * @return SpanExporter\n   */\n  getExporter(): SpanExporter {\n    return undefined;\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NoopSpanExporterService } from './noop-span-exporter.service';\nimport { OTEL_EXPORTER } from '../exporter.interface';\n\n\n\n@NgModule({\n  declarations: [],\n  imports: [\n    CommonModule\n  ],\n  providers: [\n    { provide: OTEL_EXPORTER, useClass: NoopSpanExporterService }\n  ]\n})\nexport class NoopSpanExporterModule {\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { IPropagator } from '../propagator.interface';\nimport { TextMapPropagator } from '@opentelemetry/api';\nimport { B3Propagator, B3PropagatorConfig, B3InjectEncoding } from '@opentelemetry/propagator-b3';\nimport {\n  OpenTelemetryConfig,\n  OTEL_CONFIG,\n} from '../../../configuration/opentelemetry-config';\n\n/**\n * B3PropagatorService\n *\n * Can be a single or multi header.\n *\n * See Configuration for more information\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class B3PropagatorService implements IPropagator {\n  /**\n   * B3PropagatorConfig\n   */\n  private b3PropagatorConfig: B3PropagatorConfig;\n\n  /**\n   * Constructor\n   *\n   * @param config OpenTelemetryConfig\n   */\n  constructor(@Inject(OTEL_CONFIG) config: OpenTelemetryConfig) {\n    this.b3PropagatorConfig = {\n      injectEncoding: B3PropagatorService.defineB3Encoding(config.b3PropagatorConfig?.multiHeader)\n    };\n  }\n\n  /**\n   * Define if it's a single or multi header\n   *\n   * @param value string (0 => single header, 1 => Multi Header)\n   * @return B3InjectEncoding\n   */\n  private static defineB3Encoding(value: string): B3InjectEncoding {\n    if (value && '0' === value) {\n      return B3InjectEncoding.SINGLE_HEADER;\n    }\n    return B3InjectEncoding.MULTI_HEADER;\n  }\n\n  /**\n   * Return an B3Propagator\n   *\n   * @return TextMapPropagator as B3Propagator\n   */\n  getPropagator(): TextMapPropagator {\n    return new B3Propagator(this.b3PropagatorConfig);\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { B3PropagatorService } from './b3-propagator.service';\nimport { OTEL_PROPAGATOR } from '../propagator.interface';\n\n\n\n@NgModule({\n  declarations: [],\n  imports: [],\n  providers: [\n    { provide: OTEL_PROPAGATOR, useClass: B3PropagatorService }\n  ]\n})\nexport class B3PropagatorModule {\n}\n","import { Injectable } from '@angular/core';\nimport { IPropagator } from '../propagator.interface';\nimport { TextMapPropagator } from '@opentelemetry/api';\nimport { W3CTraceContextPropagator } from '@opentelemetry/core';\n\n/**\n * W3CTraceContextPropagatorService\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class W3CTraceContextPropagatorService implements IPropagator {\n  /**\n   * Return an W3CTraceContextPropagatorService\n   *\n   * @return TextMapPropagator as W3CTraceContextPropagatorService\n   */\n  getPropagator(): TextMapPropagator {\n    return new W3CTraceContextPropagator();\n  }\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { IPropagator } from '../propagator.interface';\nimport { TextMapPropagator } from '@opentelemetry/api';\nimport { JaegerPropagator } from '@opentelemetry/propagator-jaeger';\nimport { OTEL_CONFIG } from '../../../configuration/opentelemetry-config';\nimport { OpenTelemetryConfig } from '../../../../public-api';\n\n/**\n * JaegerHttpTracePropagatorService\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class JaegerHttpTracePropagatorService implements IPropagator {\n  /**\n   * custom Header\n   */\n  private customHeader: string;\n  /**\n   * Constructor\n   *\n   * @param config OpenTelemetryConfig\n   */\n  constructor(@Inject(OTEL_CONFIG) config: OpenTelemetryConfig) {\n    this.customHeader = config.jaegerPropagatorConfig?.customHeader;\n  }\n\n  /**\n   * Return an JaegerPropagator\n   *\n   * @return TextMapPropagator as JaegerPropagator\n   */\n  getPropagator(): TextMapPropagator {\n    return new JaegerPropagator(this.customHeader);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { IPropagator } from '../propagator.interface';\nimport { TextMapPropagator } from '@opentelemetry/api';\nimport { AWSXRayPropagator } from '@opentelemetry/propagator-aws-xray';\n/**\n * AwsXrayPropagatorService\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class AwsXrayPropagatorService implements IPropagator {\n  /**\n   * Return an AwsXrayPropagator\n   *\n   * @return TextMapPropagator as AwsXrayPropagator\n   */\n  getPropagator(): TextMapPropagator {\n    return new AWSXRayPropagator();\n  }\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { IPropagator } from '../propagator.interface';\nimport { TextMapPropagator } from '@opentelemetry/api';\nimport { CompositePropagator } from '@opentelemetry/core';\nimport { B3PropagatorService } from '../b3-propagator/b3-propagator.service';\nimport { W3CTraceContextPropagatorService } from '../w3c-trace-context-propagator/w3c-trace-context-propagator.service';\nimport { JaegerHttpTracePropagatorService } from '../jaeger-http-trace-propagator/jaeger-http-trace-propagator.service';\nimport { AwsXrayPropagatorService } from '../aws-xray-propagator/aws-xray-propagator.service';\n/**\n * CompositePropagatorService\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class CompositePropagatorService implements IPropagator {\n  /**\n   * Constructor\n   */\n  constructor(\n    @Inject(B3PropagatorService)\n    private b3PropagatorService: B3PropagatorService,\n    @Inject(W3CTraceContextPropagatorService)\n    private w3cTraceContextPropagatorService: W3CTraceContextPropagatorService,\n    @Inject(JaegerHttpTracePropagatorService)\n    private jaegerHttpTracePropagatorService: JaegerHttpTracePropagatorService,\n    @Inject(AwsXrayPropagatorService)\n    private awsXrayPropagatorService: AwsXrayPropagatorService\n  ) {}\n\n  /**\n   * Return an CompositePropagator\n   *\n   * @return TextMapPropagator as CompositePropagator\n   */\n  getPropagator(): TextMapPropagator {\n    return new CompositePropagator({\n      propagators: [\n        this.b3PropagatorService.getPropagator(),\n        this.w3cTraceContextPropagatorService.getPropagator(),\n        this.jaegerHttpTracePropagatorService.getPropagator(),\n        this.awsXrayPropagatorService.getPropagator()\n      ],\n    });\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CompositePropagatorService } from './composite-propagator.service';\nimport { OTEL_PROPAGATOR } from '../propagator.interface';\n\n\n\n@NgModule({\n  declarations: [],\n  imports: [],\n  providers: [\n    { provide: OTEL_PROPAGATOR, useClass: CompositePropagatorService }\n  ]\n})\nexport class  CompositePropagatorModule {\n}\n","import { NgModule } from '@angular/core';\nimport { OTEL_PROPAGATOR } from '../propagator.interface';\nimport { AwsXrayPropagatorService } from './aws-xray-propagator.service';\n\n\n\n@NgModule({\n  declarations: [],\n  imports: [],\n  providers: [\n    { provide: OTEL_PROPAGATOR, useClass: AwsXrayPropagatorService }\n  ]\n})\nexport class AwsXrayPropagatorModule {\n}\n","import { NgModule } from '@angular/core';\nimport { W3CTraceContextPropagatorService } from './w3c-trace-context-propagator.service';\nimport { OTEL_PROPAGATOR } from '../propagator.interface';\n\n\n\n@NgModule({\n  declarations: [],\n  imports: [],\n  providers: [\n    { provide: OTEL_PROPAGATOR, useClass: W3CTraceContextPropagatorService }\n  ]\n})\nexport class W3CTraceContextPropagatorModule {\n}\n","import { NgModule } from '@angular/core';\nimport { JaegerHttpTracePropagatorService } from './jaeger-http-trace-propagator.service';\nimport { OTEL_PROPAGATOR } from '../propagator.interface';\n\n\n\n@NgModule({\n  declarations: [],\n  imports: [],\n  providers: [\n    { provide: OTEL_PROPAGATOR, useClass: JaegerHttpTracePropagatorService }\n  ]\n})\nexport class JaegerHttpTracePropagatorModule {\n}\n","import { Injectable } from '@angular/core';\nimport { IPropagator } from '../propagator.interface';\nimport { TextMapPropagator } from '@opentelemetry/api';\n/**\n * NoopHttpTextPropagatorService\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class NoopTextMapPropagatorService implements IPropagator {\n  /**\n   * Return null\n   *\n   * @return TextMapPropagator as null\n   */\n  getPropagator(): TextMapPropagator {\n    return null;\n  }\n}\n\n","import { NgModule } from '@angular/core';\nimport { NoopTextMapPropagatorService } from './noop-text-map-propagator.service';\nimport { OTEL_PROPAGATOR } from '../propagator.interface';\n\n\n\n@NgModule({\n  declarations: [],\n  imports: [],\n  providers: [\n    { provide: OTEL_PROPAGATOR, useClass: NoopTextMapPropagatorService }\n  ]\n})\nexport class NoopTextMapPropagatorModule {\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { ZoneContextManager } from '@opentelemetry/context-zone-peer-dep';\nimport { ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions';\nimport { Instrumentation, registerInstrumentations } from '@opentelemetry/instrumentation';\nimport {\n  AlwaysOffSampler,\n  AlwaysOnSampler,\n  ParentBasedSampler,\n  Sampler,\n  TraceIdRatioBasedSampler,\n  WebTracerProvider\n} from '@opentelemetry/sdk-trace-web';\nimport {\n  ConsoleSpanExporter,\n  SimpleSpanProcessor,\n  BatchSpanProcessor,\n  NoopSpanProcessor,\n  SpanProcessor\n} from '@opentelemetry/sdk-trace-base';\n// eslint-disable-next-line max-len\nimport { OTEL_CONFIG, OpenTelemetryConfig, OTEL_INSTRUMENTATION_PLUGINS, CommonCollectorConfig } from '../../configuration/opentelemetry-config';\nimport { OTEL_EXPORTER, IExporter } from '../exporter/exporter.interface';\nimport { OTEL_PROPAGATOR, IPropagator } from '../propagator/propagator.interface';\nimport { Resource, resourceFromAttributes } from '@opentelemetry/resources';\n\n/**\n * InstrumentationService.\n * Service for component to add instrumentation.\n */\n@Injectable({\n  providedIn: 'root'\n})\nexport class InstrumentationService {\n\n  /**\n   * tracerProvider\n   */\n  private tracerProvider: WebTracerProvider;\n\n  /**\n   * contextManager\n   */\n  private contextManager = new ZoneContextManager();\n\n  /**\n   * Constructor\n   *\n   * @param config\n   * @param exporterService\n   * @param propagatorService\n   */\n  constructor(@Inject(OTEL_CONFIG) private config: OpenTelemetryConfig,\n    @Inject(OTEL_EXPORTER)\n    private exporterService: IExporter,\n    @Inject(OTEL_PROPAGATOR)\n    private propagatorService: IPropagator,\n    @Inject(OTEL_INSTRUMENTATION_PLUGINS)\n    private instrumentation: Instrumentation[]) {\n    this.tracerProvider = new WebTracerProvider({\n      sampler: this.defineProbabilitySampler(this.convertStringToNumber(this.config.commonConfig.probabilitySampler)),\n      resource: this.loadResourceAttributes(this.config.commonConfig),\n      spanProcessors: this.insertOrNotSpanExporter(this.config.commonConfig.production,\n        this.exporterService, this.config.commonConfig.console),\n    });\n  }\n\n  /**\n   * Init instrumentation on init\n   */\n  public initInstrumentation() {\n    this.tracerProvider.register({\n      contextManager: this.contextManager,\n      propagator: this.propagatorService.getPropagator(),\n    });\n\n    registerInstrumentations({\n      instrumentations: this.instrumentation,\n      tracerProvider: this.tracerProvider,\n    });\n  }\n\n  /**\n   * Generate Resource Attributes\n   * @param commonConfig common configuration\n   * @returns Resource\n   */\n  private loadResourceAttributes(\n    commonConfig: CommonCollectorConfig\n  ): Resource {\n    return resourceFromAttributes({\n      [ATTR_SERVICE_NAME]: commonConfig?.serviceName,\n      ...commonConfig?.resourceAttributes,\n    });\n  }\n\n  /**\n   * Verify to insert or not a Span Exporter\n   * @param console config to insert console span\n   * @param production production mode\n   * @param exporter exporter\n   * @returns Array of SpanProcessor\n   */\n  private insertOrNotSpanExporter(production: boolean, exporter: IExporter, console: boolean): Array<SpanProcessor> {\n    if (this.exporterService.getExporter() !== undefined) {\n      return Array.of(this.insertSpanProcessorProductionMode(production, exporter),\n        this.insertConsoleSpanExporter(console));\n    } else {\n      return Array.of(new NoopSpanProcessor());\n    }\n  }\n\n  /**\n   * Insert in tracer the console span if config is true\n   *\n   * @param console config to insert console span\n   * @returns SpanProcessor\n   */\n  private insertConsoleSpanExporter(console: boolean): SpanProcessor {\n    if (console) {\n      return new SimpleSpanProcessor(new ConsoleSpanExporter());\n    }\n  }\n\n  /**\n   * Insert BatchSpanProcessor in production mode\n   * SimpleSpanProcessor otherwise\n   *\n   * @param boolean production\n   * @param IExporter exporter\n   * @returns SpanProcessor\n   */\n  private insertSpanProcessorProductionMode(\n    production: boolean,\n    exporter: IExporter\n  ): SpanProcessor {\n    return production\n      ? new BatchSpanProcessor(exporter.getExporter())\n      : new SimpleSpanProcessor(exporter.getExporter());\n  }\n\n  /**\n   * convert String to Number (or undefined)\n   *\n   * @param value\n   * @returns number or undefined\n   */\n  private convertStringToNumber(value: string): number {\n    return value !== undefined ? Number(value) : undefined;\n  }\n\n  /**\n   * define the Probability Sampler\n   * By Default, it's always (or 1)\n   *\n   * @param sampleConfig the sample configuration\n   * @returns Sampler\n   */\n  private defineProbabilitySampler(sampleConfig: number): Sampler {\n    if (sampleConfig >= 1) {\n      return new ParentBasedSampler({ root: new AlwaysOnSampler() });\n    }\n    else if (sampleConfig <= 0 || sampleConfig === undefined) {\n      return new ParentBasedSampler({ root: new AlwaysOffSampler() });\n    } else {\n      return new ParentBasedSampler({ root: new TraceIdRatioBasedSampler(sampleConfig) });\n    }\n  }\n}\n","import {\n  APP_INITIALIZER,\n  ClassProvider,\n  ConstructorProvider,\n  ExistingProvider,\n  FactoryProvider,\n  ModuleWithProviders,\n  NgModule,\n  Optional,\n  SkipSelf,\n  ValueProvider,\n} from '@angular/core';\nimport {\n  defineConfigProvider,\n  OpenTelemetryConfig,\n} from './configuration/opentelemetry-config';\nimport { InstrumentationService } from './services/instrumentation/instrumentation.service';\n\nexport const instruServiceLoader = (instrumentationService: InstrumentationService) => {\n  const loader = () => instrumentationService.initInstrumentation();\n  return loader;\n};\n\n\n@NgModule()\nexport class OtelWebTracerModule {\n\n  constructor(\n    @Optional() @SkipSelf() parentModule?: OtelWebTracerModule\n  ) {\n    if (parentModule) {\n      throw new Error(\n        'OtelWebTracerModule is already loaded. Import it in the AppModule only'\n      );\n    }\n  }\n\n  public static forRoot(\n    config: OpenTelemetryConfig | null | undefined,\n    configProvider?: ValueProvider | ClassProvider | ConstructorProvider | ExistingProvider | FactoryProvider\n  ): ModuleWithProviders<OtelWebTracerModule> {\n\n    configProvider = defineConfigProvider(config, configProvider);\n\n    return {\n      ngModule: OtelWebTracerModule,\n      providers: [\n        configProvider,\n        InstrumentationService,\n        {\n          provide: APP_INITIALIZER,\n          useFactory: instruServiceLoader,\n          deps: [InstrumentationService],\n          multi: true\n        }\n      ],\n    };\n  }\n}\n","/*\n * Public API Surface of opentelemetry-interceptor\n */\n// Interceptor\nexport { OpenTelemetryInterceptorModule } from './lib/opentelemetry-interceptor.module';\nexport { OpenTelemetryHttpInterceptor } from './lib/interceptor/opentelemetry-http.interceptor';\n// Exporter\nexport { OtelColExporterModule } from './lib/services/exporter/otelcol/otelcol-exporter.module';\nexport { OtelcolExporterService } from './lib/services/exporter/otelcol/otelcol-exporter.service';\nexport { ConsoleSpanExporterModule } from './lib/services/exporter/console/console-span-exporter.module';\nexport { ConsoleSpanExporterService } from './lib/services/exporter/console/console-span-exporter.service';\nexport { ZipkinExporterModule } from './lib/services/exporter/zipkin/zipkin-exporter.module';\nexport { ZipkinExporterService } from './lib/services/exporter/zipkin/zipkin-exporter.service';\nexport { NoopSpanExporterModule } from './lib/services/exporter/noop-exporter/noop-span-exporter.module';\nexport { NoopSpanExporterService } from './lib/services/exporter/noop-exporter/noop-span-exporter.service';\n// Propagator\nexport { B3PropagatorModule } from './lib/services/propagator/b3-propagator/b3-propagator.module';\nexport { CompositePropagatorModule } from './lib/services/propagator/composite-propagator/composite-propagator.module';\nexport { AwsXrayPropagatorModule } from './lib/services/propagator/aws-xray-propagator/aws-xray-propagator.module';\n/* eslint-disable max-len */\nexport { W3CTraceContextPropagatorModule } from './lib/services/propagator/w3c-trace-context-propagator/w3c-trace-context-propagator.module';\nexport { JaegerHttpTracePropagatorModule } from './lib/services/propagator/jaeger-http-trace-propagator/jaeger-http-trace-propagator.module';\n/* eslint-enable max-len */\nexport { NoopTextMapPropagatorModule } from './lib/services/propagator/noop-http-text-propagator/noop-text-map-propagator.module';\n//Component\nexport { OtelWebTracerModule } from './lib/otel-webtracer.module';\n\n//Interface\nexport { CustomSpan } from './lib/interceptor/custom-span.interface';\nexport { OTEL_EXPORTER, IExporter } from './lib/services/exporter/exporter.interface';\nexport { OTEL_PROPAGATOR, IPropagator } from './lib/services/propagator/propagator.interface';\n\n// Configuration\nexport {\n  CommonCollectorConfig,\n  BatchSpanProcessorConfig,\n  OtelCollectorConfig,\n  OpenTelemetryConfig,\n  OTEL_CONFIG,\n  ZipkinCollectorConfig,\n  JaegerPropagatorConfig,\n  B3PropagatorConfig,\n  IgnoreUrlsConfig,\n  OTEL_LOGGER,\n  OTEL_CUSTOM_SPAN,\n  OTEL_INSTRUMENTATION_PLUGINS\n} from './lib/configuration/opentelemetry-config';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ParentBasedSampler","AlwaysOnSampler","AlwaysOffSampler","TraceIdRatioBasedSampler"],"mappings":"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"}