vc-error-handlers 0.1.98 → 0.2.0
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.
- package/esm2022/lib/configuration.mjs +7 -0
- package/{esm2020 → esm2022}/lib/featureFlag/feature-flag.directive.mjs +27 -27
- package/esm2022/lib/featureFlag/feature-flag.module.mjs +20 -0
- package/esm2022/lib/featureFlag/feature-flag.service.mjs +98 -0
- package/{esm2020 → esm2022}/lib/shared/components/chunk-unavailable/chunk-unavailable.component.mjs +35 -35
- package/esm2022/lib/shared/components/component-level-server-error/component-level-server-error.component.mjs +65 -0
- package/{esm2020 → esm2022}/lib/shared/components/error-modal/error-modal.component.mjs +45 -45
- package/esm2022/lib/shared/components/page-not-found/page-not-found.component.mjs +92 -0
- package/esm2022/lib/shared/components/server-error/server-error.component.mjs +83 -0
- package/{esm2020 → esm2022}/lib/shared/components/session-expired/session-expired.component.mjs +35 -35
- package/esm2022/lib/shared/components/unauthorized/unauthorized.component.mjs +103 -0
- package/{esm2020 → esm2022}/lib/shared/constants/api-config.constants.mjs +239 -239
- package/{esm2020 → esm2022}/lib/shared/constants/error-handling.constants.mjs +62 -62
- package/{esm2020 → esm2022}/lib/shared/errorhandler/chunk-error.handler.mjs +18 -18
- package/{esm2020 → esm2022}/lib/shared/errorhandler/sentry-error.handler.mjs +47 -47
- package/{esm2020 → esm2022}/lib/shared/interceptors/http.interceptor.mjs +35 -35
- package/{esm2020 → esm2022}/lib/shared/services/global-error.service.mjs +115 -115
- package/{esm2020 → esm2022}/lib/shared/services/router.service.mjs +19 -19
- package/{esm2020 → esm2022}/lib/shared/services/util.service.mjs +48 -48
- package/{esm2020 → esm2022}/lib/shared/types/global-error.types.mjs +15 -15
- package/{esm2020 → esm2022}/lib/ui-kit/dialog/dialog-config.mjs +2 -2
- package/esm2022/lib/ui-kit/dialog/dialog-injector.mjs +15 -0
- package/{esm2020 → esm2022}/lib/ui-kit/dialog/dialog-ref.mjs +12 -12
- package/{esm2020 → esm2022}/lib/ui-kit/dialog/dialog.component.mjs +85 -85
- package/esm2022/lib/ui-kit/dialog/dialog.module.mjs +21 -0
- package/{esm2020 → esm2022}/lib/ui-kit/dialog/dialog.service.mjs +52 -52
- package/{esm2020 → esm2022}/lib/ui-kit/dialog/insertion.directive.mjs +16 -16
- package/{esm2020 → esm2022}/lib/ui-kit/snack-bar/snack-bar/snack-bar.component.mjs +50 -50
- package/esm2022/lib/ui-kit/snack-bar/snack-bar.module.mjs +18 -0
- package/{esm2020 → esm2022}/lib/ui-kit/snack-bar/snack-bar.service.mjs +32 -32
- package/{esm2020 → esm2022}/lib/vc-error-handlers.component.mjs +85 -85
- package/esm2022/lib/vc-error-handlers.module.mjs +84 -0
- package/{esm2020 → esm2022}/lib/vc-error-handlers.service.mjs +14 -14
- package/{esm2020 → esm2022}/public-api.mjs +16 -16
- package/{esm2020 → esm2022}/vc-error-handlers.mjs +4 -4
- package/{fesm2020 → fesm2022}/vc-error-handlers.mjs +1286 -1359
- package/fesm2022/vc-error-handlers.mjs.map +1 -0
- package/{vc-error-handlers.d.ts → index.d.ts} +5 -5
- package/lib/configuration.d.ts +5 -4
- package/lib/featureFlag/feature-flag.directive.d.ts +13 -13
- package/lib/featureFlag/feature-flag.module.d.ts +8 -8
- package/lib/featureFlag/feature-flag.service.d.ts +21 -19
- package/lib/shared/components/chunk-unavailable/chunk-unavailable.component.d.ts +20 -20
- package/lib/shared/components/component-level-server-error/component-level-server-error.component.d.ts +19 -19
- package/lib/shared/components/error-modal/error-modal.component.d.ts +21 -21
- package/lib/shared/components/page-not-found/page-not-found.component.d.ts +23 -23
- package/lib/shared/components/server-error/server-error.component.d.ts +19 -19
- package/lib/shared/components/session-expired/session-expired.component.d.ts +20 -20
- package/lib/shared/components/unauthorized/unauthorized.component.d.ts +23 -23
- package/lib/shared/constants/api-config.constants.d.ts +20 -20
- package/lib/shared/constants/error-handling.constants.d.ts +62 -62
- package/lib/shared/errorhandler/chunk-error.handler.d.ts +7 -7
- package/lib/shared/errorhandler/sentry-error.handler.d.ts +14 -14
- package/lib/shared/interceptors/http.interceptor.d.ts +13 -13
- package/lib/shared/services/global-error.service.d.ts +31 -31
- package/lib/shared/services/router.service.d.ts +6 -6
- package/lib/shared/services/util.service.d.ts +15 -15
- package/lib/shared/types/global-error.types.d.ts +27 -27
- package/lib/ui-kit/dialog/dialog-config.d.ts +6 -6
- package/lib/ui-kit/dialog/dialog-injector.d.ts +7 -7
- package/lib/ui-kit/dialog/dialog-ref.d.ts +7 -7
- package/lib/ui-kit/dialog/dialog.component.d.ts +33 -33
- package/lib/ui-kit/dialog/dialog.module.d.ts +9 -9
- package/lib/ui-kit/dialog/dialog.service.d.ts +17 -17
- package/lib/ui-kit/dialog/insertion.directive.d.ts +8 -8
- package/lib/ui-kit/snack-bar/snack-bar/snack-bar.component.d.ts +20 -20
- package/lib/ui-kit/snack-bar/snack-bar.module.d.ts +8 -8
- package/lib/ui-kit/snack-bar/snack-bar.service.d.ts +11 -11
- package/lib/vc-error-handlers.component.d.ts +26 -26
- package/lib/vc-error-handlers.module.d.ts +26 -26
- package/lib/vc-error-handlers.service.d.ts +6 -6
- package/package.json +7 -13
- package/public-api.d.ts +13 -13
- package/environments/environment.d.ts +0 -39
- package/esm2020/environments/environment.mjs +0 -75
- package/esm2020/lib/configuration.mjs +0 -6
- package/esm2020/lib/featureFlag/feature-flag.module.mjs +0 -22
- package/esm2020/lib/featureFlag/feature-flag.service.mjs +0 -95
- package/esm2020/lib/shared/components/component-level-server-error/component-level-server-error.component.mjs +0 -64
- package/esm2020/lib/shared/components/page-not-found/page-not-found.component.mjs +0 -91
- package/esm2020/lib/shared/components/server-error/server-error.component.mjs +0 -82
- package/esm2020/lib/shared/components/unauthorized/unauthorized.component.mjs +0 -102
- package/esm2020/lib/ui-kit/dialog/dialog-injector.mjs +0 -15
- package/esm2020/lib/ui-kit/dialog/dialog.module.mjs +0 -21
- package/esm2020/lib/ui-kit/snack-bar/snack-bar.module.mjs +0 -18
- package/esm2020/lib/vc-error-handlers.module.mjs +0 -84
- package/fesm2015/vc-error-handlers.mjs +0 -1679
- package/fesm2015/vc-error-handlers.mjs.map +0 -1
- package/fesm2020/vc-error-handlers.mjs.map +0 -1
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { Directive } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class InsertionDirective {
|
|
4
|
-
constructor(viewContainerRef) {
|
|
5
|
-
this.viewContainerRef = viewContainerRef;
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
11
|
-
type: Directive,
|
|
12
|
-
args: [{
|
|
13
|
-
selector: '[appInsertion]',
|
|
14
|
-
}]
|
|
15
|
-
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; } });
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Directive } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class InsertionDirective {
|
|
4
|
+
constructor(viewContainerRef) {
|
|
5
|
+
this.viewContainerRef = viewContainerRef;
|
|
6
|
+
}
|
|
7
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InsertionDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
8
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: InsertionDirective, selector: "[appInsertion]", ngImport: i0 }); }
|
|
9
|
+
}
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InsertionDirective, decorators: [{
|
|
11
|
+
type: Directive,
|
|
12
|
+
args: [{
|
|
13
|
+
selector: '[appInsertion]',
|
|
14
|
+
}]
|
|
15
|
+
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; } });
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zZXJ0aW9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZjLWVycm9yLWhhbmRsZXJzL3NyYy9saWIvdWkta2l0L2RpYWxvZy9pbnNlcnRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDOztBQUs1RCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFlBQW1CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQUcsQ0FBQzsrR0FEOUMsa0JBQWtCO21HQUFsQixrQkFBa0I7OzRGQUFsQixrQkFBa0I7a0JBSDlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtpQkFDM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2FwcEluc2VydGlvbl0nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5zZXJ0aW9uRGlyZWN0aXZlIHtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge31cclxufVxyXG4iXX0=
|
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "../snack-bar.service";
|
|
4
|
-
import * as i2 from "@angular/common";
|
|
5
|
-
export class SnackBarComponent {
|
|
6
|
-
constructor(snackbarService) {
|
|
7
|
-
this.snackbarService = snackbarService;
|
|
8
|
-
this.show = false;
|
|
9
|
-
this.message = '--';
|
|
10
|
-
this.icon = '';
|
|
11
|
-
this.type = 'alert';
|
|
12
|
-
this.icons = {
|
|
13
|
-
success: '',
|
|
14
|
-
warning: '',
|
|
15
|
-
info: '',
|
|
16
|
-
alert: '',
|
|
17
|
-
error: '',
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
ngOnInit() {
|
|
21
|
-
this.snackbarSubscription = this.snackbarService.snackbarState.subscribe((state) => {
|
|
22
|
-
if (state.icon && Object.keys(this.icons).includes(state?.icon)) {
|
|
23
|
-
this.icon = this.icons[state.icon];
|
|
24
|
-
this.type = state?.icon;
|
|
25
|
-
}
|
|
26
|
-
this.message = state.message;
|
|
27
|
-
this.show = state.show;
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
setAutoClose() {
|
|
31
|
-
setTimeout(() => {
|
|
32
|
-
this.show = false;
|
|
33
|
-
this.close();
|
|
34
|
-
}, 3000);
|
|
35
|
-
}
|
|
36
|
-
close() {
|
|
37
|
-
this.show = false;
|
|
38
|
-
this.snackbarService.hide();
|
|
39
|
-
}
|
|
40
|
-
ngOnDestroy() {
|
|
41
|
-
this.snackbarSubscription.unsubscribe();
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
47
|
-
type: Component,
|
|
48
|
-
args: [{ selector: 'app-snack-bar', template: "<div class=\"workflow-snackbar\" *ngIf=\"show\">\r\n <div class=\"workflow-snackbar-inner\">\r\n <div class=\"workflow-snackbarText\">\r\n <!--  -->\r\n <i class=\"icons\" [class]=\"type\" [innerHTML]=\"icon\"></i> <span [innerHTML]=\"message\">{{ message }}</span>\r\n </div>\r\n <button (click)=\"close()\">[ <span>Close</span> ]</button>\r\n </div>\r\n </div>", styles: ["::ng-deep .workflow-snackbar{position:fixed;top:20px;left:0;right:0;display:flex;align-items:center;justify-content:center;z-index:2147483647!important;pointer-events:none;animation:slide-top .3s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .workflow-snackbar.white{background-color:#fff;color:#000;z-index:20}::ng-deep .workflow-snackbar.white button{color:#f6882f;font-size:11px;font-weight:400;pointer-events:all}::ng-deep .workflow-snackbar .workflow-snackbar-inner{display:flex;max-width:500px;min-width:450px;align-items:center;justify-content:space-between;padding:10px;background:#
|
|
49
|
-
}], ctorParameters: function () { return [{ type: i1.SnackBarService }]; } });
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../snack-bar.service";
|
|
4
|
+
import * as i2 from "@angular/common";
|
|
5
|
+
export class SnackBarComponent {
|
|
6
|
+
constructor(snackbarService) {
|
|
7
|
+
this.snackbarService = snackbarService;
|
|
8
|
+
this.show = false;
|
|
9
|
+
this.message = '--';
|
|
10
|
+
this.icon = '';
|
|
11
|
+
this.type = 'alert';
|
|
12
|
+
this.icons = {
|
|
13
|
+
success: '',
|
|
14
|
+
warning: '',
|
|
15
|
+
info: '',
|
|
16
|
+
alert: '',
|
|
17
|
+
error: '',
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
ngOnInit() {
|
|
21
|
+
this.snackbarSubscription = this.snackbarService.snackbarState.subscribe((state) => {
|
|
22
|
+
if (state.icon && Object.keys(this.icons).includes(state?.icon)) {
|
|
23
|
+
this.icon = this.icons[state.icon];
|
|
24
|
+
this.type = state?.icon;
|
|
25
|
+
}
|
|
26
|
+
this.message = state.message;
|
|
27
|
+
this.show = state.show;
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
setAutoClose() {
|
|
31
|
+
setTimeout(() => {
|
|
32
|
+
this.show = false;
|
|
33
|
+
this.close();
|
|
34
|
+
}, 3000);
|
|
35
|
+
}
|
|
36
|
+
close() {
|
|
37
|
+
this.show = false;
|
|
38
|
+
this.snackbarService.hide();
|
|
39
|
+
}
|
|
40
|
+
ngOnDestroy() {
|
|
41
|
+
this.snackbarSubscription.unsubscribe();
|
|
42
|
+
}
|
|
43
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SnackBarComponent, deps: [{ token: i1.SnackBarService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
44
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SnackBarComponent, selector: "app-snack-bar", ngImport: i0, template: "<div class=\"workflow-snackbar\" *ngIf=\"show\">\r\n <div class=\"workflow-snackbar-inner\">\r\n <div class=\"workflow-snackbarText\">\r\n <!--  -->\r\n <i class=\"icons\" [class]=\"type\" [innerHTML]=\"icon\"></i> <span [innerHTML]=\"message\">{{ message }}</span>\r\n </div>\r\n <button (click)=\"close()\">[ <span>Close</span> ]</button>\r\n </div>\r\n </div>", styles: ["::ng-deep .workflow-snackbar{position:fixed;top:20px;left:0;right:0;display:flex;align-items:center;justify-content:center;z-index:2147483647!important;pointer-events:none;animation:slide-top .3s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .workflow-snackbar.white{background-color:#fff;color:#000;z-index:20}::ng-deep .workflow-snackbar.white button{color:#f6882f;font-size:11px;font-weight:400;pointer-events:all}::ng-deep .workflow-snackbar .workflow-snackbar-inner{display:flex;max-width:500px;min-width:450px;align-items:center;justify-content:space-between;padding:10px;background:#fff;border-radius:3px;box-shadow:0 0 10px #0003;min-height:55px;pointer-events:auto}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText{color:#161b2f;font-size:13px;display:flex;align-items:center;width:calc(100% - 70px)}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i{background:#f1f1f1;color:#d93b41;border-radius:50px;font-size:16px;width:30px;height:30px;text-align:center;line-height:28px;margin-right:10px;min-width:30px}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i.success{color:#34aa44}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i.warning{color:#f0b819}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i.info{color:#1e5dd3}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i.alert{color:#d93b41}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i.error{color:#d93b41}::ng-deep .workflow-snackbar .workflow-snackbar-inner button{background:transparent;border:none;font-size:11px;padding:0;position:relative;color:#747576;width:65px;text-align:right;cursor:pointer;text-transform:uppercase}::ng-deep .workflow-snackbar .workflow-snackbar-inner button span{color:#1e5dd3;font-weight:500}::ng-deep .workflow-snackbar .workflow-snackbar-inner button:focus{outline:none}@keyframes slide-top{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
45
|
+
}
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SnackBarComponent, decorators: [{
|
|
47
|
+
type: Component,
|
|
48
|
+
args: [{ selector: 'app-snack-bar', template: "<div class=\"workflow-snackbar\" *ngIf=\"show\">\r\n <div class=\"workflow-snackbar-inner\">\r\n <div class=\"workflow-snackbarText\">\r\n <!--  -->\r\n <i class=\"icons\" [class]=\"type\" [innerHTML]=\"icon\"></i> <span [innerHTML]=\"message\">{{ message }}</span>\r\n </div>\r\n <button (click)=\"close()\">[ <span>Close</span> ]</button>\r\n </div>\r\n </div>", styles: ["::ng-deep .workflow-snackbar{position:fixed;top:20px;left:0;right:0;display:flex;align-items:center;justify-content:center;z-index:2147483647!important;pointer-events:none;animation:slide-top .3s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .workflow-snackbar.white{background-color:#fff;color:#000;z-index:20}::ng-deep .workflow-snackbar.white button{color:#f6882f;font-size:11px;font-weight:400;pointer-events:all}::ng-deep .workflow-snackbar .workflow-snackbar-inner{display:flex;max-width:500px;min-width:450px;align-items:center;justify-content:space-between;padding:10px;background:#fff;border-radius:3px;box-shadow:0 0 10px #0003;min-height:55px;pointer-events:auto}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText{color:#161b2f;font-size:13px;display:flex;align-items:center;width:calc(100% - 70px)}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i{background:#f1f1f1;color:#d93b41;border-radius:50px;font-size:16px;width:30px;height:30px;text-align:center;line-height:28px;margin-right:10px;min-width:30px}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i.success{color:#34aa44}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i.warning{color:#f0b819}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i.info{color:#1e5dd3}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i.alert{color:#d93b41}::ng-deep .workflow-snackbar .workflow-snackbar-inner .workflow-snackbarText i.error{color:#d93b41}::ng-deep .workflow-snackbar .workflow-snackbar-inner button{background:transparent;border:none;font-size:11px;padding:0;position:relative;color:#747576;width:65px;text-align:right;cursor:pointer;text-transform:uppercase}::ng-deep .workflow-snackbar .workflow-snackbar-inner button span{color:#1e5dd3;font-weight:500}::ng-deep .workflow-snackbar .workflow-snackbar-inner button:focus{outline:none}@keyframes slide-top{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}\n"] }]
|
|
49
|
+
}], ctorParameters: function () { return [{ type: i1.SnackBarService }]; } });
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2stYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZjLWVycm9yLWhhbmRsZXJzL3NyYy9saWIvdWkta2l0L3NuYWNrLWJhci9zbmFjay1iYXIvc25hY2stYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZjLWVycm9yLWhhbmRsZXJzL3NyYy9saWIvdWkta2l0L3NuYWNrLWJhci9zbmFjay1iYXIvc25hY2stYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDOzs7O0FBUzdELE1BQU0sT0FBTyxpQkFBaUI7SUFhNUIsWUFBb0IsZUFBZ0M7UUFBaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBWnBELFNBQUksR0FBRyxLQUFLLENBQUM7UUFDYixZQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2YsU0FBSSxHQUFHLFVBQVUsQ0FBQztRQUNsQixTQUFJLEdBQUcsT0FBTyxDQUFDO1FBQ2YsVUFBSyxHQUFRO1lBQ1gsT0FBTyxFQUFFLFVBQVU7WUFDbkIsT0FBTyxFQUFFLFVBQVU7WUFDbkIsSUFBSSxFQUFFLFVBQVU7WUFDaEIsS0FBSyxFQUFFLFVBQVU7WUFDakIsS0FBSyxFQUFFLFVBQVU7U0FDbEIsQ0FBQztJQUVxRCxDQUFDO0lBRXhELFFBQVE7UUFDTixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUN0RSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQy9ELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxFQUFFLElBQUksQ0FBQzthQUN6QjtZQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUM3QixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDekIsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsWUFBWTtRQUNWLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztZQUNsQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDWCxDQUFDO0lBQ0QsS0FBSztRQUNILElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDMUMsQ0FBQzsrR0F4Q1UsaUJBQWlCO21HQUFqQixpQkFBaUIscURDVDlCLHdaQVFROzs0RkRDSyxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uL3NuYWNrLWJhci5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXNuYWNrLWJhcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NuYWNrLWJhci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc25hY2stYmFyLmNvbXBvbmVudC5sZXNzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbmFja0JhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBzaG93ID0gZmFsc2U7XHJcbiAgbWVzc2FnZSA9ICctLSc7XHJcbiAgaWNvbiA9ICcmI3hlOTE0Oyc7XHJcbiAgdHlwZSA9ICdhbGVydCc7XHJcbiAgaWNvbnM6IGFueSA9IHtcclxuICAgIHN1Y2Nlc3M6ICcmI3hlOTNkOycsXHJcbiAgICB3YXJuaW5nOiAnJiN4ZTkxNDsnLFxyXG4gICAgaW5mbzogJyYjeGU5MzI7JyxcclxuICAgIGFsZXJ0OiAnJiN4ZTkxNDsnLFxyXG4gICAgZXJyb3I6ICcmI3hlYWFlOycsXHJcbiAgfTtcclxuICBzbmFja2JhclN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNuYWNrYmFyU2VydmljZTogU25hY2tCYXJTZXJ2aWNlKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc25hY2tiYXJTdWJzY3JpcHRpb24gPSB0aGlzLnNuYWNrYmFyU2VydmljZS5zbmFja2JhclN0YXRlLnN1YnNjcmliZShcclxuICAgICAgKHN0YXRlKSA9PiB7XHJcbiAgICAgICAgaWYgKHN0YXRlLmljb24gJiYgT2JqZWN0LmtleXModGhpcy5pY29ucykuaW5jbHVkZXMoc3RhdGU/Lmljb24pKSB7XHJcbiAgICAgICAgICB0aGlzLmljb24gPSB0aGlzLmljb25zW3N0YXRlLmljb25dO1xyXG4gICAgICAgICAgdGhpcy50eXBlID0gc3RhdGU/Lmljb247XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubWVzc2FnZSA9IHN0YXRlLm1lc3NhZ2U7XHJcbiAgICAgICAgdGhpcy5zaG93ID0gc3RhdGUuc2hvdztcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHNldEF1dG9DbG9zZSgpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNob3cgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgfSwgMzAwMCk7XHJcbiAgfVxyXG4gIGNsb3NlKCkge1xyXG4gICAgdGhpcy5zaG93ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNuYWNrYmFyU2VydmljZS5oaWRlKCk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5zbmFja2JhclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwid29ya2Zsb3ctc25hY2tiYXJcIiAqbmdJZj1cInNob3dcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ3b3JrZmxvdy1zbmFja2Jhci1pbm5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid29ya2Zsb3ctc25hY2tiYXJUZXh0XCI+XHJcbiAgICAgICAgPCEtLSAmI3hlOTE0OyAtLT5cclxuICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgW2NsYXNzXT1cInR5cGVcIiBbaW5uZXJIVE1MXT1cImljb25cIj48L2k+IDxzcGFuIFtpbm5lckhUTUxdPVwibWVzc2FnZVwiPnt7IG1lc3NhZ2UgfX08L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8YnV0dG9uIChjbGljayk9XCJjbG9zZSgpXCI+WyA8c3Bhbj5DbG9zZTwvc3Bhbj4gXTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+Il19
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { SnackBarComponent } from './snack-bar/snack-bar.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class SnackBarModule {
|
|
6
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SnackBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
7
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: SnackBarModule, declarations: [SnackBarComponent], imports: [CommonModule], exports: [SnackBarComponent] }); }
|
|
8
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SnackBarModule, imports: [CommonModule] }); }
|
|
9
|
+
}
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SnackBarModule, decorators: [{
|
|
11
|
+
type: NgModule,
|
|
12
|
+
args: [{
|
|
13
|
+
declarations: [SnackBarComponent],
|
|
14
|
+
imports: [CommonModule],
|
|
15
|
+
exports: [SnackBarComponent],
|
|
16
|
+
}]
|
|
17
|
+
}] });
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2stYmFyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZjLWVycm9yLWhhbmRsZXJzL3NyYy9saWIvdWkta2l0L3NuYWNrLWJhci9zbmFjay1iYXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOztBQU9wRSxNQUFNLE9BQU8sY0FBYzsrR0FBZCxjQUFjO2dIQUFkLGNBQWMsaUJBSlYsaUJBQWlCLGFBQ3RCLFlBQVksYUFDWixpQkFBaUI7Z0hBRWhCLGNBQWMsWUFIZixZQUFZOzs0RkFHWCxjQUFjO2tCQUwxQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGlCQUFpQixDQUFDO29CQUNqQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixDQUFDO2lCQUM3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFNuYWNrQmFyQ29tcG9uZW50IH0gZnJvbSAnLi9zbmFjay1iYXIvc25hY2stYmFyLmNvbXBvbmVudCc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1NuYWNrQmFyQ29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcclxuICBleHBvcnRzOiBbU25hY2tCYXJDb21wb25lbnRdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU25hY2tCYXJNb2R1bGUge31cclxuIl19
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class SnackBarService {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.snackbarSubject = new Subject();
|
|
7
|
-
this.snackbarState = this.snackbarSubject.asObservable();
|
|
8
|
-
}
|
|
9
|
-
show(message, type) {
|
|
10
|
-
this.snackbarSubject.next({
|
|
11
|
-
show: true,
|
|
12
|
-
message,
|
|
13
|
-
icon: type,
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
hide() {
|
|
17
|
-
this.snackbarSubject.next({
|
|
18
|
-
show: false,
|
|
19
|
-
message: '',
|
|
20
|
-
icon: '',
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
27
|
-
type: Injectable,
|
|
28
|
-
args: [{
|
|
29
|
-
providedIn: 'root',
|
|
30
|
-
}]
|
|
31
|
-
}], ctorParameters: function () { return []; } });
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class SnackBarService {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.snackbarSubject = new Subject();
|
|
7
|
+
this.snackbarState = this.snackbarSubject.asObservable();
|
|
8
|
+
}
|
|
9
|
+
show(message, type) {
|
|
10
|
+
this.snackbarSubject.next({
|
|
11
|
+
show: true,
|
|
12
|
+
message,
|
|
13
|
+
icon: type,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
hide() {
|
|
17
|
+
this.snackbarSubject.next({
|
|
18
|
+
show: false,
|
|
19
|
+
message: '',
|
|
20
|
+
icon: '',
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SnackBarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
24
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SnackBarService, providedIn: 'root' }); }
|
|
25
|
+
}
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SnackBarService, decorators: [{
|
|
27
|
+
type: Injectable,
|
|
28
|
+
args: [{
|
|
29
|
+
providedIn: 'root',
|
|
30
|
+
}]
|
|
31
|
+
}], ctorParameters: function () { return []; } });
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2stYmFyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92Yy1lcnJvci1oYW5kbGVycy9zcmMvbGliL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUsvQixNQUFNLE9BQU8sZUFBZTtJQUcxQjtRQUZPLG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUN0QyxrQkFBYSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVoQixJQUFJLENBQUMsT0FBZSxFQUFFLElBQWdEO1FBQ3BFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO1lBQ3hCLElBQUksRUFBRSxJQUFJO1lBQ1YsT0FBTztZQUNQLElBQUksRUFBQyxJQUFJO1NBQ1YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQztZQUN4QixJQUFJLEVBQUUsS0FBSztZQUNYLE9BQU8sRUFBRSxFQUFFO1lBQ1gsSUFBSSxFQUFFLEVBQUU7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDOytHQW5CVSxlQUFlO21IQUFmLGVBQWUsY0FGZCxNQUFNOzs0RkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNuYWNrQmFyU2VydmljZSB7XHJcbiAgcHVibGljIHNuYWNrYmFyU3ViamVjdCA9IG5ldyBTdWJqZWN0IDxhbnk+KCk7XHJcbiAgcHVibGljIHNuYWNrYmFyU3RhdGUgPSB0aGlzLnNuYWNrYmFyU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIHNob3cobWVzc2FnZTogc3RyaW5nLCB0eXBlPzonc3VjY2Vzcyd8J3dhcm5pbmcnfCdpbmZvJ3wnYWxlcnQnfCdlcnJvcicpIHtcclxuICAgIHRoaXMuc25hY2tiYXJTdWJqZWN0Lm5leHQoe1xyXG4gICAgICBzaG93OiB0cnVlLFxyXG4gICAgICBtZXNzYWdlLFxyXG4gICAgICBpY29uOnR5cGUsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGhpZGUoKXtcclxuICAgIHRoaXMuc25hY2tiYXJTdWJqZWN0Lm5leHQoe1xyXG4gICAgICBzaG93OiBmYWxzZSxcclxuICAgICAgbWVzc2FnZTogJycsXHJcbiAgICAgIGljb246ICcnLFxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,79 +1,78 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import { ErrorStatusCode } from './shared/types/global-error.types';
|
|
3
|
-
import { ERROR_CONFIG } from './shared/constants/error-handling.constants';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "./shared/services/global-error.service";
|
|
6
|
-
import * as i2 from "./ui-kit/snack-bar/snack-bar.service";
|
|
7
|
-
import * as i3 from "
|
|
8
|
-
import * as i4 from "./
|
|
9
|
-
import * as i5 from "./shared/components/unauthorized/unauthorized.component";
|
|
10
|
-
import * as i6 from "./shared/components/
|
|
11
|
-
import * as i7 from "./shared/components/
|
|
12
|
-
import * as i8 from "
|
|
13
|
-
export class VcErrorHandlersComponent {
|
|
14
|
-
constructor(errorService, snackBarService) {
|
|
15
|
-
this.errorService = errorService;
|
|
16
|
-
this.snackBarService = snackBarService;
|
|
17
|
-
this.errorConfig = ERROR_CONFIG.NETWORK_UNAVAILABLE;
|
|
18
|
-
this.unauthorized = false;
|
|
19
|
-
this.sessionExpired = false;
|
|
20
|
-
this.chunkUnavailable = false;
|
|
21
|
-
this.serverError = false;
|
|
22
|
-
this.isOnline = navigator.onLine;
|
|
23
|
-
this.onNetworkOnline = () => {
|
|
24
|
-
this.isOnline = true;
|
|
25
|
-
this.hideSnackBar();
|
|
26
|
-
};
|
|
27
|
-
this.onNetworkOffline = () => {
|
|
28
|
-
this.isOnline = false;
|
|
29
|
-
this.showOfflineSnackBar();
|
|
30
|
-
};
|
|
31
|
-
this.subscribeGlobalError();
|
|
32
|
-
}
|
|
33
|
-
ngOnInit() {
|
|
34
|
-
this.subscribeNetworkDetection();
|
|
35
|
-
}
|
|
36
|
-
ngOnDestroy() {
|
|
37
|
-
window.removeEventListener('online', this.onNetworkOnline);
|
|
38
|
-
window.removeEventListener('offline', this.onNetworkOffline);
|
|
39
|
-
}
|
|
40
|
-
subscribeGlobalError() {
|
|
41
|
-
this.errorService.globalError$.subscribe((error) => {
|
|
42
|
-
this.handleError(error);
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
handleError(error) {
|
|
46
|
-
const errorHandlers = {
|
|
47
|
-
[ErrorStatusCode.Unauthenticated]: () => (this.sessionExpired = true),
|
|
48
|
-
[ErrorStatusCode.UnauthorizedAccess]: () => (this.unauthorized = true),
|
|
49
|
-
[ErrorStatusCode.JSChunkUnavailable]: () => (this.chunkUnavailable = true),
|
|
50
|
-
[ErrorStatusCode.NetworkUnavailable]: () => this.handleNetworkError(),
|
|
51
|
-
};
|
|
52
|
-
if (errorHandlers[error.status]) {
|
|
53
|
-
errorHandlers[error.status]();
|
|
54
|
-
}
|
|
55
|
-
else if (this.errorService.isServerError(error)) {
|
|
56
|
-
this.serverError = true;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
subscribeNetworkDetection() {
|
|
60
|
-
window.addEventListener('online', this.onNetworkOnline);
|
|
61
|
-
window.addEventListener('offline', this.onNetworkOffline);
|
|
62
|
-
}
|
|
63
|
-
handleNetworkError() {
|
|
64
|
-
if (!this.isOnline) {
|
|
65
|
-
this.showOfflineSnackBar();
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
showOfflineSnackBar() {
|
|
69
|
-
this.snackBarService.show(this.errorConfig.offlineMessage, 'error');
|
|
70
|
-
}
|
|
71
|
-
hideSnackBar() {
|
|
72
|
-
this.snackBarService.hide();
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
VcErrorHandlersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: VcErrorHandlersComponent, selector: "lib-vc-error-handlers", ngImport: i0, template: `
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { ErrorStatusCode } from './shared/types/global-error.types';
|
|
3
|
+
import { ERROR_CONFIG } from './shared/constants/error-handling.constants';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./shared/services/global-error.service";
|
|
6
|
+
import * as i2 from "./ui-kit/snack-bar/snack-bar.service";
|
|
7
|
+
import * as i3 from "@angular/common";
|
|
8
|
+
import * as i4 from "./ui-kit/snack-bar/snack-bar/snack-bar.component";
|
|
9
|
+
import * as i5 from "./shared/components/unauthorized/unauthorized.component";
|
|
10
|
+
import * as i6 from "./shared/components/session-expired/session-expired.component";
|
|
11
|
+
import * as i7 from "./shared/components/chunk-unavailable/chunk-unavailable.component";
|
|
12
|
+
import * as i8 from "./shared/components/server-error/server-error.component";
|
|
13
|
+
export class VcErrorHandlersComponent {
|
|
14
|
+
constructor(errorService, snackBarService) {
|
|
15
|
+
this.errorService = errorService;
|
|
16
|
+
this.snackBarService = snackBarService;
|
|
17
|
+
this.errorConfig = ERROR_CONFIG.NETWORK_UNAVAILABLE;
|
|
18
|
+
this.unauthorized = false;
|
|
19
|
+
this.sessionExpired = false;
|
|
20
|
+
this.chunkUnavailable = false;
|
|
21
|
+
this.serverError = false;
|
|
22
|
+
this.isOnline = navigator.onLine;
|
|
23
|
+
this.onNetworkOnline = () => {
|
|
24
|
+
this.isOnline = true;
|
|
25
|
+
this.hideSnackBar();
|
|
26
|
+
};
|
|
27
|
+
this.onNetworkOffline = () => {
|
|
28
|
+
this.isOnline = false;
|
|
29
|
+
this.showOfflineSnackBar();
|
|
30
|
+
};
|
|
31
|
+
this.subscribeGlobalError();
|
|
32
|
+
}
|
|
33
|
+
ngOnInit() {
|
|
34
|
+
this.subscribeNetworkDetection();
|
|
35
|
+
}
|
|
36
|
+
ngOnDestroy() {
|
|
37
|
+
window.removeEventListener('online', this.onNetworkOnline);
|
|
38
|
+
window.removeEventListener('offline', this.onNetworkOffline);
|
|
39
|
+
}
|
|
40
|
+
subscribeGlobalError() {
|
|
41
|
+
this.errorService.globalError$.subscribe((error) => {
|
|
42
|
+
this.handleError(error);
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
handleError(error) {
|
|
46
|
+
const errorHandlers = {
|
|
47
|
+
[ErrorStatusCode.Unauthenticated]: () => (this.sessionExpired = true),
|
|
48
|
+
[ErrorStatusCode.UnauthorizedAccess]: () => (this.unauthorized = true),
|
|
49
|
+
[ErrorStatusCode.JSChunkUnavailable]: () => (this.chunkUnavailable = true),
|
|
50
|
+
[ErrorStatusCode.NetworkUnavailable]: () => this.handleNetworkError(),
|
|
51
|
+
};
|
|
52
|
+
if (errorHandlers[error.status]) {
|
|
53
|
+
errorHandlers[error.status]();
|
|
54
|
+
}
|
|
55
|
+
else if (this.errorService.isServerError(error)) {
|
|
56
|
+
this.serverError = true;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
subscribeNetworkDetection() {
|
|
60
|
+
window.addEventListener('online', this.onNetworkOnline);
|
|
61
|
+
window.addEventListener('offline', this.onNetworkOffline);
|
|
62
|
+
}
|
|
63
|
+
handleNetworkError() {
|
|
64
|
+
if (!this.isOnline) {
|
|
65
|
+
this.showOfflineSnackBar();
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
showOfflineSnackBar() {
|
|
69
|
+
this.snackBarService.show(this.errorConfig.offlineMessage, 'error');
|
|
70
|
+
}
|
|
71
|
+
hideSnackBar() {
|
|
72
|
+
this.snackBarService.hide();
|
|
73
|
+
}
|
|
74
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: VcErrorHandlersComponent, deps: [{ token: i1.GlobalErrorService }, { token: i2.SnackBarService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
75
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: VcErrorHandlersComponent, selector: "lib-vc-error-handlers", ngImport: i0, template: `
|
|
77
76
|
<app-snack-bar></app-snack-bar>
|
|
78
77
|
<lib-vc-error-session-expired
|
|
79
78
|
*ngIf="sessionExpired"
|
|
@@ -83,11 +82,12 @@ VcErrorHandlersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0
|
|
|
83
82
|
*ngIf="chunkUnavailable"
|
|
84
83
|
></lib-vc-error-chunk-unavailable>
|
|
85
84
|
<lib-vc-error-server-error *ngIf="serverError"></lib-vc-error-server-error>
|
|
86
|
-
`, isInline: true,
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
85
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.SnackBarComponent, selector: "app-snack-bar" }, { kind: "component", type: i5.UnauthorizedComponent, selector: "lib-vc-error-unauthorized" }, { kind: "component", type: i6.SessionExpiredComponent, selector: "lib-vc-error-session-expired" }, { kind: "component", type: i7.ChunkUnavailableComponent, selector: "lib-vc-error-chunk-unavailable" }, { kind: "component", type: i8.ServerErrorComponent, selector: "lib-vc-error-server-error" }] }); }
|
|
86
|
+
}
|
|
87
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: VcErrorHandlersComponent, decorators: [{
|
|
88
|
+
type: Component,
|
|
89
|
+
args: [{
|
|
90
|
+
selector: 'lib-vc-error-handlers',
|
|
91
91
|
template: `
|
|
92
92
|
<app-snack-bar></app-snack-bar>
|
|
93
93
|
<lib-vc-error-session-expired
|
|
@@ -98,7 +98,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
|
|
|
98
98
|
*ngIf="chunkUnavailable"
|
|
99
99
|
></lib-vc-error-chunk-unavailable>
|
|
100
100
|
<lib-vc-error-server-error *ngIf="serverError"></lib-vc-error-server-error>
|
|
101
|
-
`,
|
|
102
|
-
}]
|
|
103
|
-
}], ctorParameters: function () { return [{ type: i1.GlobalErrorService }, { type: i2.SnackBarService }]; } });
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
101
|
+
`,
|
|
102
|
+
}]
|
|
103
|
+
}], ctorParameters: function () { return [{ type: i1.GlobalErrorService }, { type: i2.SnackBarService }]; } });
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmMtZXJyb3ItaGFuZGxlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdmMtZXJyb3ItaGFuZGxlcnMvc3JjL2xpYi92Yy1lcnJvci1oYW5kbGVycy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU0xQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7Ozs7Ozs7O0FBZ0IzRSxNQUFNLE9BQU8sd0JBQXdCO0lBU25DLFlBQ1UsWUFBZ0MsRUFDaEMsZUFBZ0M7UUFEaEMsaUJBQVksR0FBWixZQUFZLENBQW9CO1FBQ2hDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQVZsQyxnQkFBVyxHQUFHLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQztRQUV2RCxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUNoQyxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0IsYUFBUSxHQUFZLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUE0QzdCLG9CQUFlLEdBQUcsR0FBRyxFQUFFO1lBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQUM7UUFFTSxxQkFBZ0IsR0FBRyxHQUFHLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDdEIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDO1FBOUNBLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELFdBQVc7UUFDVCxNQUFNLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMzRCxNQUFNLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFO1lBQ3BFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sV0FBVyxDQUFDLEtBQXdCO1FBQzFDLE1BQU0sYUFBYSxHQUFrQztZQUNuRCxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQ3JFLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztZQUN0RSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUMxRSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtTQUN0RSxDQUFDO1FBRUYsSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQy9CLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztTQUMvQjthQUFNLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRU8seUJBQXlCO1FBQy9CLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDNUQsQ0FBQztJQVlPLGtCQUFrQjtRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztTQUM1QjtJQUNILENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDOytHQXpFVSx3QkFBd0I7bUdBQXhCLHdCQUF3Qiw2REFaekI7Ozs7Ozs7Ozs7R0FVVDs7NEZBRVUsd0JBQXdCO2tCQWRwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFFBQVEsRUFBRTs7Ozs7Ozs7OztHQVVUO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5cclxuaW1wb3J0IHsgR2xvYmFsRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQvc2VydmljZXMvZ2xvYmFsLWVycm9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTbmFja0JhclNlcnZpY2UgfSBmcm9tICcuL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgRXJyb3JTdGF0dXNDb2RlIH0gZnJvbSAnLi9zaGFyZWQvdHlwZXMvZ2xvYmFsLWVycm9yLnR5cGVzJztcclxuaW1wb3J0IHsgRVJST1JfQ09ORklHIH0gZnJvbSAnLi9zaGFyZWQvY29uc3RhbnRzL2Vycm9yLWhhbmRsaW5nLmNvbnN0YW50cyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi12Yy1lcnJvci1oYW5kbGVycycsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxhcHAtc25hY2stYmFyPjwvYXBwLXNuYWNrLWJhcj5cclxuICAgIDxsaWItdmMtZXJyb3Itc2Vzc2lvbi1leHBpcmVkXHJcbiAgICAgICpuZ0lmPVwic2Vzc2lvbkV4cGlyZWRcIlxyXG4gICAgPjwvbGliLXZjLWVycm9yLXNlc3Npb24tZXhwaXJlZD5cclxuICAgIDxsaWItdmMtZXJyb3ItdW5hdXRob3JpemVkICpuZ0lmPVwidW5hdXRob3JpemVkXCI+PC9saWItdmMtZXJyb3ItdW5hdXRob3JpemVkPlxyXG4gICAgPGxpYi12Yy1lcnJvci1jaHVuay11bmF2YWlsYWJsZVxyXG4gICAgICAqbmdJZj1cImNodW5rVW5hdmFpbGFibGVcIlxyXG4gICAgPjwvbGliLXZjLWVycm9yLWNodW5rLXVuYXZhaWxhYmxlPlxyXG4gICAgPGxpYi12Yy1lcnJvci1zZXJ2ZXItZXJyb3IgKm5nSWY9XCJzZXJ2ZXJFcnJvclwiPjwvbGliLXZjLWVycm9yLXNlcnZlci1lcnJvcj5cclxuICBgLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVmNFcnJvckhhbmRsZXJzQ29tcG9uZW50IHtcclxuICBwcml2YXRlIGVycm9yQ29uZmlnID0gRVJST1JfQ09ORklHLk5FVFdPUktfVU5BVkFJTEFCTEU7XHJcblxyXG4gIHVuYXV0aG9yaXplZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNlc3Npb25FeHBpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY2h1bmtVbmF2YWlsYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNlcnZlckVycm9yOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNPbmxpbmU6IGJvb2xlYW4gPSBuYXZpZ2F0b3Iub25MaW5lO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZXJyb3JTZXJ2aWNlOiBHbG9iYWxFcnJvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNuYWNrQmFyU2VydmljZTogU25hY2tCYXJTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLnN1YnNjcmliZUdsb2JhbEVycm9yKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc3Vic2NyaWJlTmV0d29ya0RldGVjdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignb25saW5lJywgdGhpcy5vbk5ldHdvcmtPbmxpbmUpO1xyXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ29mZmxpbmUnLCB0aGlzLm9uTmV0d29ya09mZmxpbmUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVHbG9iYWxFcnJvcigpIHtcclxuICAgIHRoaXMuZXJyb3JTZXJ2aWNlLmdsb2JhbEVycm9yJC5zdWJzY3JpYmUoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpIHtcclxuICAgIGNvbnN0IGVycm9ySGFuZGxlcnM6IHsgW2tleTogbnVtYmVyXTogKCkgPT4gdm9pZCB9ID0ge1xyXG4gICAgICBbRXJyb3JTdGF0dXNDb2RlLlVuYXV0aGVudGljYXRlZF06ICgpID0+ICh0aGlzLnNlc3Npb25FeHBpcmVkID0gdHJ1ZSksXHJcbiAgICAgIFtFcnJvclN0YXR1c0NvZGUuVW5hdXRob3JpemVkQWNjZXNzXTogKCkgPT4gKHRoaXMudW5hdXRob3JpemVkID0gdHJ1ZSksXHJcbiAgICAgIFtFcnJvclN0YXR1c0NvZGUuSlNDaHVua1VuYXZhaWxhYmxlXTogKCkgPT4gKHRoaXMuY2h1bmtVbmF2YWlsYWJsZSA9IHRydWUpLFxyXG4gICAgICBbRXJyb3JTdGF0dXNDb2RlLk5ldHdvcmtVbmF2YWlsYWJsZV06ICgpID0+IHRoaXMuaGFuZGxlTmV0d29ya0Vycm9yKCksXHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChlcnJvckhhbmRsZXJzW2Vycm9yLnN0YXR1c10pIHtcclxuICAgICAgZXJyb3JIYW5kbGVyc1tlcnJvci5zdGF0dXNdKCk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZXJyb3JTZXJ2aWNlLmlzU2VydmVyRXJyb3IoZXJyb3IpKSB7XHJcbiAgICAgIHRoaXMuc2VydmVyRXJyb3IgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVOZXR3b3JrRGV0ZWN0aW9uKCkge1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ29ubGluZScsIHRoaXMub25OZXR3b3JrT25saW5lKTtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvZmZsaW5lJywgdGhpcy5vbk5ldHdvcmtPZmZsaW5lKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25OZXR3b3JrT25saW5lID0gKCkgPT4ge1xyXG4gICAgdGhpcy5pc09ubGluZSA9IHRydWU7XHJcbiAgICB0aGlzLmhpZGVTbmFja0JhcigpO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgb25OZXR3b3JrT2ZmbGluZSA9ICgpID0+IHtcclxuICAgIHRoaXMuaXNPbmxpbmUgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd09mZmxpbmVTbmFja0JhcigpO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlTmV0d29ya0Vycm9yKCkge1xyXG4gICAgaWYgKCF0aGlzLmlzT25saW5lKSB7XHJcbiAgICAgIHRoaXMuc2hvd09mZmxpbmVTbmFja0JhcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzaG93T2ZmbGluZVNuYWNrQmFyKCkge1xyXG4gICAgdGhpcy5zbmFja0JhclNlcnZpY2Uuc2hvdyh0aGlzLmVycm9yQ29uZmlnLm9mZmxpbmVNZXNzYWdlLCAnZXJyb3InKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGlkZVNuYWNrQmFyKCkge1xyXG4gICAgdGhpcy5zbmFja0JhclNlcnZpY2UuaGlkZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { ErrorHandler, InjectionToken, NgModule, } from '@angular/core';
|
|
2
|
+
import { HTTP_INTERCEPTORS } from '@angular/common/http';
|
|
3
|
+
import { CommonModule, NgOptimizedImage } from '@angular/common';
|
|
4
|
+
import { PageNotFoundComponent } from './shared/components/page-not-found/page-not-found.component';
|
|
5
|
+
import { VcErrorHandlersComponent } from './vc-error-handlers.component';
|
|
6
|
+
import { DialogModule } from './ui-kit/dialog/dialog.module';
|
|
7
|
+
import { SnackBarModule } from './ui-kit/snack-bar/snack-bar.module';
|
|
8
|
+
import { FeatureFlagModule } from './featureFlag/feature-flag.module';
|
|
9
|
+
import { SentryErrorHandler } from './shared/errorhandler/sentry-error.handler';
|
|
10
|
+
import { Configurations } from './configuration';
|
|
11
|
+
import { UnauthorizedComponent } from './shared/components/unauthorized/unauthorized.component';
|
|
12
|
+
import { SessionExpiredComponent } from './shared/components/session-expired/session-expired.component';
|
|
13
|
+
import { ChunkUnavailableComponent } from './shared/components/chunk-unavailable/chunk-unavailable.component';
|
|
14
|
+
import { ServerErrorComponent } from './shared/components/server-error/server-error.component';
|
|
15
|
+
import { HttpReqInterceptor } from './shared/interceptors/http.interceptor';
|
|
16
|
+
import { ErrorModalComponent } from './shared/components/error-modal/error-modal.component';
|
|
17
|
+
import { ComponentLevelServerErrorComponent } from './shared/components/component-level-server-error/component-level-server-error.component';
|
|
18
|
+
import * as i0 from "@angular/core";
|
|
19
|
+
import * as i1 from "./featureFlag/feature-flag.service";
|
|
20
|
+
export const FOR_ROOT_SENTRY_OPTIONS_TOKEN = new InjectionToken('forRoot() SentryErrorHandler options');
|
|
21
|
+
export class VcErrorHandlersModule {
|
|
22
|
+
constructor(loadConfig) {
|
|
23
|
+
this.loadConfig = loadConfig;
|
|
24
|
+
this.loadConfig.loadConfig();
|
|
25
|
+
}
|
|
26
|
+
static forRoot(environmentConfig) {
|
|
27
|
+
return {
|
|
28
|
+
ngModule: VcErrorHandlersModule,
|
|
29
|
+
providers: [{ provide: Configurations, useValue: environmentConfig }],
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: VcErrorHandlersModule, deps: [{ token: i1.FeatureFlagService }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
33
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: VcErrorHandlersModule, bootstrap: [VcErrorHandlersComponent], declarations: [VcErrorHandlersComponent,
|
|
34
|
+
PageNotFoundComponent,
|
|
35
|
+
UnauthorizedComponent,
|
|
36
|
+
SessionExpiredComponent,
|
|
37
|
+
ChunkUnavailableComponent,
|
|
38
|
+
ServerErrorComponent,
|
|
39
|
+
ErrorModalComponent,
|
|
40
|
+
ComponentLevelServerErrorComponent], imports: [CommonModule, DialogModule, SnackBarModule, FeatureFlagModule, NgOptimizedImage], exports: [VcErrorHandlersComponent,
|
|
41
|
+
PageNotFoundComponent,
|
|
42
|
+
UnauthorizedComponent,
|
|
43
|
+
SessionExpiredComponent,
|
|
44
|
+
ChunkUnavailableComponent,
|
|
45
|
+
ServerErrorComponent,
|
|
46
|
+
ErrorModalComponent,
|
|
47
|
+
ComponentLevelServerErrorComponent] }); }
|
|
48
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: VcErrorHandlersModule, providers: [
|
|
49
|
+
{ provide: ErrorHandler, useClass: SentryErrorHandler },
|
|
50
|
+
{ provide: HTTP_INTERCEPTORS, useClass: HttpReqInterceptor, multi: true },
|
|
51
|
+
], imports: [CommonModule, DialogModule, SnackBarModule, FeatureFlagModule] }); }
|
|
52
|
+
}
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: VcErrorHandlersModule, decorators: [{
|
|
54
|
+
type: NgModule,
|
|
55
|
+
args: [{
|
|
56
|
+
declarations: [
|
|
57
|
+
VcErrorHandlersComponent,
|
|
58
|
+
PageNotFoundComponent,
|
|
59
|
+
UnauthorizedComponent,
|
|
60
|
+
SessionExpiredComponent,
|
|
61
|
+
ChunkUnavailableComponent,
|
|
62
|
+
ServerErrorComponent,
|
|
63
|
+
ErrorModalComponent,
|
|
64
|
+
ComponentLevelServerErrorComponent,
|
|
65
|
+
],
|
|
66
|
+
imports: [CommonModule, DialogModule, SnackBarModule, FeatureFlagModule, NgOptimizedImage],
|
|
67
|
+
exports: [
|
|
68
|
+
VcErrorHandlersComponent,
|
|
69
|
+
PageNotFoundComponent,
|
|
70
|
+
UnauthorizedComponent,
|
|
71
|
+
SessionExpiredComponent,
|
|
72
|
+
ChunkUnavailableComponent,
|
|
73
|
+
ServerErrorComponent,
|
|
74
|
+
ErrorModalComponent,
|
|
75
|
+
ComponentLevelServerErrorComponent,
|
|
76
|
+
],
|
|
77
|
+
providers: [
|
|
78
|
+
{ provide: ErrorHandler, useClass: SentryErrorHandler },
|
|
79
|
+
{ provide: HTTP_INTERCEPTORS, useClass: HttpReqInterceptor, multi: true },
|
|
80
|
+
],
|
|
81
|
+
bootstrap: [VcErrorHandlersComponent],
|
|
82
|
+
}]
|
|
83
|
+
}], ctorParameters: function () { return [{ type: i1.FeatureFlagService }]; } });
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmMtZXJyb3ItaGFuZGxlcnMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdmMtZXJyb3ItaGFuZGxlcnMvc3JjL2xpYi92Yy1lcnJvci1oYW5kbGVycy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFlBQVksRUFDWixjQUFjLEVBRWQsUUFBUSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUV6RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBTXRFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNoRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUN4RyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUUvRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx5RkFBeUYsQ0FBQzs7O0FBRTdJLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLElBQUksY0FBYyxDQUM3RCxzQ0FBc0MsQ0FDdkMsQ0FBQztBQThCRixNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLFlBQW9CLFVBQThCO1FBQTlCLGVBQVUsR0FBVixVQUFVLENBQW9CO1FBQ2hELElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxPQUFPLENBQ25CLGlCQUFpQztRQUVqQyxPQUFPO1lBQ0wsUUFBUSxFQUFFLHFCQUFxQjtZQUMvQixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLENBQUM7U0FDdEUsQ0FBQztJQUNKLENBQUM7K0dBWlUscUJBQXFCO2dIQUFyQixxQkFBcUIsY0FGcEIsd0JBQXdCLGtCQXhCbEMsd0JBQXdCO1lBQ3hCLHFCQUFxQjtZQUNyQixxQkFBcUI7WUFDckIsdUJBQXVCO1lBQ3ZCLHlCQUF5QjtZQUN6QixvQkFBb0I7WUFDcEIsbUJBQW1CO1lBQ25CLGtDQUFrQyxhQUUxQixZQUFZLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsYUFFdkYsd0JBQXdCO1lBQ3hCLHFCQUFxQjtZQUNyQixxQkFBcUI7WUFDckIsdUJBQXVCO1lBQ3ZCLHlCQUF5QjtZQUN6QixvQkFBb0I7WUFDcEIsbUJBQW1CO1lBQ25CLGtDQUFrQztnSEFRekIscUJBQXFCLGFBTnJCO1lBQ1QsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRTtZQUN2RCxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtTQUMxRSxZQWRTLFlBQVksRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGlCQUFpQjs7NEZBaUI1RCxxQkFBcUI7a0JBNUJqQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWix3QkFBd0I7d0JBQ3hCLHFCQUFxQjt3QkFDckIscUJBQXFCO3dCQUNyQix1QkFBdUI7d0JBQ3ZCLHlCQUF5Qjt3QkFDekIsb0JBQW9CO3dCQUNwQixtQkFBbUI7d0JBQ25CLGtDQUFrQztxQkFDbkM7b0JBQ0QsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLENBQUM7b0JBQzFGLE9BQU8sRUFBRTt3QkFDUCx3QkFBd0I7d0JBQ3hCLHFCQUFxQjt3QkFDckIscUJBQXFCO3dCQUNyQix1QkFBdUI7d0JBQ3ZCLHlCQUF5Qjt3QkFDekIsb0JBQW9CO3dCQUNwQixtQkFBbUI7d0JBQ25CLGtDQUFrQztxQkFDbkM7b0JBQ0QsU0FBUyxFQUFFO3dCQUNULEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUU7d0JBQ3ZELEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO3FCQUMxRTtvQkFDRCxTQUFTLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztpQkFDdEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEVycm9ySGFuZGxlcixcclxuICBJbmplY3Rpb25Ub2tlbixcclxuICBNb2R1bGVXaXRoUHJvdmlkZXJzLFxyXG4gIE5nTW9kdWxlLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIVFRQX0lOVEVSQ0VQVE9SUyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBOZ09wdGltaXplZEltYWdlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbmltcG9ydCB7IFBhZ2VOb3RGb3VuZENvbXBvbmVudCB9IGZyb20gJy4vc2hhcmVkL2NvbXBvbmVudHMvcGFnZS1ub3QtZm91bmQvcGFnZS1ub3QtZm91bmQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVmNFcnJvckhhbmRsZXJzQ29tcG9uZW50IH0gZnJvbSAnLi92Yy1lcnJvci1oYW5kbGVycy5jb21wb25lbnQnO1xyXG5cclxuaW1wb3J0IHsgRGlhbG9nTW9kdWxlIH0gZnJvbSAnLi91aS1raXQvZGlhbG9nL2RpYWxvZy5tb2R1bGUnO1xyXG5pbXBvcnQgeyBTbmFja0Jhck1vZHVsZSB9IGZyb20gJy4vdWkta2l0L3NuYWNrLWJhci9zbmFjay1iYXIubW9kdWxlJztcclxuaW1wb3J0IHsgRmVhdHVyZUZsYWdNb2R1bGUgfSBmcm9tICcuL2ZlYXR1cmVGbGFnL2ZlYXR1cmUtZmxhZy5tb2R1bGUnO1xyXG5cclxuaW1wb3J0IHsgRmVhdHVyZUZsYWdTZXJ2aWNlIH0gZnJvbSAnLi9mZWF0dXJlRmxhZy9mZWF0dXJlLWZsYWcuc2VydmljZSc7XHJcblxyXG5pbXBvcnQgeyBCcm93c2VyT3B0aW9ucyB9IGZyb20gJ0BzZW50cnkvYnJvd3Nlcic7XHJcbmltcG9ydCB7IEdsb2JhbEVycm9ySGFuZGxlciB9IGZyb20gJy4vc2hhcmVkL2Vycm9yaGFuZGxlci9jaHVuay1lcnJvci5oYW5kbGVyJztcclxuaW1wb3J0IHsgU2VudHJ5RXJyb3JIYW5kbGVyIH0gZnJvbSAnLi9zaGFyZWQvZXJyb3JoYW5kbGVyL3NlbnRyeS1lcnJvci5oYW5kbGVyJztcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnMgfSBmcm9tICcuL2NvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBVbmF1dGhvcml6ZWRDb21wb25lbnQgfSBmcm9tICcuL3NoYXJlZC9jb21wb25lbnRzL3VuYXV0aG9yaXplZC91bmF1dGhvcml6ZWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2Vzc2lvbkV4cGlyZWRDb21wb25lbnQgfSBmcm9tICcuL3NoYXJlZC9jb21wb25lbnRzL3Nlc3Npb24tZXhwaXJlZC9zZXNzaW9uLWV4cGlyZWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2h1bmtVbmF2YWlsYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vc2hhcmVkL2NvbXBvbmVudHMvY2h1bmstdW5hdmFpbGFibGUvY2h1bmstdW5hdmFpbGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2VydmVyRXJyb3JDb21wb25lbnQgfSBmcm9tICcuL3NoYXJlZC9jb21wb25lbnRzL3NlcnZlci1lcnJvci9zZXJ2ZXItZXJyb3IuY29tcG9uZW50JztcclxuXHJcbmltcG9ydCB7IEh0dHBSZXFJbnRlcmNlcHRvciB9IGZyb20gJy4vc2hhcmVkL2ludGVyY2VwdG9ycy9odHRwLmludGVyY2VwdG9yJztcclxuaW1wb3J0IHsgRXJyb3JNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vc2hhcmVkL2NvbXBvbmVudHMvZXJyb3ItbW9kYWwvZXJyb3ItbW9kYWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tcG9uZW50TGV2ZWxTZXJ2ZXJFcnJvckNvbXBvbmVudCB9IGZyb20gJy4vc2hhcmVkL2NvbXBvbmVudHMvY29tcG9uZW50LWxldmVsLXNlcnZlci1lcnJvci9jb21wb25lbnQtbGV2ZWwtc2VydmVyLWVycm9yLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgY29uc3QgRk9SX1JPT1RfU0VOVFJZX09QVElPTlNfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48QnJvd3Nlck9wdGlvbnM+KFxyXG4gICdmb3JSb290KCkgU2VudHJ5RXJyb3JIYW5kbGVyIG9wdGlvbnMnXHJcbik7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgVmNFcnJvckhhbmRsZXJzQ29tcG9uZW50LFxyXG4gICAgUGFnZU5vdEZvdW5kQ29tcG9uZW50LFxyXG4gICAgVW5hdXRob3JpemVkQ29tcG9uZW50LFxyXG4gICAgU2Vzc2lvbkV4cGlyZWRDb21wb25lbnQsXHJcbiAgICBDaHVua1VuYXZhaWxhYmxlQ29tcG9uZW50LFxyXG4gICAgU2VydmVyRXJyb3JDb21wb25lbnQsXHJcbiAgICBFcnJvck1vZGFsQ29tcG9uZW50LFxyXG4gICAgQ29tcG9uZW50TGV2ZWxTZXJ2ZXJFcnJvckNvbXBvbmVudCxcclxuICBdLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIERpYWxvZ01vZHVsZSwgU25hY2tCYXJNb2R1bGUsIEZlYXR1cmVGbGFnTW9kdWxlLCBOZ09wdGltaXplZEltYWdlXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBWY0Vycm9ySGFuZGxlcnNDb21wb25lbnQsXHJcbiAgICBQYWdlTm90Rm91bmRDb21wb25lbnQsXHJcbiAgICBVbmF1dGhvcml6ZWRDb21wb25lbnQsXHJcbiAgICBTZXNzaW9uRXhwaXJlZENvbXBvbmVudCxcclxuICAgIENodW5rVW5hdmFpbGFibGVDb21wb25lbnQsXHJcbiAgICBTZXJ2ZXJFcnJvckNvbXBvbmVudCxcclxuICAgIEVycm9yTW9kYWxDb21wb25lbnQsXHJcbiAgICBDb21wb25lbnRMZXZlbFNlcnZlckVycm9yQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7IHByb3ZpZGU6IEVycm9ySGFuZGxlciwgdXNlQ2xhc3M6IFNlbnRyeUVycm9ySGFuZGxlciB9LFxyXG4gICAgeyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IEh0dHBSZXFJbnRlcmNlcHRvciwgbXVsdGk6IHRydWUgfSxcclxuICBdLFxyXG4gIGJvb3RzdHJhcDogW1ZjRXJyb3JIYW5kbGVyc0NvbXBvbmVudF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWY0Vycm9ySGFuZGxlcnNNb2R1bGUge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbG9hZENvbmZpZzogRmVhdHVyZUZsYWdTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmxvYWRDb25maWcubG9hZENvbmZpZygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBmb3JSb290KFxyXG4gICAgZW52aXJvbm1lbnRDb25maWc6IENvbmZpZ3VyYXRpb25zXHJcbiAgKTogTW9kdWxlV2l0aFByb3ZpZGVyczxWY0Vycm9ySGFuZGxlcnNNb2R1bGU+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBWY0Vycm9ySGFuZGxlcnNNb2R1bGUsXHJcbiAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogQ29uZmlndXJhdGlvbnMsIHVzZVZhbHVlOiBlbnZpcm9ubWVudENvbmZpZyB9XSxcclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiJdfQ==
|