{"version":3,"file":"rxap-ngx-error.mjs","sources":["../../../../../packages/angular/error/src/lib/tokens.ts","../../../../../packages/angular/error/src/lib/open-api-http-response-error/open-api-http-response-error.component.ts","../../../../../packages/angular/error/src/lib/open-api-http-response-error/open-api-http-response-error.component.html","../../../../../packages/angular/error/src/lib/error-dialog/error-dialog.component.ts","../../../../../packages/angular/error/src/lib/error-dialog/error-dialog.component.html","../../../../../packages/angular/error/src/lib/error-capture-dialog.service.ts","../../../../../packages/angular/error/src/lib/error-capture.service.ts","../../../../../packages/angular/error/src/lib/any-http-error/any-http-error.component.ts","../../../../../packages/angular/error/src/lib/any-http-error/any-http-error.component.html","../../../../../packages/angular/error/src/lib/any-http-error/any-http-error.service.ts","../../../../../packages/angular/error/src/lib/open-api-http-response-error/open-api-http-response-error.service.ts","../../../../../packages/angular/error/src/lib/message-http-error/message-http-error.component.ts","../../../../../packages/angular/error/src/lib/message-http-error/message-http-error.component.html","../../../../../packages/angular/error/src/lib/message-http-error/message-http-error.service.ts","../../../../../packages/angular/error/src/lib/error/angular-error.component.ts","../../../../../packages/angular/error/src/lib/error/angular-error.component.html","../../../../../packages/angular/error/src/lib/error/angular-error.service.ts","../../../../../packages/angular/error/src/lib/code-http-error/code-http-error.component.ts","../../../../../packages/angular/error/src/lib/code-http-error/code-http-error.component.html","../../../../../packages/angular/error/src/lib/code-http-error/code-http-error.service.ts","../../../../../packages/angular/error/src/lib/utilities.ts","../../../../../packages/angular/error/src/lib/error-handler.ts","../../../../../packages/angular/error/src/lib/error-interceptor-options.ts","../../../../../packages/angular/error/src/lib/http-error-interceptor.ts","../../../../../packages/angular/error/src/lib/provide.ts","../../../../../packages/angular/error/src/index.ts","../../../../../packages/angular/error/src/rxap-ngx-error.ts"],"sourcesContent":["import { ComponentType } from '@angular/cdk/overlay';\nimport {\n  InjectionToken,\n  Signal,\n} from '@angular/core';\nimport { IErrorCaptureDialogService } from './error-capture-dialog.service';\nimport { IErrorDialogComponent } from './error-dialog/error-dialog.component';\nimport { ErrorInterceptorOptions } from './error-interceptor-options';\n\nexport const RXAP_ERROR_DIALOG_DATA = new InjectionToken<Signal<any[]>>('rxap/error/dialog-data');\n\nexport const RXAP_ERROR_DIALOG_ERROR = new InjectionToken<any>('rxap/error/dialog-error');\n\nexport const RXAP_ERROR_DIALOG_COMPONENT = new InjectionToken<ComponentType<IErrorDialogComponent>>(\n  'rxap/error/dialog-component');\n\nexport const RXAP_ERROR_INTERCEPTOR_OPTIONS = new InjectionToken<ErrorInterceptorOptions>(\n  'rxap/error/interceptor-options');\n\nexport const RXAP_ERROR_CAPTURE_DIALOG_SERVICE = new InjectionToken<IErrorCaptureDialogService>('rxap/error/capture-dialog-service');\n\nexport const RXAP_ERROR_DIALOG_DISABLED = new InjectionToken<boolean>('rxap/error/dialog-disabled', {\n  providedIn: 'root',\n  factory: () => false,\n});\n","import { CommonModule } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  inject,\n} from '@angular/core';\nimport {\n  CopyToClipboardComponent,\n  JsonViewerComponent,\n} from '@rxap/components';\nimport {\n  DataGridCellDefDirective,\n  DataGridComponent,\n  DataGridRowDefDirective,\n} from '@rxap/data-grid';\nimport { RXAP_ENVIRONMENT } from '@rxap/environment';\nimport { IErrorDialogComponent } from '../error-dialog/error-dialog.component';\nimport { RXAP_ERROR_DIALOG_ERROR } from '../tokens';\nimport { OpenApiHttpResponseErrorDialogData } from './open-api-http-response-error-dialog-data';\n\n@Component({\n    selector: 'rxap-open-api-http-response-error',\n    imports: [\n        CommonModule, CopyToClipboardComponent, DataGridCellDefDirective, DataGridComponent,\n        DataGridRowDefDirective, JsonViewerComponent,\n    ],\n    templateUrl: './open-api-http-response-error.component.html',\n    styleUrl: './open-api-http-response-error.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OpenApiHttpResponseErrorComponent implements IErrorDialogComponent<OpenApiHttpResponseErrorDialogData> {\n\n  public readonly isProduction: boolean = inject(RXAP_ENVIRONMENT, { optional: true })?.production ?? false;\n\n  public readonly error: OpenApiHttpResponseErrorDialogData = inject(RXAP_ERROR_DIALOG_ERROR);\n}\n","<rxap-data-grid [data]=\"error\">\n  <ng-container rxapDataGridRowDef=\"name\"></ng-container>\n  <ng-container rxapDataGridRowDef=\"timestamp\">\n    <td *rxapDataGridCellDef=\"let value\">{{ value | date:'HH:mm:ss' }}</td>\n  </ng-container>\n  <ng-container rxapDataGridRowDef=\"method\"></ng-container>\n  <ng-container rxapDataGridRowDef=\"url\"></ng-container>\n  <ng-container rxapDataGridRowDef=\"status\"></ng-container>\n  <ng-container rxapDataGridRowDef=\"statusText\"></ng-container>\n  <ng-container rxapDataGridRowDef=\"message\"></ng-container>\n  <ng-container rxapDataGridRowDef=\"headers\">\n    <td *rxapDataGridCellDef=\"let value\">\n      <rxap-data-grid [data]=\"value\">\n        <ng-container *ngFor=\"let entry of value | keyvalue\" [rxapDataGridRowDef]=\"$any(entry.key)\">\n          <td *rxapDataGridCellDef=\"let value\">\n            <ng-container *ngIf=\"value.length > 1\">\n              <ul>\n                <li *ngFor=\"let item of value\">{{ item }}</li>\n              </ul>\n            </ng-container>\n            <ng-container *ngIf=\"value.length === 1\">{{ value[0] }}</ng-container>\n            <ng-container *ngIf=\"value.length === 0\">NONE</ng-container>\n          </td>\n        </ng-container>\n      </rxap-data-grid>\n    </td>\n  </ng-container>\n  <ng-container *ngIf=\"!isProduction\" rxapDataGridRowDef=\"error\">\n    <td *rxapDataGridCellDef=\"let value\">\n      <ng-container *ngIf=\"value\">\n        <rxap-copy-to-clipboard [value]=\"value | json\">Copy Response Body</rxap-copy-to-clipboard>\n        <div class=\"body\">\n          <rxap-json-viewer [expanded]=\"false\" [json]=\"value\"></rxap-json-viewer>\n        </div>\n      </ng-container>\n      <ng-container *ngIf=\"!value\">NONE</ng-container>\n    </td>\n  </ng-container>\n  <ng-container *ngIf=\"!isProduction\" rxapDataGridRowDef=\"body\">\n    <td *rxapDataGridCellDef=\"let value\">\n      <ng-container *ngIf=\"value\">\n        <rxap-copy-to-clipboard [value]=\"value | json\">Copy Request Body</rxap-copy-to-clipboard>\n        <div class=\"body\">\n          <rxap-json-viewer [expanded]=\"false\" [json]=\"value\"></rxap-json-viewer>\n        </div>\n      </ng-container>\n      <ng-container *ngIf=\"!value\">NONE</ng-container>\n    </td>\n  </ng-container>\n</rxap-data-grid>\n","import {\n  ComponentPortal,\n  PortalModule,\n} from '@angular/cdk/portal';\nimport {\n  NgClass,\n  NgForOf,\n  NgIf,\n} from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  ElementRef,\n  EventEmitter,\n  inject,\n  INJECTOR,\n  Injector,\n  Output,\n  signal,\n  Signal,\n  ViewChild,\n} from '@angular/core';\nimport {\n  RXAP_ERROR_DIALOG_COMPONENT,\n  RXAP_ERROR_DIALOG_DATA,\n  RXAP_ERROR_DIALOG_ERROR,\n} from '../tokens';\n\nexport interface IErrorDialogComponent<Error = any> {\n  error: Error;\n}\n\n@Component({\n    selector: 'rxap-error-dialog',\n    templateUrl: './error-dialog.component.html',\n    styleUrls: ['./error-dialog.component.scss'],\n    changeDetection: ChangeDetectionStrategy.Default,\n    imports: [\n        NgIf,\n        NgClass,\n        NgForOf,\n        PortalModule,\n    ]\n})\nexport class ErrorDialogComponent implements AfterViewInit {\n\n  @ViewChild('dialog', { static: true })\n  public dialog!: ElementRef<HTMLDialogElement>;\n\n  public readonly data: Signal<any[]> = inject(RXAP_ERROR_DIALOG_DATA);\n\n  public readonly activeIndex = signal(0);\n  public readonly displayedButtons = computed(() => {\n    const start = Math.max(0, this.activeIndex() - 2);\n    const end = Math.min(this.data().length, start + 5);\n    return Array.from({ length: end - start }, (_, i) => start + i);\n  });\n  @Output()\n  public closeDialog = new EventEmitter<void>();\n  private readonly component = inject(RXAP_ERROR_DIALOG_COMPONENT);\n  private readonly injector = inject(INJECTOR);\n  public readonly componentPortal = computed(() => {\n    const index = this.activeIndex();\n    const data = this.data();\n    const injector = Injector.create({\n      parent: this.injector,\n      providers: [\n        {\n          provide: RXAP_ERROR_DIALOG_ERROR,\n          useValue: data[index],\n        },\n      ],\n    });\n    return new ComponentPortal(this.component, null, injector);\n  });\n\n  ngAfterViewInit() {\n    this.dialog.nativeElement.showModal();\n  }\n\n  close() {\n    this.dialog.nativeElement.close();\n    this.closeDialog.emit();\n  }\n\n}\n","<dialog #dialog\n        class=\"rounded overflow-auto drop-shadow-2xl bg-white text-black dark:bg-black dark:text-white flex flex-col gap-3 p-6\"\n        style=\"max-width: 80vw; max-height: 80vh\">\n  <div *ngIf=\"data().length > 1\" class=\"controls flex justify-center space-x-2 mt-4\">\n    <button\n      (click)=\"activeIndex.set(activeIndex() - 1)\"\n      *ngIf=\"activeIndex() > 0\" class=\"px-4 py-2 bg-gray-200 dark:bg-gray-800 dark:hover:bg-gray-900 hover:bg-gray-300 transition-colors duration-150 rounded\">\n      Previous\n    </button>\n    <button (click)=\"activeIndex.set(item)\"\n            *ngFor=\"let item of displayedButtons()\"\n            [ngClass]=\"{\n            'bg-primary-500': item === activeIndex(),\n            'bg-gray-200 dark:bg-gray-800 dark:hover:bg-gray-900 hover:bg-gray-300 transition-colors duration-150': item !== activeIndex()\n            }\"\n            class=\"px-4 py-2 rounded\">\n      {{ item + 1 }}\n    </button>\n    <button\n      (click)=\"activeIndex.set(activeIndex() + 1)\"\n      *ngIf=\"activeIndex() < data().length - 1\" class=\"px-4 py-2 bg-gray-200 dark:bg-gray-800 dark:hover:bg-gray-900 hover:bg-gray-300 transition-colors duration-150 rounded\">\n      Next\n    </button>\n  </div>\n  <div class=\"flex flex-col overflow-auto\">\n    <ng-template [cdkPortalOutlet]=\"componentPortal()\"></ng-template>\n  </div>\n  <button (click)=\"close()\" class=\"px-4 py-2 rounded bg-primary-500\" i18n>close</button>\n</dialog>\n","import { ComponentType } from '@angular/cdk/overlay';\nimport { DOCUMENT } from '@angular/common';\nimport {\n  ApplicationRef,\n  createComponent,\n  inject,\n  Injectable,\n  Injector,\n  WritableSignal,\n} from '@angular/core';\nimport {\n  EMPTY,\n  finalize,\n  Observable,\n  take,\n} from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport {\n  ErrorDialogComponent,\n  IErrorDialogComponent,\n} from './error-dialog/error-dialog.component';\nimport {\n  RXAP_ERROR_DIALOG_COMPONENT,\n  RXAP_ERROR_DIALOG_DATA,\n  RXAP_ERROR_DIALOG_DISABLED,\n} from './tokens';\n\nexport interface IErrorCaptureDialogService<Error = any> {\n  open(component: ComponentType<IErrorDialogComponent>, errorList: WritableSignal<Error[]>): Observable<void>;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ErrorCaptureDialogService<Error = any> implements IErrorCaptureDialogService<Error> {\n\n  protected readonly applicationRef = inject(ApplicationRef);\n  protected readonly document = inject(DOCUMENT);\n  protected readonly disabled = inject(RXAP_ERROR_DIALOG_DISABLED);\n\n  open(component: ComponentType<IErrorDialogComponent>, errorList: WritableSignal<Error[]>): Observable<void> {\n    if (this.disabled) {\n      console.debug(`ErrorCaptureDialogService is disabled.`, { errorList: errorList() });\n      return EMPTY;\n    }\n    const body = this.document.getElementsByTagName('body')[0];\n    const div = this.document.createElement('div');\n    body.appendChild(div);\n    const componentRef = createComponent(ErrorDialogComponent, {\n      hostElement: div,\n      environmentInjector: this.applicationRef.injector,\n      elementInjector: Injector.create({\n        providers: [\n          {\n            provide: RXAP_ERROR_DIALOG_DATA,\n            useValue: errorList,\n          },\n          {\n            provide: RXAP_ERROR_DIALOG_COMPONENT,\n            useValue: component,\n          },\n        ],\n      }),\n    });\n    this.applicationRef.attachView(componentRef.hostView);\n    return new Observable<void>(subscriber => {\n      const subscription = componentRef.instance.closeDialog.pipe(\n        take(1),\n        tap(() => {\n          subscriber.next();\n          subscriber.complete();\n        }),\n        finalize(() => {\n          componentRef.destroy();\n          body.removeChild(div);\n          div.remove();\n        })\n      ).subscribe();\n      return () => {\n        subscription.unsubscribe();\n      };\n    });\n\n  }\n\n}\n","import { ComponentType } from '@angular/cdk/overlay';\nimport {\n  inject,\n  Injectable,\n  signal,\n  WritableSignal,\n} from '@angular/core';\nimport {\n  ErrorCaptureDialogService,\n  IErrorCaptureDialogService,\n} from './error-capture-dialog.service';\nimport { IErrorDialogComponent } from './error-dialog/error-dialog.component';\nimport { RXAP_ERROR_CAPTURE_DIALOG_SERVICE } from './tokens';\n\n@Injectable()\nexport abstract class ErrorCaptureService<Error = any> {\n\n  protected abstract readonly component: ComponentType<IErrorDialogComponent>;\n  private readonly errorCaptureDialogService = inject<IErrorCaptureDialogService<Error>>(\n    RXAP_ERROR_CAPTURE_DIALOG_SERVICE, { optional: true }) ?? inject(ErrorCaptureDialogService);\n  private errorList: Array<WritableSignal<Error[]>> = [];\n\n  push(error: Error) {\n    if (this.errorList.length) {\n      const last = this.errorList[this.errorList.length - 1];\n      const value = last();\n      if (value.some(e => this.compare(e, error))) {\n        last.update(value => {\n          value.push(error);\n          return value.slice();\n        });\n        return;\n      }\n    }\n    const newList = signal([ error ]);\n    this.errorList.push(newList);\n    this.errorCaptureDialogService.open(this.component, newList);\n  }\n\n  abstract compare(a: Error, b: Error): boolean;\n\n}\n","import {\n  DatePipe,\n  JsonPipe,\n  KeyValuePipe,\n  NgForOf,\n  NgIf,\n} from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  inject,\n} from '@angular/core';\nimport {\n  CopyToClipboardComponent,\n  JsonViewerComponent,\n} from '@rxap/components';\nimport { DataGridModule } from '@rxap/data-grid';\nimport { RXAP_ENVIRONMENT } from '@rxap/environment';\nimport { IErrorDialogComponent } from '../error-dialog/error-dialog.component';\nimport { RXAP_ERROR_DIALOG_ERROR } from '../tokens';\nimport { AnyHttpErrorDialogData } from './any-http-error-dialog-data';\n\n@Component({\n    selector: 'rxap-any-http-error',\n    templateUrl: './any-http-error.component.html',\n    styleUrls: ['./any-http-error.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        DataGridModule,\n        NgIf,\n        DatePipe,\n        KeyValuePipe,\n        NgForOf,\n        CopyToClipboardComponent,\n        JsonPipe,\n        JsonViewerComponent,\n    ]\n})\nexport class AnyHttpErrorComponent implements IErrorDialogComponent<AnyHttpErrorDialogData> {\n\n  public readonly isProduction: boolean = inject(RXAP_ENVIRONMENT, { optional: true })?.production ?? false;\n\n  public readonly error: AnyHttpErrorDialogData = inject(RXAP_ERROR_DIALOG_ERROR);\n\n}\n","<rxap-data-grid [data]=\"error\">\n  <ng-container rxapDataGridRowDef=\"name\"></ng-container>\n  <ng-container rxapDataGridRowDef=\"timestamp\">\n    <td *rxapDataGridCellDef=\"let value\">{{ value | date:'HH:mm:ss' }}</td>\n  </ng-container>\n  <ng-container rxapDataGridRowDef=\"method\"></ng-container>\n  <ng-container rxapDataGridRowDef=\"url\"></ng-container>\n  <ng-container rxapDataGridRowDef=\"status\"></ng-container>\n  <ng-container rxapDataGridRowDef=\"statusText\"></ng-container>\n  <ng-container rxapDataGridRowDef=\"message\"></ng-container>\n  <ng-container rxapDataGridRowDef=\"headers\">\n    <td *rxapDataGridCellDef=\"let value\">\n      <rxap-data-grid [data]=\"value\">\n        <ng-container *ngFor=\"let entry of value | keyvalue\" [rxapDataGridRowDef]=\"$any(entry.key)\">\n          <td *rxapDataGridCellDef=\"let value\">\n            <ng-container *ngIf=\"value.length > 1\">\n              <ul>\n                <li *ngFor=\"let item of value\">{{ item }}</li>\n              </ul>\n            </ng-container>\n            <ng-container *ngIf=\"value.length === 1\">{{ value[0] }}</ng-container>\n            <ng-container *ngIf=\"value.length === 0\">NONE</ng-container>\n          </td>\n        </ng-container>\n      </rxap-data-grid>\n    </td>\n  </ng-container>\n  <ng-container *ngIf=\"!isProduction\" rxapDataGridRowDef=\"error\">\n    <td *rxapDataGridCellDef=\"let value\">\n      <ng-container *ngIf=\"value\">\n        <rxap-copy-to-clipboard [value]=\"value | json\">Copy Response Body</rxap-copy-to-clipboard>\n        <div class=\"body\">\n          <rxap-json-viewer [expanded]=\"false\" [json]=\"value\"></rxap-json-viewer>\n        </div>\n      </ng-container>\n      <ng-container *ngIf=\"!value\">NONE</ng-container>\n    </td>\n  </ng-container>\n  <ng-container *ngIf=\"!isProduction\" rxapDataGridRowDef=\"body\">\n    <td *rxapDataGridCellDef=\"let value\">\n      <ng-container *ngIf=\"value\">\n        <rxap-copy-to-clipboard [value]=\"value | json\">Copy Request Body</rxap-copy-to-clipboard>\n        <div class=\"body\">\n          <rxap-json-viewer [expanded]=\"false\" [json]=\"value\"></rxap-json-viewer>\n        </div>\n      </ng-container>\n      <ng-container *ngIf=\"!value\">NONE</ng-container>\n    </td>\n  </ng-container>\n</rxap-data-grid>\n","import { ComponentType } from '@angular/cdk/overlay';\nimport { Injectable } from '@angular/core';\nimport { ErrorCaptureService } from '../error-capture.service';\nimport { IErrorDialogComponent } from '../error-dialog/error-dialog.component';\nimport { AnyHttpErrorDialogData } from './any-http-error-dialog-data';\nimport { AnyHttpErrorComponent } from './any-http-error.component';\n\n@Injectable({ providedIn: 'root' })\nexport class AnyHttpErrorService<Error extends AnyHttpErrorDialogData = AnyHttpErrorDialogData>\n  extends ErrorCaptureService<Error> {\n\n  protected readonly component: ComponentType<IErrorDialogComponent> = AnyHttpErrorComponent;\n\n  override compare(a: Error, b: Error): boolean {\n    return a.url === b.url && a.method === b.method && a.status === b.status && a.message === b.message;\n  }\n\n}\n","import { Injectable } from '@angular/core';\nimport { AnyHttpErrorService } from '../any-http-error/any-http-error.service';\nimport { OpenApiHttpResponseErrorDialogData } from './open-api-http-response-error-dialog-data';\nimport { OpenApiHttpResponseErrorComponent } from './open-api-http-response-error.component';\n\n@Injectable({ providedIn: 'root' })\nexport class OpenApiHttpResponseErrorService extends AnyHttpErrorService<OpenApiHttpResponseErrorDialogData> {\n\n  protected override readonly component = OpenApiHttpResponseErrorComponent;\n\n  override compare(a: OpenApiHttpResponseErrorDialogData, b: OpenApiHttpResponseErrorDialogData): boolean {\n    return true;\n  }\n\n}\n","import { NgIf } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  inject,\n  signal,\n} from '@angular/core';\nimport { RXAP_ENVIRONMENT } from '@rxap/environment';\nimport { AnyHttpErrorComponent } from '../any-http-error/any-http-error.component';\nimport { IErrorDialogComponent } from '../error-dialog/error-dialog.component';\nimport { RXAP_ERROR_DIALOG_ERROR } from '../tokens';\nimport { MessageHttpErrorDialogData } from './message-http-error-dialog-data';\n\n@Component({\n    selector: 'rxap-http-error-message',\n    templateUrl: './message-http-error.component.html',\n    styleUrls: ['./message-http-error.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        NgIf,\n        AnyHttpErrorComponent,\n    ]\n})\nexport class MessageHttpErrorComponent implements IErrorDialogComponent<MessageHttpErrorDialogData> {\n\n  public readonly isProduction: boolean = inject(RXAP_ENVIRONMENT, { optional: true })?.production ?? false;\n\n  public readonly error: MessageHttpErrorDialogData = inject(RXAP_ERROR_DIALOG_ERROR);\n\n  public readonly showMore = signal(false);\n\n}\n","<div class=\"flex flex-col gap-2\">\n  <p class=\"text-xl\">Http Error Message:</p>\n  <p>{{ error.error.message }}</p>\n  <ng-container *ngIf=\"!isProduction\">\n    <hr>\n    <button (click)=\"showMore.set(true)\"\n            *ngIf=\"!showMore()\"\n            class=\"px-4 py-2 rounded bg-accent-500\">\n      <ng-container i18n>Show more details</ng-container>\n    </button>\n    <rxap-any-http-error *ngIf=\"showMore()\"></rxap-any-http-error>\n  </ng-container>\n</div>\n","import { Injectable } from '@angular/core';\nimport { AnyHttpErrorService } from '../any-http-error/any-http-error.service';\nimport { MessageHttpErrorDialogData } from './message-http-error-dialog-data';\nimport { MessageHttpErrorComponent } from './message-http-error.component';\n\n@Injectable({ providedIn: 'root' })\nexport class MessageHttpErrorService extends AnyHttpErrorService<MessageHttpErrorDialogData> {\n\n  protected override readonly component = MessageHttpErrorComponent;\n\n  override compare(a: MessageHttpErrorDialogData, b: MessageHttpErrorDialogData): boolean {\n    return super.compare(a, b) && a.error.message === b.error.message;\n  }\n\n}\n","import {\n  KeyValuePipe,\n  NgForOf,\n  NgIf,\n} from '@angular/common';\nimport {\n  Component,\n  inject,\n} from '@angular/core';\nimport { DataGridModule } from '@rxap/data-grid';\nimport { IErrorDialogComponent } from '../error-dialog/error-dialog.component';\nimport { RXAP_ERROR_DIALOG_ERROR } from '../tokens';\nimport { AngularErrorDialogData } from './angular-error-dialog-data';\n\n@Component({\n    selector: 'rxap-angular-error',\n    imports: [DataGridModule, KeyValuePipe, NgForOf, NgIf],\n    templateUrl: './angular-error.component.html',\n    styleUrls: ['./angular-error.component.scss']\n})\nexport class AngularErrorComponent implements IErrorDialogComponent<AngularErrorDialogData> {\n\n  public readonly error: AngularErrorDialogData = inject(RXAP_ERROR_DIALOG_ERROR);\n\n  public get hasTags(): boolean {\n    return Object.keys(this.error.tags).length > 0;\n  }\n\n  public get hasContexts(): boolean {\n    return Object.keys(this.error.contexts).length > 0;\n  }\n\n  public get hasExtra(): boolean {\n    return Object.keys(this.error.extra).length > 0;\n  }\n\n}\n","<rxap-data-grid [data]=\"error\">\n  <ng-container *ngIf=\"error.name\" rxapDataGridRowDef=\"name\"></ng-container>\n  <ng-container rxapDataGridRowDef=\"message\"></ng-container>\n  <ng-container *ngIf=\"hasExtra || hasTags || hasContexts || error.stack\" rxapDataGridRowDef>\n    <th *rxapDataGridHeaderCellDef>\n      <span i18n>Details</span>\n    </th>\n  </ng-container>\n  <ng-container *ngIf=\"error.stack\" rxapDataGridRowDef=\"stack\">\n    <td *rxapDataGridCellDef=\"let value\">\n      <pre>{{ value }}</pre>\n    </td>\n  </ng-container>\n  <ng-container *ngIf=\"hasTags\" rxapDataGridRowDef=\"tags\">\n    <td *rxapDataGridCellDef=\"let value\">\n      <rxap-data-grid [data]=\"value\" auto></rxap-data-grid>\n    </td>\n  </ng-container>\n  <ng-container *ngIf=\"hasExtra\" rxapDataGridRowDef=\"extra\">\n    <td *rxapDataGridCellDef=\"let value\">\n      <rxap-data-grid [data]=\"value\" auto></rxap-data-grid>\n    </td>\n  </ng-container>\n  <ng-container *ngIf=\"hasContexts\" rxapDataGridRowDef=\"contexts\">\n    <td *rxapDataGridCellDef=\"let value\">\n      <rxap-data-grid [data]=\"value\" auto></rxap-data-grid>\n    </td>\n  </ng-container>\n</rxap-data-grid>\n","import { Injectable } from '@angular/core';\nimport { ErrorCaptureService } from '../error-capture.service';\nimport { AngularErrorDialogData } from './angular-error-dialog-data';\nimport { AngularErrorComponent } from './angular-error.component';\n\n@Injectable({ providedIn: 'root' })\nexport class AngularErrorService extends ErrorCaptureService<AngularErrorDialogData> {\n\n  protected readonly component = AngularErrorComponent;\n\n  override compare(a: AngularErrorDialogData, b: AngularErrorDialogData): boolean {\n    return true;\n  }\n\n}\n","import { NgIf } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  inject,\n  signal,\n} from '@angular/core';\nimport { RXAP_ENVIRONMENT } from '@rxap/environment';\nimport { AnyHttpErrorComponent } from '../any-http-error/any-http-error.component';\nimport { IErrorDialogComponent } from '../error-dialog/error-dialog.component';\nimport { RXAP_ERROR_DIALOG_ERROR } from '../tokens';\nimport { CodeHttpErrorDialogData } from './code-http-error-dialog-data';\n\n@Component({\n    selector: 'rxap-http-error-message',\n    templateUrl: './code-http-error.component.html',\n    styleUrls: ['./code-http-error.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        NgIf,\n        AnyHttpErrorComponent,\n    ]\n})\nexport class CodeHttpErrorComponent implements IErrorDialogComponent<CodeHttpErrorDialogData> {\n\n  public readonly isProduction: boolean = inject(RXAP_ENVIRONMENT, { optional: true })?.production ?? false;\n\n  public readonly error: CodeHttpErrorDialogData = inject(RXAP_ERROR_DIALOG_ERROR);\n\n  public readonly showMore = signal(false);\n\n}\n","<div class=\"flex flex-col gap-2\">\n  <p class=\"text-xl\">Http Error Code:&nbsp;<span class=\"font-bold text-red-800\">{{ error.errorCode }}</span></p>\n  <p>{{ error.error.message ?? error.message }}</p>\n  <ng-container *ngIf=\"!isProduction\">\n    <hr>\n    <button (click)=\"showMore.set(true)\"\n            *ngIf=\"!showMore()\"\n            class=\"px-4 py-2 rounded bg-accent-500\">\n      <ng-container i18n>Show more details</ng-container>\n    </button>\n    <rxap-any-http-error *ngIf=\"showMore()\"></rxap-any-http-error>\n  </ng-container>\n</div>\n","import { Injectable } from '@angular/core';\nimport { AnyHttpErrorService } from '../any-http-error/any-http-error.service';\nimport { CodeHttpErrorDialogData } from './code-http-error-dialog-data';\nimport { CodeHttpErrorComponent } from './code-http-error.component';\n\n@Injectable({ providedIn: 'root' })\nexport class CodeHttpErrorService extends AnyHttpErrorService<CodeHttpErrorDialogData> {\n\n  protected override readonly component = CodeHttpErrorComponent;\n\n  override compare(a: CodeHttpErrorDialogData, b: CodeHttpErrorDialogData): boolean {\n    return super.compare(a, b) && a.errorCode === b.errorCode;\n  }\n\n}\n","import {\n  HttpErrorResponse,\n  HttpEventType,\n} from '@angular/common/http';\n\nexport interface SimplifiedHttpErrorResponse extends Record<string, unknown> {\n  url: string | null;\n  message: string;\n  name: string;\n  status: number;\n  statusText: string;\n  headers: Record<string, string[]>;\n  error: any;\n  errorMessage: string;\n  ok: boolean;\n  type: HttpEventType.Response | HttpEventType.ResponseHeader;\n}\n\nexport function SimplifyHttpErrorResponse(event: HttpErrorResponse): SimplifiedHttpErrorResponse {\n  let error = event.error;\n  if (typeof error !== 'object') {\n    if (error instanceof Blob) {\n      console.warn('error response object is a blob');\n      error = '[BLOB]';\n    } else {\n      try {\n        error = JSON.parse(error);\n      } catch (e) {\n        console.warn('error response object is not a json');\n      }\n    }\n  }\n  return {\n    errorMessage: (typeof error === 'object' ? error?.message : undefined) ?? event.message,\n    error: error,\n    message: event.message,\n    name: event.name,\n    status: event.status,\n    statusText: event.statusText,\n    url: event.url,\n    ok: event.ok,\n    type: event.type,\n    headers: event.headers.keys()\n                  .reduce((map, key) => ({\n                    ...map,\n                    [key]: event.headers.getAll(key),\n                  }), {}),\n  };\n}\n\nexport function ExtractContextFromError(error: unknown) {\n  const context: Record<string, Record<string, unknown>> = {};\n\n  if (error instanceof HttpErrorResponse) {\n    context['response'] = SimplifyHttpErrorResponse(error);\n  }\n\n  return context;\n}\n\nexport function ExtractExtraFromError(error: unknown) {\n  return {};\n}\n\nexport function ExtractTagsFromError(error: unknown) {\n  return {};\n}\n\nexport function ExtractError(error: unknown) {\n  if (error instanceof HttpErrorResponse) {\n    return error;\n  }\n\n  if (error instanceof Error) {\n    return error;\n  }\n\n  if (typeof error === 'string') {\n    return error;\n  }\n\n  return 'Handled unknown error';\n}\n\nexport function PrintError(errorCandidate: unknown) {\n  if (errorCandidate instanceof HttpErrorResponse) {\n    console.groupCollapsed(errorCandidate.message);\n    const {\n      headers,\n      error,\n      ...map\n    } = SimplifyHttpErrorResponse(errorCandidate);\n    if (typeof error === 'object' && error?.message) {\n      console.log(error?.message);\n    }\n    console.log(error);\n    console.table(map);\n    console.groupCollapsed('Headers');\n    console.table(headers);\n    console.groupEnd();\n    console.groupEnd();\n  } else if (errorCandidate instanceof Error) {\n    console.error(errorCandidate);\n  } else if (typeof errorCandidate === 'string') {\n    console.error(errorCandidate);\n  }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport {\n  ErrorHandler,\n  inject,\n  Injectable,\n  InjectionToken,\n  INJECTOR,\n  isDevMode,\n  runInInjectionContext,\n} from '@angular/core';\nimport { ConfigService } from '@rxap/config';\nimport {\n  IsNotReleaseVersion,\n  RXAP_ENVIRONMENT,\n} from '@rxap/environment';\nimport { OpenApiHttpResponseError } from '@rxap/open-api';\nimport * as Sentry from '@sentry/angular';\nimport { AngularErrorDialogData } from './error/angular-error-dialog-data';\nimport { AngularErrorService } from './error/angular-error.service';\nimport { OpenApiHttpResponseErrorDialogData } from './open-api-http-response-error/open-api-http-response-error-dialog-data';\nimport { OpenApiHttpResponseErrorService } from './open-api-http-response-error/open-api-http-response-error.service';\nimport {\n  ExtractContextFromError,\n  ExtractError,\n  ExtractExtraFromError,\n  ExtractTagsFromError,\n  PrintError,\n  SimplifyHttpErrorResponse,\n} from './utilities';\n\nexport interface ErrorHandlerOptions {\n  logErrors?: boolean;\n  showDialog?: boolean;\n  sentry?: {\n    showDialog?: boolean;\n    dialogOptions?: Sentry.ReportDialogOptions;\n  };\n}\n\nexport const RXAP_ERROR_HANDLER_OPTIONS = new InjectionToken<ErrorHandlerOptions>('rxap-error-handler-options', {\n  providedIn: 'root',\n  factory: () => ({ logErrors: true }),\n});\n\n@Injectable()\nexport class RxapErrorHandler implements ErrorHandler {\n\n  protected readonly options: ErrorHandlerOptions = (() => {\n    const options = inject(RXAP_ERROR_HANDLER_OPTIONS);\n    const environment = inject(RXAP_ENVIRONMENT);\n    const config = inject(ConfigService);\n    options.logErrors ??= true;\n    options.sentry ??= {};\n    options.sentry.showDialog ??= config.get('sentry.showDialog', false);\n    // enforce sentry showDialog to false in dev mode\n    options.sentry.showDialog = !isDevMode() && options.sentry.showDialog;\n    options.showDialog ??= IsNotReleaseVersion(environment);\n    options.sentry.dialogOptions ??= config.get('sentry.dialogOptions', {});\n    options.sentry.dialogOptions.user ??= {};\n    return options;\n  })();\n\n  protected readonly injector = inject(INJECTOR);\n\n  /**\n   * Method called for every value captured through the ErrorHandler\n   */\n  public handleError(errorCandidate: unknown): void {\n\n    let error = errorCandidate;\n\n    // Try to unwrap zone.js error.\n    // https://github.com/angular/angular/blob/master/packages/core/src/util/errors.ts\n    if (error && (error as { ngOriginalError: Error }).ngOriginalError) {\n      error = (error as { ngOriginalError: Error }).ngOriginalError;\n    }\n\n    const extractedError = ExtractError(error);\n\n    const contexts = ExtractContextFromError(error);\n    const extra = ExtractExtraFromError(error);\n    const tags = ExtractTagsFromError(error);\n\n    let eventId: string;\n\n    // Capture handled exception and send it to Sentry.\n    if (typeof extractedError === 'string') {\n      eventId = Sentry.captureMessage(extractedError, {\n        level: 'error',\n        contexts,\n        extra,\n        tags,\n      });\n    } else {\n      eventId = Sentry.captureException(extractedError, {\n        level: 'error',\n        contexts,\n        extra,\n        tags,\n      });\n    }\n\n    if (this.options.logErrors) {\n      PrintError(error);\n    }\n\n    if (this.options.sentry?.showDialog) {\n      if (!(error instanceof HttpErrorResponse)) {\n        Sentry.showReportDialog({\n          ...(this.options.sentry.dialogOptions ?? {}),\n          eventId,\n        });\n      }\n    } else if (this.options.showDialog) {\n      const nonMessage = 'unsupported error type for angular error dialog';\n      const data: AngularErrorDialogData = {\n        message: nonMessage,\n        contexts,\n        extra,\n        tags,\n      };\n      if (typeof extractedError === 'string') {\n        data.message = extractedError;\n      } else if (!(extractedError instanceof HttpErrorResponse)) {\n        data.message = extractedError.message;\n        data.stack = extractedError.stack;\n        data.name = extractedError.name;\n      }\n\n      if (extractedError instanceof OpenApiHttpResponseError) {\n        this.showOpenApiHttpResponseErrorDialog({\n          ...data,\n          ...SimplifyHttpErrorResponse(extractedError.httpErrorResponse),\n          timestamp: Date.now(),\n          metadata: extractedError.metadata,\n          method: !extractedError.metadata.operation || typeof extractedError.metadata.operation === 'string' ? 'unknown' : extractedError.metadata.operation.method,\n          operationId: extractedError.operationId,\n          serverId: extractedError.serverId\n        });\n      } else {\n        if (data.message !== nonMessage) {\n          this.showAngularErrorDialog(data);\n        }\n      }\n\n    }\n\n  }\n\n  protected showOpenApiHttpResponseErrorDialog(data: OpenApiHttpResponseErrorDialogData): void {\n    runInInjectionContext(this.injector, () => {\n      inject(OpenApiHttpResponseErrorService).push(data);\n    });\n  }\n\n  protected showAngularErrorDialog(data: AngularErrorDialogData): void {\n    runInInjectionContext(this.injector, () => {\n      inject(AngularErrorService).push(data);\n    });\n  }\n\n\n}\n","import { HttpErrorResponse } from '@angular/common/http';\n\nexport function DefaultErrorCodeExtractor(error: HttpErrorResponse): number | string | null {\n  return error.error?.code ?? null;\n}\n\nexport function DefaultErrorFilter(error: HttpErrorResponse): boolean {\n  return error.status >= 400 && (!error.url || !/\\/api\\/status/.test(error.url));\n}\n\nexport interface ErrorInterceptorOptions {\n  extractErrorCode?: (error: HttpErrorResponse) => number | string | null;\n  filter?: Array<(error: HttpErrorResponse) => boolean>;\n}\n","import {\n  HttpErrorResponse,\n  HttpEvent,\n  HttpHandlerFn,\n  HttpRequest,\n} from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport * as Sentry from '@sentry/angular';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { AnyHttpErrorService } from './any-http-error/any-http-error.service';\nimport { CodeHttpErrorService } from './code-http-error/code-http-error.service';\nimport {\n  DefaultErrorCodeExtractor,\n  DefaultErrorFilter,\n} from './error-interceptor-options';\nimport { MessageHttpErrorService } from './message-http-error/message-http-error.service';\nimport { RXAP_ERROR_INTERCEPTOR_OPTIONS } from './tokens';\nimport {\n  ExtractContextFromError,\n  ExtractExtraFromError,\n  ExtractTagsFromError,\n  SimplifyHttpErrorResponse,\n} from './utilities';\n\nexport function HttpErrorInterceptor(req: HttpRequest<unknown>, next: HttpHandlerFn): Observable<HttpEvent<unknown>> {\n\n  const anyHttpErrorService = inject(AnyHttpErrorService);\n  const messageHttpErrorService = inject(MessageHttpErrorService);\n  const codeHttpErrorService = inject(CodeHttpErrorService);\n  const options = inject(RXAP_ERROR_INTERCEPTOR_OPTIONS, { optional: true }) ?? {};\n\n  options.extractErrorCode ??= DefaultErrorCodeExtractor;\n  options.filter ??= [];\n  if (!options.filter.length) {\n    options.filter.push(DefaultErrorFilter);\n  }\n\n  return next(req).pipe(\n    tap({\n      error: async (event: Error) => {\n        if (event instanceof HttpErrorResponse) {\n\n          if (!options.filter?.some((filter) => filter(event))) {\n            return;\n          }\n\n          let error = event.error;\n          if (event.error instanceof Blob) {\n            error = await event.error.text();\n            try {\n              error = JSON.parse(error);\n            } catch (e) {\n              console.warn('error response object is not a json');\n            }\n          }\n\n          const data = {\n            ...SimplifyHttpErrorResponse(event),\n            method: req.method,\n            body: req.body,\n            timestamp: Date.now(),\n          };\n\n          if (error && typeof error === 'object') {\n            const errorCode = options.extractErrorCode!(error);\n            if (errorCode) {\n              Sentry.captureMessage(`Error Code ${ errorCode }`, {\n                level: 'warning',\n                contexts: ExtractContextFromError(error),\n                extra: ExtractExtraFromError(error),\n                tags: ExtractTagsFromError(error),\n              });\n              codeHttpErrorService.push({\n                ...data,\n                errorCode,\n              });\n            } else if (event.error.message) {\n              messageHttpErrorService.push(data);\n            } else {\n              anyHttpErrorService.push(data);\n            }\n          } else {\n            anyHttpErrorService.push(data);\n          }\n        }\n      },\n    }),\n  );\n\n}\n","import {\n  EnvironmentProviders,\n  ErrorHandler,\n  Provider,\n} from '@angular/core';\nimport {\n  RXAP_ERROR_CAPTURE_DIALOG_SERVICE,\n  RXAP_ERROR_DIALOG_DISABLED,\n} from './tokens';\nimport { Constructor } from '@rxap/utilities';\nimport { IErrorCaptureDialogService } from './error-capture-dialog.service';\nimport { RxapErrorHandler } from './error-handler';\n\nexport function provideAutoErrorInterception(...providers: Array<Provider | EnvironmentProviders>) {\n  return [\n    {\n      provide: ErrorHandler,\n      useClass: RxapErrorHandler,\n    },\n    ...providers,\n  ];\n}\n\nexport function withErrorCaptureDialogService(service: Constructor<IErrorCaptureDialogService>): Provider {\n  return {\n    provide: RXAP_ERROR_CAPTURE_DIALOG_SERVICE,\n    useClass: service,\n  };\n}\n\nexport function withErrorCaptureDialogDisabledIf(condition: boolean | (() => boolean)): Provider {\n  return {\n    provide: RXAP_ERROR_DIALOG_DISABLED,\n    useValue: typeof condition === 'function' ? condition() : condition,\n  };\n}\n\n/**\n * @deprecated Use `provideAutoErrorInterception` instead.\n */\nexport function ProvideErrorHandler(): Array<Provider | EnvironmentProviders> {\n  return [\n    {\n      provide: ErrorHandler,\n      useClass: RxapErrorHandler,\n    }\n  ];\n}\n","// region open-api-http-response-error\nexport * from './lib/open-api-http-response-error/open-api-http-response-error-dialog-data';\nexport * from './lib/open-api-http-response-error/open-api-http-response-error.component';\nexport * from './lib/open-api-http-response-error/open-api-http-response-error.service';\n// endregion\n\n// region message-http-error\nexport * from './lib/message-http-error/message-http-error-dialog-data';\nexport * from './lib/message-http-error/message-http-error.component';\nexport * from './lib/message-http-error/message-http-error.service';\n// endregion\n\n// region error-dialog\nexport * from './lib/error-dialog/error-dialog.component';\n// endregion\n\n// region error\nexport * from './lib/error/angular-error-dialog-data';\nexport * from './lib/error/angular-error.component';\nexport * from './lib/error/angular-error.service';\n// endregion\n\n// region code-http-error\nexport * from './lib/code-http-error/code-http-error-dialog-data';\nexport * from './lib/code-http-error/code-http-error.component';\nexport * from './lib/code-http-error/code-http-error.service';\n// endregion\n\n// region any-http-error\nexport * from './lib/any-http-error/any-http-error-dialog-data';\nexport * from './lib/any-http-error/any-http-error.component';\nexport * from './lib/any-http-error/any-http-error.service';\n// endregion\n\n// region \nexport * from './lib/error-capture-dialog.service';\nexport * from './lib/error-capture.service';\nexport * from './lib/error-handler';\nexport * from './lib/error-interceptor-options';\nexport * from './lib/http-error-interceptor';\nexport * from './lib/provide';\nexport * from './lib/tokens';\nexport * from './lib/utilities';\n// endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}