All files sentry.service.ts

87.5% Statements 7/8
100% Branches 3/3
75% Functions 3/4
87.5% Lines 7/8

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78                1x             1x 3x 1x                                                             1x                                                   1x 5x    
import { EnvironmentProviders, ErrorHandler, inject, Injectable, provideAppInitializer, Provider } from '@angular/core';
import { Router } from '@angular/router';
import { IWebClientAppEnvironment, TSentryEnvironment } from '@app/client-util';
import { BrowserTracing, createErrorHandler, init, routingInstrumentation, TraceService } from '@sentry/angular-ivy';
 
/**
 * Sentry is disabled for the environments defined in this array.
 */
const sentryDisabledEnvironments: TSentryEnvironment[] = ['unit-testing', 'development'];
 
/**
 * Initializes Sentry.
 * @param env web client environment
 * @param release release identifier
 */
export const initializeSentry = (env: IWebClientAppEnvironment, release: string) => {
  if (!sentryDisabledEnvironments.includes(env.sentry.env)) {
    init({
      environment: env.sentry.env,
      release,
      dsn: env.sentry.dsn,
      integrations: [
        /**
         * Registers and configures the Tracing integration,
         * which automatically instruments your application to monitor its
         * performance, including custom Angular routing instrumentation.
         */
        new BrowserTracing({
          tracingOrigins: ['localhost', /^\//, ...env.sentry.tracingOrigins],
          routingInstrumentation: routingInstrumentation,
        }),
      ],
 
      /**
       * Set tracesSampleRate to 1.0 to capture 100%
       * of transactions for performance monitoring.
       * We recommend adjusting this value in production.
       */
      tracesSampleRate: env.sentry.tracesSampleRate,
    });
  }
};
 
/**
 * Sentry providers configuration.
 * @param env web client environment
 * @returns Sentry providers
 */
export const sentryProviders: (env: IWebClientAppEnvironment) => Array<Provider | EnvironmentProviders> = env => {
  return sentryDisabledEnvironments.includes(env.sentry.env)
    ? []
    : [
        {
          provide: ErrorHandler,
          useValue: createErrorHandler({
            showDialog: true,
          }),
        },
        {
          provide: TraceService,
          deps: [Router],
        },
        provideAppInitializer(() => {
          inject(TraceService);
        }),
      ];
};
 
/**
 * The Sentry tracing service.
 */
@Injectable({
  providedIn: 'root',
})
export class AppSentryService {
  public readonly trace = inject(TraceService);
}