{"version":3,"file":"micro-sentry-angular.mjs","sources":["../../../../libs/angular/src/lib/tokens/errors-throttle.ts","../../../../libs/angular/src/lib/services/micro-sentry-error-bus.service.ts","../../../../libs/angular/src/lib/tokens/config.ts","../../../../libs/angular/src/lib/services/micro-sentry.service.ts","../../../../libs/angular/src/lib/services/error-handler.service.ts","../../../../libs/angular/src/lib/provide-micro-sentry.ts","../../../../libs/angular/src/lib/modules/micro-sentry.module.ts","../../../../libs/angular/src/index.ts","../../../../libs/angular/src/micro-sentry-angular.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { MonoTypeOperatorFunction } from 'rxjs';\nimport { throttleTime } from 'rxjs/operators';\n\nexport const MICRO_SENTRY_ERRORS_THROTTLE_TIME = 1_000;\n\nexport const MICRO_SENTRY_ERRORS_THROTTLE = new InjectionToken<\n  MonoTypeOperatorFunction<unknown>\n>('Micro sentry error throttle', {\n  providedIn: 'root',\n  factory(): MonoTypeOperatorFunction<unknown> {\n    return (source) =>\n      source.pipe(throttleTime(MICRO_SENTRY_ERRORS_THROTTLE_TIME));\n  },\n});\n","import {\n  MonoTypeOperatorFunction,\n  NextObserver,\n  Observable,\n  Subject,\n} from 'rxjs';\nimport { Inject, Injectable, OnDestroy } from '@angular/core';\nimport { groupBy, mergeMap } from 'rxjs/operators';\nimport { MICRO_SENTRY_ERRORS_THROTTLE } from '../tokens/errors-throttle';\n\n@Injectable({ providedIn: 'root' })\nexport class MicroSentryErrorBusService\n  implements NextObserver<unknown>, OnDestroy\n{\n  private _errors$ = new Subject<unknown>();\n  errors$: Observable<unknown>;\n\n  constructor(\n    @Inject(MICRO_SENTRY_ERRORS_THROTTLE)\n    private throttle: MonoTypeOperatorFunction<unknown>\n  ) {\n    this.errors$ = this._errors$.pipe(\n      groupBy((error) => error?.toString()),\n      mergeMap((group) => group.pipe(this.throttle))\n    );\n  }\n\n  ngOnDestroy(): void {\n    this._errors$.complete();\n  }\n\n  next(error: unknown): void {\n    this._errors$.next(error);\n  }\n}\n","import { InjectionToken } from '@angular/core';\nimport { BrowserSentryClientOptions } from '@micro-sentry/browser';\n\nexport const MICRO_SENTRY_CONFIG =\n  new InjectionToken<BrowserSentryClientOptions>('Micro Sentry Options');\n","import {\n  BrowserMicroSentryClient,\n  BrowserSentryClientOptions,\n} from '@micro-sentry/browser';\nimport { Inject, Injectable, OnDestroy } from '@angular/core';\nimport { SentryRequestBody } from '@micro-sentry/core';\nimport { MICRO_SENTRY_CONFIG } from '../tokens/config';\nimport { DOCUMENT } from '@angular/common';\n\n@Injectable({ providedIn: 'root' })\nexport class MicroSentryService\n  extends BrowserMicroSentryClient\n  implements OnDestroy\n{\n  constructor(\n    @Inject(MICRO_SENTRY_CONFIG) config: BrowserSentryClientOptions,\n    @Inject(DOCUMENT) document: Document\n  ) {\n    super(config, document?.defaultView ?? undefined);\n  }\n\n  protected override getRequestBlank(): SentryRequestBody {\n    return {\n      ...super.getRequestBlank(),\n      sdk: {\n        name: 'micro-sentry.javascript.angular',\n        version: '0.0.0',\n      },\n    };\n  }\n\n  ngOnDestroy(): void {\n    this.destroy();\n  }\n}\n","import { ErrorHandler, Injectable } from '@angular/core';\nimport { MicroSentryErrorBusService } from './micro-sentry-error-bus.service';\nimport { MicroSentryService } from './micro-sentry.service';\n\n@Injectable({ providedIn: 'root' })\nexport class MicroSentryErrorHandler implements ErrorHandler {\n  constructor(\n    private errorBus: MicroSentryErrorBusService,\n    microSentry: MicroSentryService\n  ) {\n    errorBus.errors$.subscribe((error) => {\n      microSentry.report(error as Error);\n    });\n  }\n\n  handleError(error: unknown): void {\n    this.errorBus.next(error);\n\n    console.error(error);\n  }\n}\n","import {\n  ErrorHandler,\n  inject,\n  Injector,\n  Provider,\n  runInInjectionContext,\n} from '@angular/core';\nimport { BrowserSentryClientOptions as BrowserSentryClientOptionsBase } from '@micro-sentry/browser';\nimport { MicroSentryErrorHandler } from './services/error-handler.service';\nimport { MICRO_SENTRY_CONFIG } from './tokens/config';\n\ninterface BrowserSentryClientOptions extends BrowserSentryClientOptionsBase {\n  /**\n   * Function executes in injection context\n   */\n  beforeSend?: BrowserSentryClientOptionsBase['beforeSend'];\n  /**\n   * Function executes in injection context\n   */\n  beforeBreadcrumb?: BrowserSentryClientOptionsBase['beforeBreadcrumb'];\n}\n\nexport function provideMicroSentry({\n  beforeSend,\n  beforeBreadcrumb,\n  ...config\n}: BrowserSentryClientOptions): Provider[] {\n  return [\n    {\n      provide: ErrorHandler,\n      useExisting: MicroSentryErrorHandler,\n    },\n    {\n      provide: MICRO_SENTRY_CONFIG,\n      useFactory: (): BrowserSentryClientOptions => {\n        const injector = inject(Injector);\n\n        return {\n          ...config,\n          beforeSend:\n            beforeSend &&\n            ((...args) =>\n              runInInjectionContext(injector, () => beforeSend(...args))),\n          beforeBreadcrumb:\n            beforeBreadcrumb &&\n            ((...args) =>\n              runInInjectionContext(injector, () => beforeBreadcrumb(...args))),\n        };\n      },\n    },\n  ];\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { BrowserSentryClientOptions } from '@micro-sentry/browser';\nimport { provideMicroSentry } from '../provide-micro-sentry';\n\n@NgModule({\n  declarations: [],\n  imports: [CommonModule],\n})\nexport class MicroSentryModule {\n  public static forRoot(\n    config: BrowserSentryClientOptions\n  ): ModuleWithProviders<MicroSentryModule> {\n    return {\n      ngModule: MicroSentryModule,\n      providers: provideMicroSentry(config),\n    };\n  }\n}\n","// modules\nexport * from './lib/modules/micro-sentry.module';\n\n// standalone providers\nexport * from './lib/provide-micro-sentry';\n\n// services\nexport * from './lib/services/micro-sentry.service';\nexport * from './lib/services/micro-sentry-error-bus.service';\n\n// tokens\nexport * from './lib/tokens/config';\nexport * from './lib/tokens/errors-throttle';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.MicroSentryErrorBusService","i2.MicroSentryService"],"mappings":"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"}