< Summary

Information
Class: browser.ts
Assembly: app.otel
File(s): /home/runner/work/ClutterStock/ClutterStock/frontend/app/otel/browser.ts
Tag: 58_25416222083
Line coverage
0%
Covered lines: 0
Uncovered lines: 9
Coverable lines: 9
Total lines: 48
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 7
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

File(s)

/home/runner/work/ClutterStock/ClutterStock/frontend/app/otel/browser.ts

#LineLine coverage
 1import { registerInstrumentations } from "@opentelemetry/instrumentation";
 2import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
 3import { resourceFromAttributes } from "@opentelemetry/resources";
 4import { ATTR_SERVICE_NAME } from "@opentelemetry/semantic-conventions";
 5import { ZoneContextManager } from "@opentelemetry/context-zone";
 6import { BatchSpanProcessor } from "@opentelemetry/sdk-trace-base";
 7import { WebTracerProvider } from "@opentelemetry/sdk-trace-web";
 8import { getWebAutoInstrumentations } from "@opentelemetry/auto-instrumentations-web";
 9
 10import { readPublicRuntimeConfigFromWindow } from "~/public-runtime-config";
 11
 012export function startBrowserOpenTelemetry(): void {
 013  const fromDocument = readPublicRuntimeConfigFromWindow();
 14  const url =
 015    fromDocument?.otelTracesEndpoint?.trim() ||
 16    import.meta.env.VITE_OTEL_EXPORTER_OTLP_TRACES_ENDPOINT;
 017  if (!url) return;
 18
 19  const serviceName =
 020    fromDocument?.otelServiceName?.trim() ||
 21    import.meta.env.VITE_OTEL_SERVICE_NAME ||
 22    "clutterstock-frontend-web";
 23
 024  const exporter = new OTLPTraceExporter({ url });
 25
 026  const provider = new WebTracerProvider({
 27    resource: resourceFromAttributes({
 28      [ATTR_SERVICE_NAME]: serviceName,
 29    }),
 30    spanProcessors: [new BatchSpanProcessor(exporter)],
 31  });
 32
 033  provider.register({
 34    contextManager: new ZoneContextManager(),
 35  });
 36
 037  registerInstrumentations({
 38    instrumentations: [
 39      getWebAutoInstrumentations({
 40        "@opentelemetry/instrumentation-fetch": {
 41          propagateTraceHeaderCorsUrls: /.*/,
 42          ignoreUrls: [url, /\/v1\/traces(\?|$)/],
 43          clearTimingResources: true,
 44        },
 45      }),
 46    ],
 47  });
 48}

Methods/Properties

startBrowserOpenTelemetry()V