UNPKG

@envelop/sentry

Version:

This plugin collects errors and performance tracing for your execution flow, and reports it to [Sentry](https://sentry.io).

31 lines (30 loc) 1.34 kB
import { useOpenTelemetry } from '@envelop/opentelemetry'; import { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; import * as Sentry from '@sentry/node'; import { SentryPropagator, SentrySampler, SentrySpanProcessor } from '@sentry/opentelemetry'; export const useSentry = ({ otel = {}, tracingProvider, spanKind, spanAdditionalAttributes, serviceName, spanPrefix, } = {}) => { const client = Sentry.getClient(); if (!client) { throw new Error("Sentry is not initialized. This plugin doesn't initialize Sentry automatically" + 'Please call `Sentry.init` as describe in Sentry documentation'); } if (!tracingProvider) { const provider = new BasicTracerProvider({ sampler: new SentrySampler(client), }); provider.addSpanProcessor(new SentrySpanProcessor()); provider.register({ propagator: new SentryPropagator(), contextManager: new Sentry.SentryContextManager(), }); Sentry.validateOpenTelemetrySetup(); tracingProvider = provider; } return { onPluginInit({ addPlugin }) { addPlugin( // @ts-expect-error TODO: fix types useOpenTelemetry(otel ?? {}, tracingProvider, spanKind, spanAdditionalAttributes, serviceName, spanPrefix)); }, }; };