@trudb/tru-common-lib 0.1.550 → 0.1.552

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,18 @@
1
+ export class TruServerError {
2
+ id;
3
+ type;
4
+ code;
5
+ message;
6
+ stackTrace;
7
+ status;
8
+ constructor(error) {
9
+ let parsedError = JSON.parse(error.error);
10
+ this.id = parsedError.$id;
11
+ this.type = parsedError.$type;
12
+ this.code = parsedError.Code;
13
+ this.message = parsedError.Message;
14
+ this.stackTrace = parsedError.StackTrace;
15
+ this.status = error.status;
16
+ }
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LXNlcnZlci1lcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY2xhc3Nlcy90cnUtc2VydmVyLWVycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLEVBQUUsQ0FBUztJQUNYLElBQUksQ0FBUztJQUNiLElBQUksQ0FBUztJQUNiLE9BQU8sQ0FBUztJQUNoQixVQUFVLENBQVM7SUFDbkIsTUFBTSxDQUFTO0lBRWYsWUFBWSxLQUF3QjtRQUNsQyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsRUFBRSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsVUFBVSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUM3QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgVHJ1UHJvcGVydHlDb25maWdCYXNlIH0gZnJvbSAnLi4vYmFzZS1jbGFzc2VzL3RydS1wcm9wZXJ0eS1jb25maWctYmFzZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgVHJ1U2VydmVyRXJyb3Ige1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgdHlwZTogc3RyaW5nO1xyXG4gIGNvZGU6IG51bWJlcjtcclxuICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgc3RhY2tUcmFjZTogc3RyaW5nO1xyXG4gIHN0YXR1czogbnVtYmVyO1xyXG5cclxuICBjb25zdHJ1Y3RvcihlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpIHtcclxuICAgIGxldCBwYXJzZWRFcnJvciA9IEpTT04ucGFyc2UoZXJyb3IuZXJyb3IpO1xyXG4gICAgdGhpcy5pZCA9IHBhcnNlZEVycm9yLiRpZDtcclxuICAgIHRoaXMudHlwZSA9IHBhcnNlZEVycm9yLiR0eXBlO1xyXG4gICAgdGhpcy5jb2RlID0gcGFyc2VkRXJyb3IuQ29kZTtcclxuICAgIHRoaXMubWVzc2FnZSA9IHBhcnNlZEVycm9yLk1lc3NhZ2U7XHJcbiAgICB0aGlzLnN0YWNrVHJhY2UgPSBwYXJzZWRFcnJvci5TdGFja1RyYWNlO1xyXG4gICAgdGhpcy5zdGF0dXMgPSBlcnJvci5zdGF0dXM7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,9 @@
1
+ export class TruErrorDialogConfig {
2
+ title;
3
+ message;
4
+ constructor(title, message) {
5
+ this.title = title;
6
+ this.message = message;
7
+ }
8
+ }
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWVycm9yLWRpYWxvZy1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZXJyb3ItZGlhbG9nL2NsYXNzZXMvdHJ1LWVycm9yLWRpYWxvZy1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLG9CQUFvQjtJQUV0QjtJQUNBO0lBRlQsWUFDUyxLQUFhLEVBQ2IsT0FBZTtRQURmLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixZQUFPLEdBQVAsT0FBTyxDQUFRO0lBQ3hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBUcnVFcnJvckRpYWxvZ0NvbmZpZyB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgdGl0bGU6IHN0cmluZyxcclxuICAgIHB1YmxpYyBtZXNzYWdlOiBzdHJpbmcpIHtcclxuICB9XHJcbn1cclxuIl19
@@ -2,21 +2,22 @@ import { Injectable } from "@angular/core";
2
2
  import { throwError } from "rxjs";
3
3
  import { catchError } from "rxjs/operators";
4
4
  import * as i0 from "@angular/core";
5
- import * as i1 from "../../../services/tru-app-environment";
5
+ import * as i1 from "../../../services/tru-error-manager";
6
6
  export class TruErrorInterceptor {
7
- appEnvironment;
8
- constructor(appEnvironment) {
9
- this.appEnvironment = appEnvironment;
7
+ errorManager;
8
+ constructor(errorManager) {
9
+ this.errorManager = errorManager;
10
10
  }
11
11
  intercept(request, next) {
12
12
  return next.handle(request).pipe(catchError((error) => {
13
+ this.errorManager.handleError(error);
13
14
  return throwError(error);
14
15
  }));
15
16
  }
16
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorInterceptor, deps: [{ token: i1.TruAppEnvironment }], target: i0.ɵɵFactoryTarget.Injectable });
17
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorInterceptor, deps: [{ token: i1.TruErrorManager }], target: i0.ɵɵFactoryTarget.Injectable });
17
18
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorInterceptor });
18
19
  }
19
20
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorInterceptor, decorators: [{
20
21
  type: Injectable
21
- }], ctorParameters: () => [{ type: i1.TruAppEnvironment }] });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWVycm9yLWludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Vycm9yLWRpYWxvZy9zZXJ2aWNlcy90cnUtZXJyb3ItaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQU9uRCxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBSTVDLE1BQU0sT0FBTyxtQkFBbUI7SUFFcEI7SUFEVixZQUNVLGNBQWlDO1FBQWpDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtJQUN2QyxDQUFDO0lBRUwsU0FBUyxDQUNQLE9BQXlCLEVBQ3pCLElBQWlCO1FBRWpCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQzlCLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBRW5CLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO3VHQWZVLG1CQUFtQjsyR0FBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtcclxuICBIdHRwUmVxdWVzdCxcclxuICBIdHRwSGFuZGxlcixcclxuICBIdHRwRXZlbnQsXHJcbiAgSHR0cEludGVyY2VwdG9yLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBUcnVBcHBFbnZpcm9ubWVudCB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy90cnUtYXBwLWVudmlyb25tZW50XCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBUcnVFcnJvckludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXBwRW52aXJvbm1lbnQ6IFRydUFwcEVudmlyb25tZW50LFxyXG4gICkgeyB9XHJcblxyXG4gIGludGVyY2VwdChcclxuICAgIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sXHJcbiAgICBuZXh0OiBIdHRwSGFuZGxlclxyXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcclxuICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXF1ZXN0KS5waXBlKFxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgIFxyXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
22
+ }], ctorParameters: () => [{ type: i1.TruErrorManager }] });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWVycm9yLWludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Vycm9yLWRpYWxvZy9zZXJ2aWNlcy90cnUtZXJyb3ItaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQVFuRCxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBSTVDLE1BQU0sT0FBTyxtQkFBbUI7SUFDVjtJQUFwQixZQUFvQixZQUE2QjtRQUE3QixpQkFBWSxHQUFaLFlBQVksQ0FBaUI7SUFBSSxDQUFDO0lBRXRELFNBQVMsQ0FDUCxPQUF5QixFQUN6QixJQUFpQjtRQUVqQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUM5QixVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUU7WUFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckMsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7dUdBYlUsbUJBQW1COzJHQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gIEh0dHBSZXF1ZXN0LFxyXG4gIEh0dHBIYW5kbGVyLFxyXG4gIEh0dHBFdmVudCxcclxuICBIdHRwSW50ZXJjZXB0b3IsXHJcbiAgSHR0cEVycm9yUmVzcG9uc2UsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IFRydUVycm9yTWFuYWdlciB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy90cnUtZXJyb3ItbWFuYWdlclwiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVHJ1RXJyb3JJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlcnJvck1hbmFnZXI6IFRydUVycm9yTWFuYWdlcikgeyB9XHJcblxyXG4gIGludGVyY2VwdChcclxuICAgIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sXHJcbiAgICBuZXh0OiBIdHRwSGFuZGxlclxyXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcclxuICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXF1ZXN0KS5waXBlKFxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICB0aGlzLmVycm9yTWFuYWdlci5oYW5kbGVFcnJvcihlcnJvcik7XHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,113 @@
1
+ import { Injectable } from "@angular/core";
2
+ import { TruErrorDialog } from "../components/error-dialog/tru-error-dialog";
3
+ import { TruErrorDialogConfig } from "../components/error-dialog/classes/tru-error-dialog-config";
4
+ import { TruServerError } from "../classes/tru-server-error";
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common/http";
7
+ import * as i2 from "@angular/material/dialog";
8
+ import * as i3 from "./tru-text-manager";
9
+ import * as i4 from "./tru-ui-notification";
10
+ import * as i5 from "./tru-app-environment";
11
+ export class TruErrorManager {
12
+ http;
13
+ dialog;
14
+ textManager;
15
+ uiNotification;
16
+ appEnvironment;
17
+ baseUrl;
18
+ appName;
19
+ constructor(http, dialog, textManager, uiNotification, appEnvironment) {
20
+ this.http = http;
21
+ this.dialog = dialog;
22
+ this.textManager = textManager;
23
+ this.uiNotification = uiNotification;
24
+ this.appEnvironment = appEnvironment;
25
+ this.baseUrl = appEnvironment.appUri;
26
+ this.appName = appEnvironment.appName;
27
+ }
28
+ logErrorEvent = (message, context, area) => {
29
+ area = area || 'unknown';
30
+ console.log('[' + area + '|' + context + '] ' + message);
31
+ var logEvent = {
32
+ eventType: 'Error',
33
+ eventDate: new Date(),
34
+ applicationName: this.appName,
35
+ applicationUrl: this.baseUrl,
36
+ applicationArea: area,
37
+ context: context,
38
+ message: message
39
+ };
40
+ this.http
41
+ .post(`${this.baseUrl}/api/log/logevent`, logEvent)
42
+ .subscribe(() => {
43
+ }, (ex) => {
44
+ console.log('Unable to log error to server. ' + ex);
45
+ });
46
+ };
47
+ handleClientSideError = (error) => {
48
+ };
49
+ handleServerSideError = (error) => {
50
+ let serverError = new TruServerError(error);
51
+ if (serverError.type === 'tru-db-custom-exception') {
52
+ //var service = $injector.get(error.httpResponse.data.serviceName);
53
+ //var exceptionData = error.httpResponse.data.data;
54
+ //service(exceptionData);
55
+ }
56
+ else if (serverError.type.indexOf('TruDbRequireValidChoiceException') !== -1) {
57
+ let dialogConfig = new TruErrorDialogConfig('Require Valid Choice Exception', error.message);
58
+ this.dialog.open(TruErrorDialog, {
59
+ disableClose: true,
60
+ minWidth: "400px",
61
+ maxWidth: "600px",
62
+ data: dialogConfig
63
+ });
64
+ }
65
+ else if (serverError.type.indexOf('DuplicateKeyError') !== -1) {
66
+ let dialogConfig = new TruErrorDialogConfig('Duplicate Key Error', error.message
67
+ .replace('Cannot insert duplicate key row in object', 'Cannot insert duplicate value in table')
68
+ .replace('dbo.', '')
69
+ .replace('UIX_', '')
70
+ .replace('The statement has been terminated.', ''));
71
+ this.dialog.open(TruErrorDialog, {
72
+ disableClose: true,
73
+ minWidth: "400px",
74
+ maxWidth: "600px",
75
+ data: dialogConfig
76
+ });
77
+ }
78
+ else if (serverError.type.indexOf('OptimisticLockViolation') !== -1) {
79
+ let dialogConfig = new TruErrorDialogConfig('Concurrent saves not allowed', 'Please review any changes and save again.');
80
+ this.dialog.open(TruErrorDialog, {
81
+ disableClose: true,
82
+ minWidth: "400px",
83
+ maxWidth: "600px",
84
+ data: dialogConfig
85
+ });
86
+ }
87
+ else if (error.type.toString().lastIndexOf('TruDB.EfMssql.Runtime.DataError', 0) === 0) {
88
+ //this.uiNotification.error(
89
+ // this.textManager.fmtDataError(error.httpResponse.data.Detail.$type),
90
+ // [this.textManager.fmtExceptionToShow(error.httpResponse.data.Exception)])
91
+ }
92
+ else {
93
+ //var message = this.textManager.fmtErrorToShow(error);
94
+ //this.uiNotification.showErrorDialog(message);
95
+ //this.logErrorEvent(message);
96
+ }
97
+ };
98
+ handleError = (error) => {
99
+ if (error.type)
100
+ this.handleClientSideError(error);
101
+ else
102
+ this.handleServerSideError(error);
103
+ };
104
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorManager, deps: [{ token: i1.HttpClient }, { token: i2.MatDialog }, { token: i3.TruTextManager }, { token: i4.TruUiNotification }, { token: i5.TruAppEnvironment }], target: i0.ɵɵFactoryTarget.Injectable });
105
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorManager, providedIn: 'root' });
106
+ }
107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorManager, decorators: [{
108
+ type: Injectable,
109
+ args: [{
110
+ providedIn: 'root',
111
+ }]
112
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.MatDialog }, { type: i3.TruTextManager }, { type: i4.TruUiNotification }, { type: i5.TruAppEnvironment }] });
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWVycm9yLW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL3NlcnZpY2VzL3RydS1lcnJvci1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBSWxHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7OztBQUs3RCxNQUFNLE9BQU8sZUFBZTtJQUtoQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBUkYsT0FBTyxDQUFTO0lBQ2hCLE9BQU8sQ0FBUztJQUV4QixZQUNVLElBQWdCLEVBQ2hCLE1BQWlCLEVBQ2pCLFdBQTJCLEVBQzNCLGNBQWlDLEVBQ2pDLGNBQWlDO1FBSmpDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0IsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUN6QyxJQUFJLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUM7UUFDckMsSUFBSSxDQUFDLE9BQU8sR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDO0lBQ3hDLENBQUM7SUFFTyxhQUFhLEdBQUcsQ0FBQyxPQUFlLEVBQUUsT0FBZSxFQUFFLElBQVksRUFBRSxFQUFFO1FBQ3pFLElBQUksR0FBRyxJQUFJLElBQUksU0FBUyxDQUFDO1FBQ3pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsT0FBTyxHQUFHLElBQUksR0FBRyxP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SSxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsQ0FBQyxpQ0FBaUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUV6Riw0QkFBNEI7WUFDNUIsd0VBQXdFO1lBQ3hFLDZFQUE2RTtRQUMvRSxDQUFDO2FBQU0sQ0FBQztZQUNOLHVEQUF1RDtZQUN2RCwrQ0FBK0M7WUFDL0MsOEJBQThCO1FBQ2hDLENBQUM7SUFDSCxDQUFDLENBQUE7SUFFRCxXQUFXLEdBQUcsQ0FBQyxLQUF3QixFQUFFLEVBQUU7UUFDekMsSUFBSSxLQUFLLENBQUMsSUFBSTtZQUNaLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQzs7WUFFbEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUMsQ0FBQTt1R0F2R1UsZUFBZTsyR0FBZixlQUFlLGNBRmQsTUFBTTs7MkZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgVHJ1VWlOb3RpZmljYXRpb24gfSBmcm9tIFwiLi90cnUtdWktbm90aWZpY2F0aW9uXCI7XHJcbmltcG9ydCB7IFRydVRleHRNYW5hZ2VyIH0gZnJvbSBcIi4vdHJ1LXRleHQtbWFuYWdlclwiO1xyXG5pbXBvcnQgeyBUcnVFcnJvckRpYWxvZyB9IGZyb20gXCIuLi9jb21wb25lbnRzL2Vycm9yLWRpYWxvZy90cnUtZXJyb3ItZGlhbG9nXCI7XHJcbmltcG9ydCB7IFRydUVycm9yRGlhbG9nQ29uZmlnIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvZXJyb3ItZGlhbG9nL2NsYXNzZXMvdHJ1LWVycm9yLWRpYWxvZy1jb25maWdcIjtcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBUcnVBcHBFbnZpcm9ubWVudCB9IGZyb20gXCIuL3RydS1hcHAtZW52aXJvbm1lbnRcIjtcclxuaW1wb3J0IHsgVHJ1U2VydmVyRXJyb3IgfSBmcm9tIFwiLi4vY2xhc3Nlcy90cnUtc2VydmVyLWVycm9yXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJ1RXJyb3JNYW5hZ2VyIHtcclxuICBwcml2YXRlIGJhc2VVcmw6IHN0cmluZztcclxuICBwcml2YXRlIGFwcE5hbWU6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSB0ZXh0TWFuYWdlcjogVHJ1VGV4dE1hbmFnZXIsXHJcbiAgICBwcml2YXRlIHVpTm90aWZpY2F0aW9uOiBUcnVVaU5vdGlmaWNhdGlvbixcclxuICAgIHByaXZhdGUgYXBwRW52aXJvbm1lbnQ6IFRydUFwcEVudmlyb25tZW50KSB7XHJcbiAgICB0aGlzLmJhc2VVcmwgPSBhcHBFbnZpcm9ubWVudC5hcHBVcmk7XHJcbiAgICB0aGlzLmFwcE5hbWUgPSBhcHBFbnZpcm9ubWVudC5hcHBOYW1lO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2dFcnJvckV2ZW50ID0gKG1lc3NhZ2U6IHN0cmluZywgY29udGV4dDogc3RyaW5nLCBhcmVhOiBzdHJpbmcpID0+IHtcclxuICAgIGFyZWEgPSBhcmVhIHx8ICd1bmtub3duJztcclxuICAgIGNvbnNvbGUubG9nKCdbJyArIGFyZWEgKyAnfCcgKyBjb250ZXh0ICsgJ10gJyArIG1lc3NhZ2UpO1xyXG4gICAgdmFyIGxvZ0V2ZW50ID0ge1xyXG4gICAgICBldmVudFR5cGU6ICdFcnJvcicsXHJcbiAgICAgIGV2ZW50RGF0ZTogbmV3IERhdGUoKSxcclxuICAgICAgYXBwbGljYXRpb25OYW1lOiB0aGlzLmFwcE5hbWUsXHJcbiAgICAgIGFwcGxpY2F0aW9uVXJsOiB0aGlzLmJhc2VVcmwsXHJcbiAgICAgIGFwcGxpY2F0aW9uQXJlYTogYXJlYSxcclxuICAgICAgY29udGV4dDogY29udGV4dCxcclxuICAgICAgbWVzc2FnZTogbWVzc2FnZVxyXG4gICAgfTtcclxuICAgIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0vYXBpL2xvZy9sb2dldmVudGAsIGxvZ0V2ZW50KVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuXHJcbiAgICAgIH0sIChleDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ1VuYWJsZSB0byBsb2cgZXJyb3IgdG8gc2VydmVyLiAnICsgZXgpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlQ2xpZW50U2lkZUVycm9yID0gKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlU2VydmVyU2lkZUVycm9yID0gKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgbGV0IHNlcnZlckVycm9yID0gbmV3IFRydVNlcnZlckVycm9yKGVycm9yKTtcclxuICAgIGlmIChzZXJ2ZXJFcnJvci50eXBlID09PSAndHJ1LWRiLWN1c3RvbS1leGNlcHRpb24nKSB7XHJcbiAgICAgIC8vdmFyIHNlcnZpY2UgPSAkaW5qZWN0b3IuZ2V0KGVycm9yLmh0dHBSZXNwb25zZS5kYXRhLnNlcnZpY2VOYW1lKTtcclxuICAgICAgLy92YXIgZXhjZXB0aW9uRGF0YSA9IGVycm9yLmh0dHBSZXNwb25zZS5kYXRhLmRhdGE7XHJcbiAgICAgIC8vc2VydmljZShleGNlcHRpb25EYXRhKTtcclxuICAgIH0gZWxzZSBpZiAoc2VydmVyRXJyb3IudHlwZS5pbmRleE9mKCdUcnVEYlJlcXVpcmVWYWxpZENob2ljZUV4Y2VwdGlvbicpICE9PSAtMSkge1xyXG5cclxuICAgICAgbGV0IGRpYWxvZ0NvbmZpZyA9IG5ldyBUcnVFcnJvckRpYWxvZ0NvbmZpZyhcclxuICAgICAgICAnUmVxdWlyZSBWYWxpZCBDaG9pY2UgRXhjZXB0aW9uJyxcclxuICAgICAgICBlcnJvci5tZXNzYWdlKTtcclxuXHJcbiAgICAgIHRoaXMuZGlhbG9nLm9wZW4oVHJ1RXJyb3JEaWFsb2csIHtcclxuICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgICAgbWluV2lkdGg6IFwiNDAwcHhcIixcclxuICAgICAgICBtYXhXaWR0aDogXCI2MDBweFwiLFxyXG4gICAgICAgIGRhdGE6IGRpYWxvZ0NvbmZpZ1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoc2VydmVyRXJyb3IudHlwZS5pbmRleE9mKCdEdXBsaWNhdGVLZXlFcnJvcicpICE9PSAtMSkge1xyXG5cclxuICAgICAgbGV0IGRpYWxvZ0NvbmZpZyA9IG5ldyBUcnVFcnJvckRpYWxvZ0NvbmZpZyhcclxuICAgICAgICAnRHVwbGljYXRlIEtleSBFcnJvcicsXHJcbiAgICAgICAgZXJyb3IubWVzc2FnZVxyXG4gICAgICAgICAgLnJlcGxhY2UoJ0Nhbm5vdCBpbnNlcnQgZHVwbGljYXRlIGtleSByb3cgaW4gb2JqZWN0JywgJ0Nhbm5vdCBpbnNlcnQgZHVwbGljYXRlIHZhbHVlIGluIHRhYmxlJylcclxuICAgICAgICAgIC5yZXBsYWNlKCdkYm8uJywgJycpXHJcbiAgICAgICAgICAucmVwbGFjZSgnVUlYXycsICcnKVxyXG4gICAgICAgICAgLnJlcGxhY2UoJ1RoZSBzdGF0ZW1lbnQgaGFzIGJlZW4gdGVybWluYXRlZC4nLCAnJykpO1xyXG5cclxuICAgICAgdGhpcy5kaWFsb2cub3BlbihUcnVFcnJvckRpYWxvZywge1xyXG4gICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgICBtaW5XaWR0aDogXCI0MDBweFwiLFxyXG4gICAgICAgIG1heFdpZHRoOiBcIjYwMHB4XCIsXHJcbiAgICAgICAgZGF0YTogZGlhbG9nQ29uZmlnXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH0gZWxzZSBpZiAoc2VydmVyRXJyb3IudHlwZS5pbmRleE9mKCdPcHRpbWlzdGljTG9ja1Zpb2xhdGlvbicpICE9PSAtMSkge1xyXG5cclxuICAgICAgbGV0IGRpYWxvZ0NvbmZpZyA9IG5ldyBUcnVFcnJvckRpYWxvZ0NvbmZpZyhcclxuICAgICAgICAnQ29uY3VycmVudCBzYXZlcyBub3QgYWxsb3dlZCcsXHJcbiAgICAgICAgJ1BsZWFzZSByZXZpZXcgYW55IGNoYW5nZXMgYW5kIHNhdmUgYWdhaW4uJyk7XHJcblxyXG4gICAgICB0aGlzLmRpYWxvZy5vcGVuKFRydUVycm9yRGlhbG9nLCB7XHJcbiAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICAgIG1pbldpZHRoOiBcIjQwMHB4XCIsXHJcbiAgICAgICAgbWF4V2lkdGg6IFwiNjAwcHhcIixcclxuICAgICAgICBkYXRhOiBkaWFsb2dDb25maWdcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGVycm9yLnR5cGUudG9TdHJpbmcoKS5sYXN0SW5kZXhPZignVHJ1REIuRWZNc3NxbC5SdW50aW1lLkRhdGFFcnJvcicsIDApID09PSAwKSB7XHJcblxyXG4gICAgICAvL3RoaXMudWlOb3RpZmljYXRpb24uZXJyb3IoXHJcbiAgICAgIC8vICB0aGlzLnRleHRNYW5hZ2VyLmZtdERhdGFFcnJvcihlcnJvci5odHRwUmVzcG9uc2UuZGF0YS5EZXRhaWwuJHR5cGUpLFxyXG4gICAgICAvLyAgW3RoaXMudGV4dE1hbmFnZXIuZm10RXhjZXB0aW9uVG9TaG93KGVycm9yLmh0dHBSZXNwb25zZS5kYXRhLkV4Y2VwdGlvbildKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy92YXIgbWVzc2FnZSA9IHRoaXMudGV4dE1hbmFnZXIuZm10RXJyb3JUb1Nob3coZXJyb3IpO1xyXG4gICAgICAvL3RoaXMudWlOb3RpZmljYXRpb24uc2hvd0Vycm9yRGlhbG9nKG1lc3NhZ2UpO1xyXG4gICAgICAvL3RoaXMubG9nRXJyb3JFdmVudChtZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUVycm9yID0gKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgaWYgKGVycm9yLnR5cGUpXHJcbiAgICAgIHRoaXMuaGFuZGxlQ2xpZW50U2lkZUVycm9yKGVycm9yKTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5oYW5kbGVTZXJ2ZXJTaWRlRXJyb3IoZXJyb3IpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -9176,23 +9176,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
9176
9176
  type: Injectable
9177
9177
  }] });
9178
9178
 
9179
- class TruErrorInterceptor {
9180
- appEnvironment;
9181
- constructor(appEnvironment) {
9182
- this.appEnvironment = appEnvironment;
9183
- }
9184
- intercept(request, next) {
9185
- return next.handle(request).pipe(catchError((error) => {
9186
- return throwError(error);
9187
- }));
9188
- }
9189
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorInterceptor, deps: [{ token: TruAppEnvironment }], target: i0.ɵɵFactoryTarget.Injectable });
9190
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorInterceptor });
9191
- }
9192
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorInterceptor, decorators: [{
9193
- type: Injectable
9194
- }], ctorParameters: () => [{ type: TruAppEnvironment }] });
9195
-
9196
9179
  class TruErrorDialog {
9197
9180
  dialogRef;
9198
9181
  data;
@@ -9219,6 +9202,154 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
9219
9202
  args: [MAT_DIALOG_DATA]
9220
9203
  }] }] });
9221
9204
 
9205
+ class TruErrorDialogConfig {
9206
+ title;
9207
+ message;
9208
+ constructor(title, message) {
9209
+ this.title = title;
9210
+ this.message = message;
9211
+ }
9212
+ }
9213
+
9214
+ class TruServerError {
9215
+ id;
9216
+ type;
9217
+ code;
9218
+ message;
9219
+ stackTrace;
9220
+ status;
9221
+ constructor(error) {
9222
+ let parsedError = JSON.parse(error.error);
9223
+ this.id = parsedError.$id;
9224
+ this.type = parsedError.$type;
9225
+ this.code = parsedError.Code;
9226
+ this.message = parsedError.Message;
9227
+ this.stackTrace = parsedError.StackTrace;
9228
+ this.status = error.status;
9229
+ }
9230
+ }
9231
+
9232
+ class TruErrorManager {
9233
+ http;
9234
+ dialog;
9235
+ textManager;
9236
+ uiNotification;
9237
+ appEnvironment;
9238
+ baseUrl;
9239
+ appName;
9240
+ constructor(http, dialog, textManager, uiNotification, appEnvironment) {
9241
+ this.http = http;
9242
+ this.dialog = dialog;
9243
+ this.textManager = textManager;
9244
+ this.uiNotification = uiNotification;
9245
+ this.appEnvironment = appEnvironment;
9246
+ this.baseUrl = appEnvironment.appUri;
9247
+ this.appName = appEnvironment.appName;
9248
+ }
9249
+ logErrorEvent = (message, context, area) => {
9250
+ area = area || 'unknown';
9251
+ console.log('[' + area + '|' + context + '] ' + message);
9252
+ var logEvent = {
9253
+ eventType: 'Error',
9254
+ eventDate: new Date(),
9255
+ applicationName: this.appName,
9256
+ applicationUrl: this.baseUrl,
9257
+ applicationArea: area,
9258
+ context: context,
9259
+ message: message
9260
+ };
9261
+ this.http
9262
+ .post(`${this.baseUrl}/api/log/logevent`, logEvent)
9263
+ .subscribe(() => {
9264
+ }, (ex) => {
9265
+ console.log('Unable to log error to server. ' + ex);
9266
+ });
9267
+ };
9268
+ handleClientSideError = (error) => {
9269
+ };
9270
+ handleServerSideError = (error) => {
9271
+ let serverError = new TruServerError(error);
9272
+ if (serverError.type === 'tru-db-custom-exception') {
9273
+ //var service = $injector.get(error.httpResponse.data.serviceName);
9274
+ //var exceptionData = error.httpResponse.data.data;
9275
+ //service(exceptionData);
9276
+ }
9277
+ else if (serverError.type.indexOf('TruDbRequireValidChoiceException') !== -1) {
9278
+ let dialogConfig = new TruErrorDialogConfig('Require Valid Choice Exception', error.message);
9279
+ this.dialog.open(TruErrorDialog, {
9280
+ disableClose: true,
9281
+ minWidth: "400px",
9282
+ maxWidth: "600px",
9283
+ data: dialogConfig
9284
+ });
9285
+ }
9286
+ else if (serverError.type.indexOf('DuplicateKeyError') !== -1) {
9287
+ let dialogConfig = new TruErrorDialogConfig('Duplicate Key Error', error.message
9288
+ .replace('Cannot insert duplicate key row in object', 'Cannot insert duplicate value in table')
9289
+ .replace('dbo.', '')
9290
+ .replace('UIX_', '')
9291
+ .replace('The statement has been terminated.', ''));
9292
+ this.dialog.open(TruErrorDialog, {
9293
+ disableClose: true,
9294
+ minWidth: "400px",
9295
+ maxWidth: "600px",
9296
+ data: dialogConfig
9297
+ });
9298
+ }
9299
+ else if (serverError.type.indexOf('OptimisticLockViolation') !== -1) {
9300
+ let dialogConfig = new TruErrorDialogConfig('Concurrent saves not allowed', 'Please review any changes and save again.');
9301
+ this.dialog.open(TruErrorDialog, {
9302
+ disableClose: true,
9303
+ minWidth: "400px",
9304
+ maxWidth: "600px",
9305
+ data: dialogConfig
9306
+ });
9307
+ }
9308
+ else if (error.type.toString().lastIndexOf('TruDB.EfMssql.Runtime.DataError', 0) === 0) {
9309
+ //this.uiNotification.error(
9310
+ // this.textManager.fmtDataError(error.httpResponse.data.Detail.$type),
9311
+ // [this.textManager.fmtExceptionToShow(error.httpResponse.data.Exception)])
9312
+ }
9313
+ else {
9314
+ //var message = this.textManager.fmtErrorToShow(error);
9315
+ //this.uiNotification.showErrorDialog(message);
9316
+ //this.logErrorEvent(message);
9317
+ }
9318
+ };
9319
+ handleError = (error) => {
9320
+ if (error.type)
9321
+ this.handleClientSideError(error);
9322
+ else
9323
+ this.handleServerSideError(error);
9324
+ };
9325
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorManager, deps: [{ token: i2.HttpClient }, { token: i1.MatDialog }, { token: TruTextManager }, { token: TruUiNotification }, { token: TruAppEnvironment }], target: i0.ɵɵFactoryTarget.Injectable });
9326
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorManager, providedIn: 'root' });
9327
+ }
9328
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorManager, decorators: [{
9329
+ type: Injectable,
9330
+ args: [{
9331
+ providedIn: 'root',
9332
+ }]
9333
+ }], ctorParameters: () => [{ type: i2.HttpClient }, { type: i1.MatDialog }, { type: TruTextManager }, { type: TruUiNotification }, { type: TruAppEnvironment }] });
9334
+
9335
+ class TruErrorInterceptor {
9336
+ errorManager;
9337
+ constructor(errorManager) {
9338
+ this.errorManager = errorManager;
9339
+ }
9340
+ intercept(request, next) {
9341
+ return next.handle(request).pipe(catchError((error) => {
9342
+ this.errorManager.handleError(error);
9343
+ return throwError(error);
9344
+ }));
9345
+ }
9346
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorInterceptor, deps: [{ token: TruErrorManager }], target: i0.ɵɵFactoryTarget.Injectable });
9347
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorInterceptor });
9348
+ }
9349
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorInterceptor, decorators: [{
9350
+ type: Injectable
9351
+ }], ctorParameters: () => [{ type: TruErrorManager }] });
9352
+
9222
9353
  class TruErrorDialogModule {
9223
9354
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9224
9355
  static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.5", ngImport: i0, type: TruErrorDialogModule, declarations: [TruErrorDialog], imports: [CommonModule,