{"version":3,"file":"igo2-core-monitoring.mjs","sources":["../../../packages/core/monitoring/src/sentry/sentry.utils.ts","../../../packages/core/monitoring/src/sentry/sentry.ts","../../../packages/core/monitoring/src/sentry/sentry.provider.ts","../../../packages/core/monitoring/src/monitoring.provider.ts","../../../packages/core/monitoring/src/__mocks__/monitoring-mock.ts","../../../packages/core/monitoring/src/igo2-core-monitoring.ts"],"sourcesContent":["import { BaseUser } from '@igo2/core/user';\n\nimport { setUser } from '@sentry/angular';\n\nimport { SentryMonitoringOptions } from './sentry.interface';\n\nexport const isTracingEnabled = (options: SentryMonitoringOptions): boolean =>\n  !!options.tracesSampleRate || !!options.tracesSampler;\n\nexport const isReplayEnabled = (options: SentryMonitoringOptions): boolean =>\n  !!options.replaysSessionSampleRate || !!options.replaysOnErrorSampleRate;\n\nexport const identifySentryUser = (user: BaseUser | null): void => {\n  setUser(\n    user\n      ? {\n          id: user.id,\n          username: `${user.firstName} ${user.lastName}`,\n          email: user.email\n        }\n      : null\n  );\n};\n","import {\n  BrowserOptions,\n  SentryErrorHandler,\n  browserTracingIntegration,\n  createErrorHandler,\n  getClient,\n  init,\n  replayIntegration\n} from '@sentry/angular';\n\nimport { SentryMonitoringOptions } from './sentry.interface';\nimport { isReplayEnabled, isTracingEnabled } from './sentry.utils';\n\nexport const createSentryErrorHandler = (\n  options: SentryMonitoringOptions\n): SentryErrorHandler => {\n  return createErrorHandler({\n    logErrors: options.logErrors,\n    ...(options.errorHandlerOptions ?? {})\n  });\n};\n\nexport const initSentry = (\n  options: SentryMonitoringOptions,\n  force?: boolean\n): void => {\n  const client = getClient();\n  if (!force && client) {\n    return;\n  }\n\n  const baseConfig: BrowserOptions = {\n    ...options,\n    integrations: [\n      isTracingEnabled(options) && browserTracingIntegration(),\n      isReplayEnabled(options) && replayIntegration()\n    ].filter(Boolean)\n  };\n\n  init(baseConfig);\n};\n","import {\n  APP_INITIALIZER,\n  ConstructorProvider,\n  ErrorHandler,\n  FactoryProvider\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { TraceService } from '@sentry/angular';\n\nimport { createSentryErrorHandler, initSentry } from './sentry';\nimport { SentryMonitoringOptions } from './sentry.interface';\nimport { isTracingEnabled } from './sentry.utils';\n\nexport const provideSentryMonitoring = (\n  options: SentryMonitoringOptions\n): (FactoryProvider | ConstructorProvider)[] => {\n  const isEnabled = options.enabled !== undefined ? options.enabled : true;\n  if (!isEnabled) {\n    return [];\n  }\n\n  initSentry(options);\n\n  const tracingEnabled = isTracingEnabled(options);\n\n  return [\n    {\n      provide: ErrorHandler,\n      useFactory: () => createSentryErrorHandler(options)\n    },\n    tracingEnabled && {\n      provide: TraceService,\n      deps: [Router]\n    },\n    // Force instantiate TraceService to avoid require it in any constructor.\n    tracingEnabled && {\n      provide: APP_INITIALIZER,\n      useFactory: () => () => void 1,\n      deps: [TraceService],\n      multi: true\n    }\n  ].filter(Boolean);\n};\n","import { InjectionToken, Provider } from '@angular/core';\n\nimport { provideSentryMonitoring } from './sentry/sentry.provider';\nimport { AnyMonitoringOptions, MonitoringOptions } from './shared';\n\nexport const MONITORING_OPTIONS = new InjectionToken<MonitoringOptions | null>(\n  'monitoring.options'\n);\n\nexport function provideMonitoring(\n  options: AnyMonitoringOptions | null\n): Provider[] {\n  if (!options) {\n    return [];\n  }\n\n  const providers: Provider[] = [\n    { provide: MONITORING_OPTIONS, useValue: options }\n  ];\n\n  switch (options.provider) {\n    case 'sentry':\n      providers.push(...provideSentryMonitoring(options));\n      break;\n    default:\n      break;\n  }\n\n  return providers;\n}\n","import { SentryMonitoringOptions } from '../sentry';\nimport { AnyMonitoringOptions } from '../shared';\n\nexport const MOCK_SENTRY_OPTIONS: SentryMonitoringOptions = {\n  provider: 'sentry',\n  dsn: 'https://examplePublicKey@o0.ingest.sentry.io/0',\n  identifyUser: true\n};\n\nexport const MOCK_MONITORING_OPTIONS: AnyMonitoringOptions =\n  MOCK_SENTRY_OPTIONS;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}