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);
}
|