@onecx/angular-accelerator 4.13.2 → 4.14.1
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/esm2020/index.mjs +4 -1
- package/esm2020/lib/angular-accelerator-primeng.module.mjs +19 -5
- package/esm2020/lib/angular-accelerator.module.mjs +13 -5
- package/esm2020/lib/components/data-list-grid/data-list-grid.component.mjs +1 -1
- package/esm2020/lib/components/data-table/data-table.component.mjs +3 -3
- package/esm2020/lib/components/data-view/data-view.component.mjs +6 -3
- package/esm2020/lib/components/diagram/diagram.component.mjs +4 -3
- package/esm2020/lib/components/interactive-data-view/interactive-data-view.component.mjs +6 -3
- package/esm2020/lib/components/page-header/page-header.component.mjs +4 -3
- package/esm2020/lib/directives/advanced.directive.mjs +36 -0
- package/esm2020/lib/directives/if-permission.directive.mjs +16 -3
- package/esm2020/lib/directives/src.directive.mjs +24 -13
- package/esm2020/lib/services/app-config-service.mjs +43 -0
- package/esm2020/lib/utils/create-remote-component-translate-loader.utils.mjs +23 -0
- package/fesm2015/onecx-angular-accelerator.mjs +2254 -2111
- package/fesm2015/onecx-angular-accelerator.mjs.map +1 -1
- package/fesm2020/onecx-angular-accelerator.mjs +2059 -1921
- package/fesm2020/onecx-angular-accelerator.mjs.map +1 -1
- package/index.d.ts +3 -0
- package/lib/angular-accelerator-primeng.module.d.ts +3 -1
- package/lib/angular-accelerator.module.d.ts +7 -6
- package/lib/components/data-view/data-view.component.d.ts +2 -1
- package/lib/components/interactive-data-view/interactive-data-view.component.d.ts +2 -1
- package/lib/directives/advanced.directive.d.ts +12 -0
- package/lib/directives/if-permission.directive.d.ts +4 -1
- package/lib/services/app-config-service.d.ts +18 -0
- package/lib/utils/create-remote-component-translate-loader.utils.d.ts +5 -0
- package/package.json +1 -1
|
@@ -7,6 +7,9 @@ export class IfPermissionDirective {
|
|
|
7
7
|
this.permission = value;
|
|
8
8
|
this.negate = true;
|
|
9
9
|
}
|
|
10
|
+
set ocxIfNotPermissionPermissions(value) {
|
|
11
|
+
this.ocxIfPermissionPermissions = value;
|
|
12
|
+
}
|
|
10
13
|
constructor(renderer, el, viewContainer, userService, templateRef) {
|
|
11
14
|
this.renderer = renderer;
|
|
12
15
|
this.el = el;
|
|
@@ -18,7 +21,7 @@ export class IfPermissionDirective {
|
|
|
18
21
|
}
|
|
19
22
|
ngOnInit() {
|
|
20
23
|
if (this.permission) {
|
|
21
|
-
if (this.negate === this.
|
|
24
|
+
if (this.negate === this.hasPermission(this.permission)) {
|
|
22
25
|
if (this.onMissingPermission === 'disable') {
|
|
23
26
|
this.renderer.setAttribute(this.el.nativeElement, 'disabled', 'disabled');
|
|
24
27
|
}
|
|
@@ -33,9 +36,15 @@ export class IfPermissionDirective {
|
|
|
33
36
|
}
|
|
34
37
|
}
|
|
35
38
|
}
|
|
39
|
+
hasPermission(permission) {
|
|
40
|
+
if (this.ocxIfPermissionPermissions) {
|
|
41
|
+
return this.ocxIfPermissionPermissions.includes(permission);
|
|
42
|
+
}
|
|
43
|
+
return this.userService.hasPermission(permission);
|
|
44
|
+
}
|
|
36
45
|
}
|
|
37
46
|
IfPermissionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IfPermissionDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i1.UserService }, { token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
38
|
-
IfPermissionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: IfPermissionDirective, selector: "[ocxIfPermission], [ocxIfNotPermission]", inputs: { permission: ["ocxIfPermission", "permission"], notPermission: ["ocxIfNotPermission", "notPermission"], onMissingPermission: "onMissingPermission" }, ngImport: i0 });
|
|
47
|
+
IfPermissionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: IfPermissionDirective, selector: "[ocxIfPermission], [ocxIfNotPermission]", inputs: { permission: ["ocxIfPermission", "permission"], notPermission: ["ocxIfNotPermission", "notPermission"], onMissingPermission: "onMissingPermission", ocxIfPermissionPermissions: "ocxIfPermissionPermissions", ocxIfNotPermissionPermissions: "ocxIfNotPermissionPermissions" }, ngImport: i0 });
|
|
39
48
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IfPermissionDirective, decorators: [{
|
|
40
49
|
type: Directive,
|
|
41
50
|
args: [{ selector: '[ocxIfPermission], [ocxIfNotPermission]' }]
|
|
@@ -49,5 +58,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
49
58
|
args: ['ocxIfNotPermission']
|
|
50
59
|
}], onMissingPermission: [{
|
|
51
60
|
type: Input
|
|
61
|
+
}], ocxIfPermissionPermissions: [{
|
|
62
|
+
type: Input
|
|
63
|
+
}], ocxIfNotPermissionPermissions: [{
|
|
64
|
+
type: Input
|
|
52
65
|
}] } });
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWYtcGVybWlzc2lvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9kaXJlY3RpdmVzL2lmLXBlcm1pc3Npb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxRQUFRLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4SCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0NBQXNDLENBQUE7OztBQUdsRSxNQUFNLE9BQU8scUJBQXFCO0lBRWhDLElBQWlDLGFBQWEsQ0FBQyxLQUF5QjtRQUN0RSxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQTtRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQTtJQUNwQixDQUFDO0lBS0QsSUFDSSw2QkFBNkIsQ0FBQyxLQUEyQjtRQUMzRCxJQUFJLENBQUMsMEJBQTBCLEdBQUcsS0FBSyxDQUFBO0lBQ3pDLENBQUM7SUFJRCxZQUNVLFFBQW1CLEVBQ25CLEVBQWMsRUFDZCxhQUErQixFQUMvQixXQUF3QixFQUNaLFdBQThCO1FBSjFDLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUNkLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUMvQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNaLGdCQUFXLEdBQVgsV0FBVyxDQUFtQjtRQWYzQyx3QkFBbUIsR0FBdUIsTUFBTSxDQUFBO1FBUXpELFdBQU0sR0FBRyxLQUFLLENBQUE7SUFRWCxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQ3ZELElBQUksSUFBSSxDQUFDLG1CQUFtQixLQUFLLFNBQVMsRUFBRTtvQkFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFBO2lCQUMxRTtxQkFBTTtvQkFDTCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFBO2lCQUMzQjthQUNGO2lCQUFNO2dCQUNMLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtvQkFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7aUJBQ3hEO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsVUFBa0I7UUFDOUIsSUFBSSxJQUFJLENBQUMsMEJBQTBCLEVBQUU7WUFDbkMsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1NBQzVEO1FBQ0QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUNuRCxDQUFDOzttSEE5Q1UscUJBQXFCO3VHQUFyQixxQkFBcUI7NEZBQXJCLHFCQUFxQjtrQkFEakMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSx5Q0FBeUMsRUFBRTs7MEJBdUI3RCxRQUFROzRDQXJCZSxVQUFVO3NCQUFuQyxLQUFLO3VCQUFDLGlCQUFpQjtnQkFDUyxhQUFhO3NCQUE3QyxLQUFLO3VCQUFDLG9CQUFvQjtnQkFLbEIsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUVHLDBCQUEwQjtzQkFBbEMsS0FBSztnQkFFRiw2QkFBNkI7c0JBRGhDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsLCBSZW5kZXJlcjIsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnQG9uZWN4L2FuZ3VsYXItaW50ZWdyYXRpb24taW50ZXJmYWNlJ1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbb2N4SWZQZXJtaXNzaW9uXSwgW29jeElmTm90UGVybWlzc2lvbl0nIH0pXG5leHBvcnQgY2xhc3MgSWZQZXJtaXNzaW9uRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCdvY3hJZlBlcm1pc3Npb24nKSBwZXJtaXNzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCdvY3hJZk5vdFBlcm1pc3Npb24nKSBzZXQgbm90UGVybWlzc2lvbih2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5wZXJtaXNzaW9uID0gdmFsdWVcbiAgICB0aGlzLm5lZ2F0ZSA9IHRydWVcbiAgfVxuICBcbiAgQElucHV0KCkgb25NaXNzaW5nUGVybWlzc2lvbjogJ2hpZGUnIHwgJ2Rpc2FibGUnID0gJ2hpZGUnXG4gIFxuICBASW5wdXQoKSBvY3hJZlBlcm1pc3Npb25QZXJtaXNzaW9uczogc3RyaW5nW10gfCB1bmRlZmluZWRcbiAgQElucHV0KCkgXG4gIHNldCBvY3hJZk5vdFBlcm1pc3Npb25QZXJtaXNzaW9ucyh2YWx1ZTogc3RyaW5nW10gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLm9jeElmUGVybWlzc2lvblBlcm1pc3Npb25zID0gdmFsdWVcbiAgfVxuICBcbiAgbmVnYXRlID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSB0ZW1wbGF0ZVJlZj86IFRlbXBsYXRlUmVmPGFueT5cbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLnBlcm1pc3Npb24pIHtcbiAgICAgIGlmICh0aGlzLm5lZ2F0ZSA9PT0gdGhpcy5oYXNQZXJtaXNzaW9uKHRoaXMucGVybWlzc2lvbikpIHtcbiAgICAgICAgaWYgKHRoaXMub25NaXNzaW5nUGVybWlzc2lvbiA9PT0gJ2Rpc2FibGUnKSB7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jbGVhcigpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLnRlbXBsYXRlUmVmKSB7XG4gICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFzUGVybWlzc2lvbihwZXJtaXNzaW9uOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5vY3hJZlBlcm1pc3Npb25QZXJtaXNzaW9ucykge1xuICAgICAgcmV0dXJuIHRoaXMub2N4SWZQZXJtaXNzaW9uUGVybWlzc2lvbnMuaW5jbHVkZXMocGVybWlzc2lvbilcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudXNlclNlcnZpY2UuaGFzUGVybWlzc2lvbihwZXJtaXNzaW9uKVxuICB9XG59XG4iXX0=
|
|
@@ -8,18 +8,29 @@ export class SrcDirective {
|
|
|
8
8
|
}
|
|
9
9
|
set ocxSrc(value) {
|
|
10
10
|
if (value && this._src !== value) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
11
|
+
try {
|
|
12
|
+
if (new URL(value, window.location.origin).origin === window.location.origin) {
|
|
13
|
+
this.httpClient.get(value, { responseType: 'blob' }).subscribe({
|
|
14
|
+
next: (blob) => {
|
|
15
|
+
const url = URL.createObjectURL(blob);
|
|
16
|
+
this.el.nativeElement.onload = () => {
|
|
17
|
+
URL.revokeObjectURL(url);
|
|
18
|
+
};
|
|
19
|
+
this.el.nativeElement.src = url;
|
|
20
|
+
},
|
|
21
|
+
error: () => {
|
|
22
|
+
this.el.nativeElement.src = 'error';
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
this.el.nativeElement.src = value;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
console.log('Cannot parse URL ', value, error);
|
|
32
|
+
this.el.nativeElement.src = value;
|
|
33
|
+
}
|
|
23
34
|
this._src = value;
|
|
24
35
|
}
|
|
25
36
|
}
|
|
@@ -36,4 +47,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
36
47
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.HttpClient }]; }, propDecorators: { ocxSrc: [{
|
|
37
48
|
type: Input
|
|
38
49
|
}] } });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NlbGVyYXRvci9zcmMvbGliL2RpcmVjdGl2ZXMvc3JjLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFBOzs7QUFHNUQsTUFBTSxPQUFPLFlBQVk7SUFHdkIsSUFDSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFBO0lBQ2xCLENBQUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyxLQUF5QjtRQUNsQyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRTtZQUNoQyxJQUFJO2dCQUNGLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO29CQUM1RSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUM7d0JBQzdELElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFOzRCQUNiLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUE7NEJBQ3JDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7Z0NBQ2xDLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUE7NEJBQzFCLENBQUMsQ0FBQTs0QkFDRCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFBO3dCQUNqQyxDQUFDO3dCQUNELEtBQUssRUFBRSxHQUFHLEVBQUU7NEJBQ1YsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQTt3QkFDckMsQ0FBQztxQkFDRixDQUFDLENBQUE7aUJBQ0g7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQTtpQkFDbEM7YUFDRjtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFBO2dCQUM5QyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFBO2FBQ2xDO1lBQ0QsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUE7U0FDbEI7SUFDSCxDQUFDO0lBRUQsWUFBb0IsRUFBYyxFQUFVLFVBQXNCO1FBQTlDLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQUcsQ0FBQzs7MEdBbEMzRCxZQUFZOzhGQUFaLFlBQVk7NEZBQVosWUFBWTtrQkFEeEIsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUU7MEhBSzdCLE1BQU07c0JBRFQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCdcbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbb2N4U3JjXScgfSlcbmV4cG9ydCBjbGFzcyBTcmNEaXJlY3RpdmUge1xuICBwcml2YXRlIF9zcmM6IHN0cmluZyB8IHVuZGVmaW5lZFxuXG4gIEBJbnB1dCgpXG4gIGdldCBvY3hTcmMoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fc3JjXG4gIH1cbiAgc2V0IG9jeFNyYyh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHZhbHVlICYmIHRoaXMuX3NyYyAhPT0gdmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChuZXcgVVJMKHZhbHVlLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKS5vcmlnaW4gPT09IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pIHtcbiAgICAgICAgICB0aGlzLmh0dHBDbGllbnQuZ2V0KHZhbHVlLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiAoYmxvYikgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpXG4gICAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnNyYyA9IHVybFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zcmMgPSAnZXJyb3InXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnNyYyA9IHZhbHVlXG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdDYW5ub3QgcGFyc2UgVVJMICcsIHZhbHVlLCBlcnJvcilcbiAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnNyYyA9IHZhbHVlXG4gICAgICB9XG4gICAgICB0aGlzLl9zcmMgPSB2YWx1ZVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCkge31cbn1cbiJdfQ==
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Location } from '@angular/common';
|
|
2
|
+
import { HttpClient } from '@angular/common/http';
|
|
3
|
+
import { Injectable } from '@angular/core';
|
|
4
|
+
import { BehaviorSubject, firstValueFrom } from 'rxjs';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common/http";
|
|
7
|
+
export class AppConfigService {
|
|
8
|
+
constructor(http) {
|
|
9
|
+
this.http = http;
|
|
10
|
+
this.config$ = new BehaviorSubject({});
|
|
11
|
+
}
|
|
12
|
+
init(baseUrl) {
|
|
13
|
+
return new Promise((resolve, reject) => {
|
|
14
|
+
const loadConfigPromise = firstValueFrom(this.http.get(Location.joinWithSlash(baseUrl, 'assets/env.json')));
|
|
15
|
+
loadConfigPromise
|
|
16
|
+
.then(async (config) => {
|
|
17
|
+
if (config) {
|
|
18
|
+
this.config$.next(config);
|
|
19
|
+
resolve();
|
|
20
|
+
}
|
|
21
|
+
})
|
|
22
|
+
.catch((e) => {
|
|
23
|
+
console.log(`Failed to load env configuration`);
|
|
24
|
+
reject(e);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
getProperty(key) {
|
|
29
|
+
return this.config$.getValue()?.[key];
|
|
30
|
+
}
|
|
31
|
+
setProperty(key, val) {
|
|
32
|
+
this.config$.next({ ...this.config$.value, [key]: val });
|
|
33
|
+
}
|
|
34
|
+
getConfig() {
|
|
35
|
+
return this.config$.getValue();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
AppConfigService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AppConfigService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
39
|
+
AppConfigService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AppConfigService });
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AppConfigService, decorators: [{
|
|
41
|
+
type: Injectable
|
|
42
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWNvbmZpZy1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY2VsZXJhdG9yL3NyYy9saWIvc2VydmljZXMvYXBwLWNvbmZpZy1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUUxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQTs7O0FBR3RELE1BQU0sT0FBTyxnQkFBZ0I7SUFHM0IsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUZwQyxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQTRCLEVBQUUsQ0FBQyxDQUFBO0lBRXJCLENBQUM7SUFFakMsSUFBSSxDQUFDLE9BQWU7UUFDekIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxNQUFNLGlCQUFpQixHQUFvQixjQUFjLENBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFTLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FDMUUsQ0FBQTtZQUVELGlCQUFpQjtpQkFDZCxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUNyQixJQUFJLE1BQU0sRUFBRTtvQkFDVixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtvQkFDekIsT0FBTyxFQUFFLENBQUE7aUJBQ1Y7WUFDSCxDQUFDLENBQUM7aUJBQ0QsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFBO2dCQUMvQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDWCxDQUFDLENBQUMsQ0FBQTtRQUNOLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVNLFdBQVcsQ0FBQyxHQUFXO1FBQzVCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7SUFFTSxXQUFXLENBQUMsR0FBVyxFQUFFLEdBQVc7UUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQTtJQUMxRCxDQUFDO0lBRU0sU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUNoQyxDQUFDOzs4R0FuQ1UsZ0JBQWdCO2tIQUFoQixnQkFBZ0I7NEZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJ1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb25maWcgfSBmcm9tICdAb25lY3gvaW50ZWdyYXRpb24taW50ZXJmYWNlJ1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBcHBDb25maWdTZXJ2aWNlIHtcbiAgY29uZmlnJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfT4oe30pXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7fVxuXG4gIHB1YmxpYyBpbml0KGJhc2VVcmw6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBsb2FkQ29uZmlnUHJvbWlzZTogUHJvbWlzZTxDb25maWc+ID0gZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgIHRoaXMuaHR0cC5nZXQ8Q29uZmlnPihMb2NhdGlvbi5qb2luV2l0aFNsYXNoKGJhc2VVcmwsICdhc3NldHMvZW52Lmpzb24nKSlcbiAgICAgIClcblxuICAgICAgbG9hZENvbmZpZ1Byb21pc2VcbiAgICAgICAgLnRoZW4oYXN5bmMgKGNvbmZpZykgPT4ge1xuICAgICAgICAgIGlmIChjb25maWcpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlnJC5uZXh0KGNvbmZpZylcbiAgICAgICAgICAgIHJlc29sdmUoKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2coYEZhaWxlZCB0byBsb2FkIGVudiBjb25maWd1cmF0aW9uYClcbiAgICAgICAgICByZWplY3QoZSlcbiAgICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgcHVibGljIGdldFByb3BlcnR5KGtleTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWckLmdldFZhbHVlKCk/LltrZXldXG4gIH1cblxuICBwdWJsaWMgc2V0UHJvcGVydHkoa2V5OiBzdHJpbmcsIHZhbDogc3RyaW5nKSB7XG4gICAgdGhpcy5jb25maWckLm5leHQoeyAuLi50aGlzLmNvbmZpZyQudmFsdWUsIFtrZXldOiB2YWwgfSlcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb25maWcoKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnJC5nZXRWYWx1ZSgpXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Location } from '@angular/common';
|
|
2
|
+
import { inject } from '@angular/core';
|
|
3
|
+
import { map, tap } from 'rxjs';
|
|
4
|
+
import { TranslationCacheService } from '../services/translation-cache.service';
|
|
5
|
+
import { AsyncTranslateLoader } from './async-translate-loader.utils';
|
|
6
|
+
import { CachingTranslateLoader } from './caching-translate-loader.utils';
|
|
7
|
+
import { TranslateCombinedLoader } from './translate.combined.loader';
|
|
8
|
+
let lastTranslateLoaderTimerId = 0;
|
|
9
|
+
export function createRemoteComponentTranslateLoader(http, baseUrlReplaySubject$, translationCacheService) {
|
|
10
|
+
const ts = translationCacheService ?? inject(TranslationCacheService);
|
|
11
|
+
const timerId = lastTranslateLoaderTimerId++;
|
|
12
|
+
console.time('createRemoteComponentTranslateLoader_' + timerId);
|
|
13
|
+
return new AsyncTranslateLoader(baseUrlReplaySubject$.pipe(map((baseUrl) => {
|
|
14
|
+
return new TranslateCombinedLoader(
|
|
15
|
+
// translations of shell or of app in standalone mode
|
|
16
|
+
new CachingTranslateLoader(ts, http, `./assets/i18n/`, '.json'),
|
|
17
|
+
// translations of portal-integration-angular of app
|
|
18
|
+
new CachingTranslateLoader(ts, http, Location.joinWithSlash(baseUrl, `onecx-portal-lib/assets/i18n/`), '.json'),
|
|
19
|
+
// translations of the app
|
|
20
|
+
new CachingTranslateLoader(ts, http, Location.joinWithSlash(baseUrl, `assets/i18n/`), '.json'));
|
|
21
|
+
}), tap(() => console.timeEnd('createRemoteComponentTranslateLoader_' + timerId))));
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXJlbW90ZS1jb21wb25lbnQtdHJhbnNsYXRlLWxvYWRlci51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NlbGVyYXRvci9zcmMvbGliL3V0aWxzL2NyZWF0ZS1yZW1vdGUtY29tcG9uZW50LXRyYW5zbGF0ZS1sb2FkZXIudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRTFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFdEMsT0FBTyxFQUFFLEdBQUcsRUFBaUIsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzlDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFBO0FBQy9FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBQ3JFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBQ3pFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBRXJFLElBQUksMEJBQTBCLEdBQUcsQ0FBQyxDQUFBO0FBRWxDLE1BQU0sVUFBVSxvQ0FBb0MsQ0FDbEQsSUFBZ0IsRUFDaEIscUJBQTRDLEVBQzVDLHVCQUFpRDtJQUVqRCxNQUFNLEVBQUUsR0FBRyx1QkFBdUIsSUFBSSxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQTtJQUNyRSxNQUFNLE9BQU8sR0FBRywwQkFBMEIsRUFBRSxDQUFBO0lBRTVDLE9BQU8sQ0FBQyxJQUFJLENBQUMsdUNBQXVDLEdBQUcsT0FBTyxDQUFDLENBQUE7SUFDL0QsT0FBTyxJQUFJLG9CQUFvQixDQUM3QixxQkFBcUIsQ0FBQyxJQUFJLENBQ3hCLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ2QsT0FBTyxJQUFJLHVCQUF1QjtRQUNoQyxxREFBcUQ7UUFDckQsSUFBSSxzQkFBc0IsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sQ0FBQztRQUMvRCxvREFBb0Q7UUFDcEQsSUFBSSxzQkFBc0IsQ0FDeEIsRUFBRSxFQUNGLElBQUksRUFDSixRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSwrQkFBK0IsQ0FBQyxFQUNoRSxPQUFPLENBQ1I7UUFDRCwwQkFBMEI7UUFDMUIsSUFBSSxzQkFBc0IsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUMvRixDQUFBO0lBQ0gsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsdUNBQXVDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FDOUUsQ0FDRixDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJ1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFRyYW5zbGF0ZUxvYWRlciB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBtYXAsIFJlcGxheVN1YmplY3QsIHRhcCB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBUcmFuc2xhdGlvbkNhY2hlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLWNhY2hlLnNlcnZpY2UnXG5pbXBvcnQgeyBBc3luY1RyYW5zbGF0ZUxvYWRlciB9IGZyb20gJy4vYXN5bmMtdHJhbnNsYXRlLWxvYWRlci51dGlscydcbmltcG9ydCB7IENhY2hpbmdUcmFuc2xhdGVMb2FkZXIgfSBmcm9tICcuL2NhY2hpbmctdHJhbnNsYXRlLWxvYWRlci51dGlscydcbmltcG9ydCB7IFRyYW5zbGF0ZUNvbWJpbmVkTG9hZGVyIH0gZnJvbSAnLi90cmFuc2xhdGUuY29tYmluZWQubG9hZGVyJ1xuXG5sZXQgbGFzdFRyYW5zbGF0ZUxvYWRlclRpbWVySWQgPSAwXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZW1vdGVDb21wb25lbnRUcmFuc2xhdGVMb2FkZXIoXG4gIGh0dHA6IEh0dHBDbGllbnQsXG4gIGJhc2VVcmxSZXBsYXlTdWJqZWN0JDogUmVwbGF5U3ViamVjdDxzdHJpbmc+LFxuICB0cmFuc2xhdGlvbkNhY2hlU2VydmljZT86IFRyYW5zbGF0aW9uQ2FjaGVTZXJ2aWNlXG4pOiBUcmFuc2xhdGVMb2FkZXIge1xuICBjb25zdCB0cyA9IHRyYW5zbGF0aW9uQ2FjaGVTZXJ2aWNlID8/IGluamVjdChUcmFuc2xhdGlvbkNhY2hlU2VydmljZSlcbiAgY29uc3QgdGltZXJJZCA9IGxhc3RUcmFuc2xhdGVMb2FkZXJUaW1lcklkKytcbiAgXG4gIGNvbnNvbGUudGltZSgnY3JlYXRlUmVtb3RlQ29tcG9uZW50VHJhbnNsYXRlTG9hZGVyXycgKyB0aW1lcklkKVxuICByZXR1cm4gbmV3IEFzeW5jVHJhbnNsYXRlTG9hZGVyKFxuICAgIGJhc2VVcmxSZXBsYXlTdWJqZWN0JC5waXBlKFxuICAgICAgbWFwKChiYXNlVXJsKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgVHJhbnNsYXRlQ29tYmluZWRMb2FkZXIoXG4gICAgICAgICAgLy8gdHJhbnNsYXRpb25zIG9mIHNoZWxsIG9yIG9mIGFwcCBpbiBzdGFuZGFsb25lIG1vZGVcbiAgICAgICAgICBuZXcgQ2FjaGluZ1RyYW5zbGF0ZUxvYWRlcih0cywgaHR0cCwgYC4vYXNzZXRzL2kxOG4vYCwgJy5qc29uJyksXG4gICAgICAgICAgLy8gdHJhbnNsYXRpb25zIG9mIHBvcnRhbC1pbnRlZ3JhdGlvbi1hbmd1bGFyIG9mIGFwcFxuICAgICAgICAgIG5ldyBDYWNoaW5nVHJhbnNsYXRlTG9hZGVyKFxuICAgICAgICAgICAgdHMsXG4gICAgICAgICAgICBodHRwLFxuICAgICAgICAgICAgTG9jYXRpb24uam9pbldpdGhTbGFzaChiYXNlVXJsLCBgb25lY3gtcG9ydGFsLWxpYi9hc3NldHMvaTE4bi9gKSxcbiAgICAgICAgICAgICcuanNvbidcbiAgICAgICAgICApLFxuICAgICAgICAgIC8vIHRyYW5zbGF0aW9ucyBvZiB0aGUgYXBwXG4gICAgICAgICAgbmV3IENhY2hpbmdUcmFuc2xhdGVMb2FkZXIodHMsIGh0dHAsIExvY2F0aW9uLmpvaW5XaXRoU2xhc2goYmFzZVVybCwgYGFzc2V0cy9pMThuL2ApLCAnLmpzb24nKVxuICAgICAgICApXG4gICAgICB9KSxcbiAgICAgIHRhcCgoKSA9PiBjb25zb2xlLnRpbWVFbmQoJ2NyZWF0ZVJlbW90ZUNvbXBvbmVudFRyYW5zbGF0ZUxvYWRlcl8nICsgdGltZXJJZCkpXG4gICAgKVxuICApXG59XG4iXX0=
|