UNPKG

@envelop/sentry

Version:

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

36 lines (35 loc) 1.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useSentry = void 0; const tslib_1 = require("tslib"); const opentelemetry_1 = require("@envelop/opentelemetry"); const sdk_trace_base_1 = require("@opentelemetry/sdk-trace-base"); const Sentry = tslib_1.__importStar(require("@sentry/node")); const opentelemetry_2 = require("@sentry/opentelemetry"); 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 sdk_trace_base_1.BasicTracerProvider({ sampler: new opentelemetry_2.SentrySampler(client), }); provider.addSpanProcessor(new opentelemetry_2.SentrySpanProcessor()); provider.register({ propagator: new opentelemetry_2.SentryPropagator(), contextManager: new Sentry.SentryContextManager(), }); Sentry.validateOpenTelemetrySetup(); tracingProvider = provider; } return { onPluginInit({ addPlugin }) { addPlugin( // @ts-expect-error TODO: fix types (0, opentelemetry_1.useOpenTelemetry)(otel ?? {}, tracingProvider, spanKind, spanAdditionalAttributes, serviceName, spanPrefix)); }, }; }; exports.useSentry = useSentry;