@bnsights/bbsf-utilities 1.0.32 → 1.0.33
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/README.md +4 -4
- package/bnsights-bbsf-utilities-1.0.33.tgz +0 -0
- package/bnsights-bbsf-utilities.d.ts +0 -1
- package/bnsights-bbsf-utilities.metadata.json +1 -0
- package/bundles/bnsights-bbsf-utilities.umd.js +4865 -0
- package/bundles/bnsights-bbsf-utilities.umd.js.map +1 -0
- package/esm2015/lib/bbsf-utilities.module.js +52 -0
- package/esm2015/lib/shared/authentication/auth.service.js +236 -0
- package/esm2015/lib/shared/config/word/constants.js +105 -0
- package/esm2015/lib/shared/config/word/docx-document.js +351 -0
- package/esm2015/lib/shared/config/word/helpers/index.js +4 -0
- package/esm2015/lib/shared/config/word/helpers/render-document-file.js +278 -0
- package/esm2015/lib/shared/config/word/helpers/xml-builder.js +1765 -0
- package/esm2015/lib/shared/config/word/html-to-docx.js +195 -0
- package/esm2015/lib/shared/config/word/index.js +55 -0
- package/esm2015/lib/shared/config/word/namespaces.js +37 -0
- package/esm2015/lib/shared/config/word/schemas/content-types.js +26 -0
- package/esm2015/lib/shared/config/word/schemas/core.js +29 -0
- package/esm2015/lib/shared/config/word/schemas/document-rels.js +16 -0
- package/esm2015/lib/shared/config/word/schemas/document.template.js +109 -0
- package/esm2015/lib/shared/config/word/schemas/font-table.js +40 -0
- package/esm2015/lib/shared/config/word/schemas/generic-rels.js +11 -0
- package/esm2015/lib/shared/config/word/schemas/index.js +13 -0
- package/esm2015/lib/shared/config/word/schemas/numbering.js +19 -0
- package/esm2015/lib/shared/config/word/schemas/rels.js +11 -0
- package/esm2015/lib/shared/config/word/schemas/settings.js +13 -0
- package/esm2015/lib/shared/config/word/schemas/styles.js +149 -0
- package/esm2015/lib/shared/config/word/schemas/theme.js +200 -0
- package/esm2015/lib/shared/config/word/schemas/web-settings.js +9 -0
- package/esm2015/lib/shared/config/word/utils/color-conversion.js +60 -0
- package/esm2015/lib/shared/config/word/utils/list.js +51 -0
- package/esm2015/lib/shared/config/word/utils/unit-conversion.js +30 -0
- package/esm2015/lib/shared/config/word/utils/url.js +9 -0
- package/esm2015/lib/shared/config/word/utils/vnode.js +3 -0
- package/esm2015/lib/shared/config/word/word-work/templates/documentTemplate.js +54 -0
- package/esm2015/lib/shared/config/word/word-work/templates/index.js +4 -0
- package/esm2015/lib/shared/config/word/word-work/templates/mhtDocumentTemplate.js +22 -0
- package/esm2015/lib/shared/config/word/word-work/templates/mhtPartTemplate.js +10 -0
- package/esm2015/lib/shared/config/word/word-work/utils.js +26 -0
- package/esm2015/lib/shared/models/WordDocumentModel.js +8 -0
- package/esm2015/lib/shared/services/AppearanceConfiguration.service.js +37 -0
- package/esm2015/lib/shared/services/configuration.service.js +26 -0
- package/esm2015/lib/shared/services/controlvalidation.service.js +168 -0
- package/esm2015/lib/shared/services/environment.service.js +48 -0
- package/esm2015/lib/shared/services/masterlayout.service.js +96 -0
- package/esm2015/lib/shared/services/requesthandler.service.js +206 -0
- package/esm2015/lib/shared/services/stylesbundle.service.js +56 -0
- package/esm2015/lib/shared/services/translate.service.js +13 -0
- package/esm2015/lib/shared/services/translationresolver.service.js +20 -0
- package/esm2015/lib/shared/services/utility.service.js +96 -0
- package/esm2015/lib/shared/services/word-document.service.js +39 -0
- package/esm2015/public-api.js +20 -0
- package/fesm2015/bnsights-bbsf-utilities.js +4634 -0
- package/fesm2015/bnsights-bbsf-utilities.js.map +1 -0
- package/lib/bbsf-utilities.module.d.ts +0 -9
- package/lib/shared/authentication/auth.service.d.ts +0 -3
- package/lib/shared/config/word/constants.d.ts +124 -0
- package/lib/shared/config/word/docx-document.d.ts +73 -0
- package/lib/shared/config/word/helpers/index.d.ts +1 -0
- package/lib/shared/config/word/helpers/render-document-file.d.ts +4 -0
- package/lib/shared/config/word/helpers/xml-builder.d.ts +14 -0
- package/lib/shared/config/word/html-to-docx.d.ts +1 -0
- package/lib/shared/config/word/index.d.ts +1 -0
- package/lib/shared/config/word/namespaces.d.ts +36 -0
- package/lib/shared/config/word/schemas/content-types.d.ts +1 -0
- package/lib/shared/config/word/schemas/core.d.ts +1 -0
- package/lib/shared/config/word/schemas/document-rels.d.ts +1 -0
- package/lib/shared/config/word/schemas/document.template.d.ts +4 -0
- package/lib/shared/config/word/schemas/font-table.d.ts +1 -0
- package/lib/shared/config/word/schemas/generic-rels.d.ts +1 -0
- package/lib/shared/config/word/schemas/index.d.ts +12 -0
- package/lib/shared/config/word/schemas/numbering.d.ts +1 -0
- package/lib/shared/config/word/schemas/rels.d.ts +1 -0
- package/lib/shared/config/word/schemas/settings.d.ts +1 -0
- package/lib/shared/config/word/schemas/styles.d.ts +1 -0
- package/lib/shared/config/word/schemas/theme.d.ts +1 -0
- package/lib/shared/config/word/schemas/web-settings.d.ts +1 -0
- package/lib/shared/config/word/utils/color-conversion.d.ts +7 -0
- package/lib/shared/config/word/utils/list.d.ts +6 -0
- package/lib/shared/config/word/utils/unit-conversion.d.ts +29 -0
- package/lib/shared/config/word/utils/url.d.ts +1 -0
- package/lib/shared/config/word/utils/vnode.d.ts +1 -0
- package/lib/shared/config/word/word-work/templates/documentTemplate.d.ts +12 -0
- package/lib/shared/config/word/word-work/templates/index.d.ts +3 -0
- package/lib/shared/config/word/word-work/templates/mhtDocumentTemplate.d.ts +1 -0
- package/lib/shared/config/word/word-work/templates/mhtPartTemplate.d.ts +1 -0
- package/lib/shared/config/word/word-work/utils.d.ts +1 -0
- package/lib/shared/models/WordDocumentModel.d.ts +16 -0
- package/lib/shared/services/AppearanceConfiguration.service.d.ts +0 -3
- package/lib/shared/services/configuration.service.d.ts +0 -3
- package/lib/shared/services/controlvalidation.service.d.ts +0 -3
- package/lib/shared/services/environment.service.d.ts +0 -3
- package/lib/shared/services/masterlayout.service.d.ts +0 -3
- package/lib/shared/services/requesthandler.service.d.ts +0 -3
- package/lib/shared/services/stylesbundle.service.d.ts +0 -3
- package/lib/shared/services/translate.service.d.ts +0 -3
- package/lib/shared/services/translationresolver.service.d.ts +0 -3
- package/lib/shared/services/utility.service.d.ts +0 -3
- package/lib/shared/services/word-document.service.d.ts +5 -0
- package/package.json +7 -19
- package/public-api.d.ts +2 -0
- package/bnsights-bbsf-utilities-1.0.32.tgz +0 -0
- package/esm2020/lib/bbsf-utilities.module.mjs +0 -74
- package/esm2020/lib/shared/authentication/auth.service.mjs +0 -217
- package/esm2020/lib/shared/services/AppearanceConfiguration.service.mjs +0 -35
- package/esm2020/lib/shared/services/configuration.service.mjs +0 -24
- package/esm2020/lib/shared/services/controlvalidation.service.mjs +0 -166
- package/esm2020/lib/shared/services/environment.service.mjs +0 -50
- package/esm2020/lib/shared/services/masterlayout.service.mjs +0 -84
- package/esm2020/lib/shared/services/requesthandler.service.mjs +0 -202
- package/esm2020/lib/shared/services/stylesbundle.service.mjs +0 -55
- package/esm2020/lib/shared/services/translate.service.mjs +0 -14
- package/esm2020/lib/shared/services/translationresolver.service.mjs +0 -18
- package/esm2020/lib/shared/services/utility.service.mjs +0 -90
- package/esm2020/public-api.mjs +0 -18
- package/fesm2015/bnsights-bbsf-utilities.mjs +0 -1009
- package/fesm2015/bnsights-bbsf-utilities.mjs.map +0 -1
- package/fesm2020/bnsights-bbsf-utilities.mjs +0 -997
- package/fesm2020/bnsights-bbsf-utilities.mjs.map +0 -1
- /package/{esm2020/bnsights-bbsf-utilities.mjs → esm2015/bnsights-bbsf-utilities.js} +0 -0
- /package/{esm2020/lib/shared/config/environment.mjs → esm2015/lib/shared/config/environment.js} +0 -0
- /package/{esm2020/lib/shared/models/AreaModel.mjs → esm2015/lib/shared/models/AreaModel.js} +0 -0
- /package/{esm2020/lib/shared/models/ErrorModel.mjs → esm2015/lib/shared/models/ErrorModel.js} +0 -0
- /package/{esm2020/lib/shared/models/RequestOptionsModel.mjs → esm2015/lib/shared/models/RequestOptionsModel.js} +0 -0
package/public-api.d.ts
CHANGED
|
@@ -9,6 +9,8 @@ export * from './lib/shared/services/masterlayout.service';
|
|
|
9
9
|
export * from './lib/shared/services/translationresolver.service';
|
|
10
10
|
export * from './lib/shared/services/AppearanceConfiguration.service';
|
|
11
11
|
export * from './lib/shared/services/configuration.service';
|
|
12
|
+
export * from './lib/shared/services/word-document.service';
|
|
12
13
|
export * from './lib/shared/config/environment';
|
|
13
14
|
export * from './lib/shared/authentication/auth.service';
|
|
14
15
|
export * from './lib/shared/models/RequestOptionsModel';
|
|
16
|
+
export * from './lib/shared/models/WordDocumentModel';
|
|
Binary file
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { NgModule } from '@angular/core';
|
|
3
|
-
import { RouterModule } from '@angular/router';
|
|
4
|
-
import { TranslateService } from '@ngx-translate/core';
|
|
5
|
-
import { BlockUIModule } from 'ng-block-ui';
|
|
6
|
-
import { ToastrModule } from 'ngx-toastr';
|
|
7
|
-
import { HttpModule } from '@angular/http';
|
|
8
|
-
import { UtilityService } from './shared/services/utility.service';
|
|
9
|
-
import { EnvironmentService } from './shared/services/environment.service';
|
|
10
|
-
import { AuthService } from './shared/authentication/auth.service';
|
|
11
|
-
import { RequestHandlerService } from './shared/services/requesthandler.service';
|
|
12
|
-
import { StylesBundleService } from './shared/services/stylesbundle.service';
|
|
13
|
-
import { BBSFTranslateService } from './shared/services/translate.service';
|
|
14
|
-
import { ControlValidationService } from './shared/services/controlvalidation.service';
|
|
15
|
-
import { MasterLayoutService } from './shared/services/masterlayout.service';
|
|
16
|
-
import { ConfigurationService } from './shared/services/configuration.service';
|
|
17
|
-
import * as i0 from "@angular/core";
|
|
18
|
-
import * as i1 from "ng-block-ui";
|
|
19
|
-
import * as i2 from "ngx-toastr";
|
|
20
|
-
export let AppInjector;
|
|
21
|
-
export class BBSFUtilitiesModule {
|
|
22
|
-
constructor(injector) {
|
|
23
|
-
this.injector = injector;
|
|
24
|
-
AppInjector = this.injector;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
BBSFUtilitiesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BBSFUtilitiesModule, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.NgModule });
|
|
28
|
-
BBSFUtilitiesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BBSFUtilitiesModule, imports: [CommonModule, i1.BlockUIModule, HttpModule,
|
|
29
|
-
RouterModule, i2.ToastrModule] });
|
|
30
|
-
BBSFUtilitiesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BBSFUtilitiesModule, providers: [
|
|
31
|
-
UtilityService,
|
|
32
|
-
EnvironmentService,
|
|
33
|
-
AuthService,
|
|
34
|
-
RequestHandlerService,
|
|
35
|
-
StylesBundleService,
|
|
36
|
-
TranslateService,
|
|
37
|
-
BBSFTranslateService,
|
|
38
|
-
ControlValidationService,
|
|
39
|
-
MasterLayoutService,
|
|
40
|
-
ConfigurationService
|
|
41
|
-
], imports: [[
|
|
42
|
-
CommonModule,
|
|
43
|
-
BlockUIModule.forRoot(),
|
|
44
|
-
HttpModule,
|
|
45
|
-
RouterModule,
|
|
46
|
-
ToastrModule.forRoot(),
|
|
47
|
-
]] });
|
|
48
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BBSFUtilitiesModule, decorators: [{
|
|
49
|
-
type: NgModule,
|
|
50
|
-
args: [{
|
|
51
|
-
declarations: [],
|
|
52
|
-
imports: [
|
|
53
|
-
CommonModule,
|
|
54
|
-
BlockUIModule.forRoot(),
|
|
55
|
-
HttpModule,
|
|
56
|
-
RouterModule,
|
|
57
|
-
ToastrModule.forRoot(),
|
|
58
|
-
],
|
|
59
|
-
exports: [],
|
|
60
|
-
providers: [
|
|
61
|
-
UtilityService,
|
|
62
|
-
EnvironmentService,
|
|
63
|
-
AuthService,
|
|
64
|
-
RequestHandlerService,
|
|
65
|
-
StylesBundleService,
|
|
66
|
-
TranslateService,
|
|
67
|
-
BBSFTranslateService,
|
|
68
|
-
ControlValidationService,
|
|
69
|
-
MasterLayoutService,
|
|
70
|
-
ConfigurationService
|
|
71
|
-
]
|
|
72
|
-
}]
|
|
73
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmJzZi11dGlsaXRpZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi11dGlsaXRpZXMvc3JjL2xpYi9iYnNmLXV0aWxpdGllcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBWSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMxQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDbkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDakYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7QUFFL0UsTUFBTSxDQUFDLElBQUksV0FBcUIsQ0FBQztBQTZCakMsTUFBTSxPQUFPLG1CQUFtQjtJQUU5QixZQUFvQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ3BDLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBRTlCLENBQUM7O2lIQUxVLG1CQUFtQjtrSEFBbkIsbUJBQW1CLFlBdkI1QixZQUFZLG9CQUVaLFVBQVU7UUFDVixZQUFZO2tIQW9CSCxtQkFBbUIsYUFicEI7UUFDUixjQUFjO1FBQ2Qsa0JBQWtCO1FBQ2xCLFdBQVc7UUFDWCxxQkFBcUI7UUFDckIsbUJBQW1CO1FBQ25CLGdCQUFnQjtRQUNoQixvQkFBb0I7UUFDcEIsd0JBQXdCO1FBQ3hCLG1CQUFtQjtRQUNuQixvQkFBb0I7S0FDckIsWUF0QlE7WUFDUCxZQUFZO1lBQ1osYUFBYSxDQUFDLE9BQU8sRUFBRTtZQUN2QixVQUFVO1lBQ1YsWUFBWTtZQUNaLFlBQVksQ0FBQyxPQUFPLEVBQUU7U0FFdkI7NEZBaUJVLG1CQUFtQjtrQkEzQi9CLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLEVBQ2I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osYUFBYSxDQUFDLE9BQU8sRUFBRTt3QkFDdkIsVUFBVTt3QkFDVixZQUFZO3dCQUNaLFlBQVksQ0FBQyxPQUFPLEVBQUU7cUJBRXZCO29CQUNELE9BQU8sRUFBRSxFQUVSO29CQUNELFNBQVMsRUFBQzt3QkFDUixjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIsV0FBVzt3QkFDWCxxQkFBcUI7d0JBQ3JCLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUNoQixvQkFBb0I7d0JBQ3BCLHdCQUF3Qjt3QkFDeEIsbUJBQW1CO3dCQUNuQixvQkFBb0I7cUJBQ3JCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0b3IsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgQmxvY2tVSU1vZHVsZSB9IGZyb20gJ25nLWJsb2NrLXVpJztcclxuaW1wb3J0IHsgVG9hc3RyTW9kdWxlIH0gZnJvbSAnbmd4LXRvYXN0cic7XHJcbmltcG9ydCB7IEh0dHBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9odHRwJztcclxuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC9zZXJ2aWNlcy91dGlsaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC9zZXJ2aWNlcy9lbnZpcm9ubWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC9hdXRoZW50aWNhdGlvbi9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZXF1ZXN0SGFuZGxlclNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC9zZXJ2aWNlcy9yZXF1ZXN0aGFuZGxlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3R5bGVzQnVuZGxlU2VydmljZSB9IGZyb20gJy4vc2hhcmVkL3NlcnZpY2VzL3N0eWxlc2J1bmRsZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQkJTRlRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJy4vc2hhcmVkL3NlcnZpY2VzL2NvbnRyb2x2YWxpZGF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXN0ZXJMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQvc2VydmljZXMvbWFzdGVybGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4vc2hhcmVkL3NlcnZpY2VzL2NvbmZpZ3VyYXRpb24uc2VydmljZSc7XHJcblxyXG5leHBvcnQgbGV0IEFwcEluamVjdG9yOiBJbmplY3RvcjtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBCbG9ja1VJTW9kdWxlLmZvclJvb3QoKSxcclxuICAgIEh0dHBNb2R1bGUsXHJcbiAgICBSb3V0ZXJNb2R1bGUsXHJcbiAgICBUb2FzdHJNb2R1bGUuZm9yUm9vdCgpLFxyXG5cclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOltcclxuICAgIFV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgRW52aXJvbm1lbnRTZXJ2aWNlLFxyXG4gICAgQXV0aFNlcnZpY2UsXHJcbiAgICBSZXF1ZXN0SGFuZGxlclNlcnZpY2UsXHJcbiAgICBTdHlsZXNCdW5kbGVTZXJ2aWNlLFxyXG4gICAgVHJhbnNsYXRlU2VydmljZSxcclxuICAgIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLFxyXG4gICAgTWFzdGVyTGF5b3V0U2VydmljZSxcclxuICAgIENvbmZpZ3VyYXRpb25TZXJ2aWNlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQkJTRlV0aWxpdGllc01vZHVsZSB7IFxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgQXBwSW5qZWN0b3IgPSB0aGlzLmluamVjdG9yO1xyXG5cclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,217 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { HttpHeaders } from '@angular/common/http';
|
|
3
|
-
import { UserManager, WebStorageStateStore, } from 'oidc-client';
|
|
4
|
-
import { BehaviorSubject, Subject } from 'rxjs';
|
|
5
|
-
import { MasterLayoutService } from '../services/masterlayout.service';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/common/http";
|
|
8
|
-
import * as i2 from "../services/environment.service";
|
|
9
|
-
import * as i3 from "../services/translate.service";
|
|
10
|
-
import * as i4 from "@angular/router";
|
|
11
|
-
export class AuthService {
|
|
12
|
-
constructor(injector, http, environmentService, translateService, router) {
|
|
13
|
-
this.injector = injector;
|
|
14
|
-
this.http = http;
|
|
15
|
-
this.environmentService = environmentService;
|
|
16
|
-
this.translateService = translateService;
|
|
17
|
-
this.router = router;
|
|
18
|
-
// Observable navItem source
|
|
19
|
-
this._authNavStatusSource = new BehaviorSubject(false);
|
|
20
|
-
// Observable navItem stream
|
|
21
|
-
this.authNavStatus$ = this._authNavStatusSource.asObservable();
|
|
22
|
-
// Observable navItem source
|
|
23
|
-
this._userSource = new Subject();
|
|
24
|
-
this.UserStatus$ = this._userSource.asObservable();
|
|
25
|
-
this.manager = this.getUserManager();
|
|
26
|
-
this.redirectUrl = '';
|
|
27
|
-
this.manager.getUser().then(async (user) => {
|
|
28
|
-
this.manager.storeUser(user);
|
|
29
|
-
AuthService.user = user;
|
|
30
|
-
this.user = user;
|
|
31
|
-
this._authNavStatusSource.next(await this.isAuthenticated());
|
|
32
|
-
});
|
|
33
|
-
this.manager.events.addAccessTokenExpired((_) => {
|
|
34
|
-
this._authNavStatusSource.next(false);
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
getUserManager() {
|
|
38
|
-
let user = null;
|
|
39
|
-
let isExternal = this.environmentService.getIsIdentityServerExternal().toLowerCase() ==
|
|
40
|
-
'true';
|
|
41
|
-
if (isExternal) {
|
|
42
|
-
user = new UserManager({
|
|
43
|
-
authority: this.environmentService.getIdentityServerUrl(),
|
|
44
|
-
client_id: this.environmentService.getIsIdentityServerClientId(),
|
|
45
|
-
client_secret: this.environmentService.getIsIdentityServerClientSecret(),
|
|
46
|
-
redirect_uri: this.environmentService.getBaseUrl() +
|
|
47
|
-
'/Admin/authentication/auth-callback',
|
|
48
|
-
post_logout_redirect_uri: this.environmentService.getBaseUrl(),
|
|
49
|
-
response_type: 'code',
|
|
50
|
-
scope: 'openid profile email',
|
|
51
|
-
filterProtocolClaims: true,
|
|
52
|
-
loadUserInfo: true,
|
|
53
|
-
automaticSilentRenew: true,
|
|
54
|
-
silent_redirect_uri: this.environmentService.getBaseUrl() + '/assets/silent-callback.html',
|
|
55
|
-
userStore: new WebStorageStateStore({ store: window.localStorage }),
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
user = new UserManager({
|
|
60
|
-
authority: this.environmentService.getIdentityServerUrl(),
|
|
61
|
-
client_id: 'angular_spa',
|
|
62
|
-
redirect_uri: this.environmentService.getBaseUrl() +
|
|
63
|
-
'/Admin/authentication/auth-callback',
|
|
64
|
-
post_logout_redirect_uri: this.environmentService.getBaseUrl(),
|
|
65
|
-
response_type: 'id_token token',
|
|
66
|
-
scope: 'openid profile email IdentityServerApi',
|
|
67
|
-
filterProtocolClaims: true,
|
|
68
|
-
loadUserInfo: true,
|
|
69
|
-
automaticSilentRenew: true,
|
|
70
|
-
silent_redirect_uri: this.environmentService.getBaseUrl() + '/assets/silent-callback.html',
|
|
71
|
-
userStore: new WebStorageStateStore({ store: window.localStorage }),
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
return user;
|
|
75
|
-
}
|
|
76
|
-
login() {
|
|
77
|
-
return this.manager.signinRedirect();
|
|
78
|
-
}
|
|
79
|
-
getUser() {
|
|
80
|
-
this.manager.getUser().then(async (user) => {
|
|
81
|
-
AuthService.user = user;
|
|
82
|
-
this.user = user;
|
|
83
|
-
this._authNavStatusSource.next(await this.isAuthenticated());
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
storUser(User) {
|
|
87
|
-
this.manager.storeUser(User);
|
|
88
|
-
}
|
|
89
|
-
revokeAccessToken() {
|
|
90
|
-
this.manager.revokeAccessToken();
|
|
91
|
-
}
|
|
92
|
-
signinSilent() {
|
|
93
|
-
let x = this.manager.signinSilentCallback();
|
|
94
|
-
x.then((s) => {
|
|
95
|
-
//console.log(s)
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
async completeAuthentication() {
|
|
99
|
-
this.user = await this.manager.signinRedirectCallback();
|
|
100
|
-
AuthService.user = this.user;
|
|
101
|
-
this._userSource.next(AuthService.user);
|
|
102
|
-
this._authNavStatusSource.next(await this.isAuthenticated());
|
|
103
|
-
let isExternal = this.environmentService.getIsIdentityServerExternal().toLowerCase() ==
|
|
104
|
-
'true';
|
|
105
|
-
if (isExternal) {
|
|
106
|
-
const masterLayoutService = this.injector.get(MasterLayoutService);
|
|
107
|
-
let userClaims = await masterLayoutService
|
|
108
|
-
.getUserClaims()
|
|
109
|
-
.toPromise()
|
|
110
|
-
.then((e) => {
|
|
111
|
-
AuthService.UserClaims = e;
|
|
112
|
-
}, (error) => {
|
|
113
|
-
console.log(error);
|
|
114
|
-
});
|
|
115
|
-
AuthService.user.profile = Object.assign(AuthService.user.profile, AuthService.UserClaims);
|
|
116
|
-
}
|
|
117
|
-
this.storUser(AuthService.user);
|
|
118
|
-
if (!localStorage.getItem('language') ||
|
|
119
|
-
localStorage.getItem('language') == this.user.profile.locale)
|
|
120
|
-
localStorage.setItem('language', this.user.profile.locale);
|
|
121
|
-
if (this.translateService.currentLang != localStorage.getItem('language')) {
|
|
122
|
-
this.translateService.resetLang(this.translateService.currentLang);
|
|
123
|
-
await this.translateService
|
|
124
|
-
.reloadLang(localStorage.getItem('language'))
|
|
125
|
-
.subscribe((res) => {
|
|
126
|
-
console.log(res);
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
this._userSource.next(AuthService.user);
|
|
130
|
-
this._authNavStatusSource.next(await this.isAuthenticated());
|
|
131
|
-
this.user = AuthService.user;
|
|
132
|
-
}
|
|
133
|
-
async refreshToken(token) {
|
|
134
|
-
const httpOptions = {
|
|
135
|
-
headers: new HttpHeaders({
|
|
136
|
-
'Content-Type': 'application/json',
|
|
137
|
-
Authorization: token,
|
|
138
|
-
}),
|
|
139
|
-
};
|
|
140
|
-
this.manager.revokeAccessToken();
|
|
141
|
-
return await this.http
|
|
142
|
-
.post(`${this.environmentService.getIdentityServerUrl()}/users/refresh-token`, httpOptions, { withCredentials: true })
|
|
143
|
-
.subscribe((user) => {
|
|
144
|
-
this._userSource.next(user);
|
|
145
|
-
AuthService.user = user;
|
|
146
|
-
this.user = user;
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
getCurrentUser() {
|
|
150
|
-
return this.manager.getUser();
|
|
151
|
-
}
|
|
152
|
-
async isAuthenticated() {
|
|
153
|
-
let user = await this.manager.getUser().then((user) => {
|
|
154
|
-
return user;
|
|
155
|
-
});
|
|
156
|
-
return this.user != null && !this.user.expired;
|
|
157
|
-
}
|
|
158
|
-
isUserInRole(allowedPermission) {
|
|
159
|
-
let selectedPermissionSetID = Number.parseInt(this.user.profile['selectedpermissionsetid']);
|
|
160
|
-
return allowedPermission.includes(selectedPermissionSetID);
|
|
161
|
-
}
|
|
162
|
-
authorizationHeaderValue() {
|
|
163
|
-
return AuthService.user
|
|
164
|
-
? `${AuthService.user.token_type} ${AuthService.user.access_token}`
|
|
165
|
-
: '';
|
|
166
|
-
}
|
|
167
|
-
name() {
|
|
168
|
-
return AuthService.user != null ? AuthService.user.profile.given_name : '';
|
|
169
|
-
}
|
|
170
|
-
setUrl(url) {
|
|
171
|
-
localStorage.setItem('redirectUrl', url);
|
|
172
|
-
}
|
|
173
|
-
getUrl() {
|
|
174
|
-
return localStorage.getItem('redirectUrl');
|
|
175
|
-
}
|
|
176
|
-
async signinSilentCallback() {
|
|
177
|
-
let user = await this.manager.signinSilentCallback();
|
|
178
|
-
//await this.manager.storeUser(user);
|
|
179
|
-
AuthService.user = user;
|
|
180
|
-
console.log('Token from signinSilentCallback :' + AuthService.user);
|
|
181
|
-
this.user = user;
|
|
182
|
-
}
|
|
183
|
-
async signout() {
|
|
184
|
-
if (await !this.isAuthenticated())
|
|
185
|
-
this.router.navigate(['/Admin/account/login']), localStorage.clear();
|
|
186
|
-
let isExternal = this.environmentService.getIsIdentityServerExternal().toLowerCase() ==
|
|
187
|
-
'true';
|
|
188
|
-
if (isExternal) {
|
|
189
|
-
await this.clearUserSessionClaims()
|
|
190
|
-
.toPromise()
|
|
191
|
-
.then((res) => {
|
|
192
|
-
let result = res;
|
|
193
|
-
});
|
|
194
|
-
}
|
|
195
|
-
await this.manager.signoutRedirect();
|
|
196
|
-
}
|
|
197
|
-
clearUserSessionClaims() {
|
|
198
|
-
const httpOptions = {
|
|
199
|
-
headers: new HttpHeaders({
|
|
200
|
-
'Content-Type': 'application/json',
|
|
201
|
-
}),
|
|
202
|
-
};
|
|
203
|
-
let ApiUrl = '/api/Home/';
|
|
204
|
-
return this.http.get(this.environmentService.getBaseUrl() + ApiUrl + 'ClearCurrentUserSession', httpOptions);
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
AuthService.user = null;
|
|
208
|
-
AuthService.UserClaims = null;
|
|
209
|
-
AuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AuthService, deps: [{ token: i0.Injector }, { token: i1.HttpClient }, { token: i2.EnvironmentService }, { token: i3.BBSFTranslateService }, { token: i4.Router }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
210
|
-
AuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AuthService, providedIn: 'root' });
|
|
211
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AuthService, decorators: [{
|
|
212
|
-
type: Injectable,
|
|
213
|
-
args: [{
|
|
214
|
-
providedIn: 'root',
|
|
215
|
-
}]
|
|
216
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.HttpClient }, { type: i2.EnvironmentService }, { type: i3.BBSFTranslateService }, { type: i4.Router }]; } });
|
|
217
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi11dGlsaXRpZXMvc3JjL2xpYi9zaGFyZWQvYXV0aGVudGljYXRpb24vYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRS9ELE9BQU8sRUFDTCxXQUFXLEVBR1gsb0JBQW9CLEdBQ3JCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSWhELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7QUFNdkUsTUFBTSxPQUFPLFdBQVc7SUFjdEIsWUFDVSxRQUFrQixFQUNsQixJQUFnQixFQUNoQixrQkFBc0MsRUFDdEMsZ0JBQXNDLEVBQ3RDLE1BQWM7UUFKZCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXNCO1FBQ3RDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFsQnhCLDRCQUE0QjtRQUNwQix5QkFBb0IsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNuRSw0QkFBNEI7UUFDNUIsbUJBQWMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUQsNEJBQTRCO1FBQ3BCLGdCQUFXLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFDekQsZ0JBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RDLFlBQU8sR0FBRyxJQUFJLENB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R0FBRyx5QkFBeUIsRUFBQyxXQUFXLENBQUMsQ0FBQztJQUM5RyxDQUFDOztBQTlOTSxnQkFBSSxHQUFnQixJQUFLLENBQUE7QUFFekIsc0JBQVUsR0FBUSxJQUFLLENBQUE7eUdBWm5CLFdBQVc7NkdBQVgsV0FBVyxjQUZWLE1BQU07NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtcclxuICBVc2VyTWFuYWdlcixcclxuICBVc2VyTWFuYWdlclNldHRpbmdzLFxyXG4gIFVzZXIsXHJcbiAgV2ViU3RvcmFnZVN0YXRlU3RvcmUsXHJcbn0gZnJvbSAnb2lkYy1jbGllbnQnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZW52aXJvbm1lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBNYXN0ZXJMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbWFzdGVybGF5b3V0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZXF1ZXN0SGFuZGxlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9yZXF1ZXN0aGFuZGxlci5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZSB7XHJcbiAgLy8gT2JzZXJ2YWJsZSBuYXZJdGVtIHNvdXJjZVxyXG4gIHByaXZhdGUgX2F1dGhOYXZTdGF0dXNTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAvLyBPYnNlcnZhYmxlIG5hdkl0ZW0gc3RyZWFtXHJcbiAgYXV0aE5hdlN0YXR1cyQgPSB0aGlzLl9hdXRoTmF2U3RhdHVzU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIC8vIE9ic2VydmFibGUgbmF2SXRlbSBzb3VyY2VcclxuICBwcml2YXRlIF91c2VyU291cmNlOiBTdWJqZWN0PFVzZXI+ID0gbmV3IFN1YmplY3Q8VXNlcj4oKTtcclxuICBVc2VyU3RhdHVzJCA9IHRoaXMuX3VzZXJTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XHJcbiAgcHJpdmF0ZSBtYW5hZ2VyID0gdGhpcy5nZXRVc2VyTWFuYWdlcigpO1xyXG4gIHB1YmxpYyByZWRpcmVjdFVybDogc3RyaW5nID0gJyc7XHJcbiAgc3RhdGljIHVzZXI6IFVzZXIgfCBudWxsID0gbnVsbDtcclxuICB1c2VyOiBVc2VyIHwgbnVsbDtcclxuICBzdGF0aWMgVXNlckNsYWltczogYW55ID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgZW52aXJvbm1lbnRTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxyXG4gICkge1xyXG4gICAgdGhpcy5tYW5hZ2VyLmdldFVzZXIoKS50aGVuKGFzeW5jICh1c2VyKSA9PiB7XHJcbiAgICAgIHRoaXMubWFuYWdlci5zdG9yZVVzZXIodXNlcik7XHJcbiAgICAgIEF1dGhTZXJ2aWNlLnVzZXIgPSB1c2VyO1xyXG4gICAgICB0aGlzLnVzZXIgPSB1c2VyO1xyXG4gICAgICB0aGlzLl9hdXRoTmF2U3RhdHVzU291cmNlLm5leHQoYXdhaXQgdGhpcy5pc0F1dGhlbnRpY2F0ZWQoKSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMubWFuYWdlci5ldmVudHMuYWRkQWNjZXNzVG9rZW5FeHBpcmVkKChfKSA9PiB7XHJcbiAgICAgIHRoaXMuX2F1dGhOYXZTdGF0dXNTb3VyY2UubmV4dChmYWxzZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFVzZXJNYW5hZ2VyKCkge1xyXG4gICAgbGV0IHVzZXIgPSBudWxsO1xyXG4gICAgbGV0IGlzRXh0ZXJuYWwgPVxyXG4gICAgICB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRJc0lkZW50aXR5U2VydmVyRXh0ZXJuYWwoKS50b0xvd2VyQ2FzZSgpID09XHJcbiAgICAgICd0cnVlJztcclxuICAgIGlmIChpc0V4dGVybmFsKSB7XHJcbiAgICAgIHVzZXIgPSBuZXcgVXNlck1hbmFnZXIoe1xyXG4gICAgICAgIGF1dGhvcml0eTogdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0SWRlbnRpdHlTZXJ2ZXJVcmwoKSxcclxuICAgICAgICBjbGllbnRfaWQ6IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldElzSWRlbnRpdHlTZXJ2ZXJDbGllbnRJZCgpLFxyXG4gICAgICAgIGNsaWVudF9zZWNyZXQ6XHJcbiAgICAgICAgICB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRJc0lkZW50aXR5U2VydmVyQ2xpZW50U2VjcmV0KCksXHJcbiAgICAgICAgcmVkaXJlY3RfdXJpOlxyXG4gICAgICAgICAgdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0QmFzZVVybCgpICtcclxuICAgICAgICAgICcvQWRtaW4vYXV0aGVudGljYXRpb24vYXV0aC1jYWxsYmFjaycsXHJcbiAgICAgICAgcG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpOiB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRCYXNlVXJsKCksXHJcbiAgICAgICAgcmVzcG9uc2VfdHlwZTogJ2NvZGUnLFxyXG4gICAgICAgIHNjb3BlOiAnb3BlbmlkIHByb2ZpbGUgZW1haWwnLFxyXG4gICAgICAgIGZpbHRlclByb3RvY29sQ2xhaW1zOiB0cnVlLFxyXG4gICAgICAgIGxvYWRVc2VySW5mbzogdHJ1ZSxcclxuICAgICAgICBhdXRvbWF0aWNTaWxlbnRSZW5ldzogdHJ1ZSxcclxuICAgICAgICBzaWxlbnRfcmVkaXJlY3RfdXJpOlxyXG4gICAgICAgICAgdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0QmFzZVVybCgpICsgJy9hc3NldHMvc2lsZW50LWNhbGxiYWNrLmh0bWwnLFxyXG4gICAgICAgIHVzZXJTdG9yZTogbmV3IFdlYlN0b3JhZ2VTdGF0ZVN0b3JlKHsgc3RvcmU6IHdpbmRvdy5sb2NhbFN0b3JhZ2UgfSksXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdXNlciA9IG5ldyBVc2VyTWFuYWdlcih7XHJcbiAgICAgICAgYXV0aG9yaXR5OiB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRJZGVudGl0eVNlcnZlclVybCgpLFxyXG4gICAgICAgIGNsaWVudF9pZDogJ2FuZ3VsYXJfc3BhJyxcclxuICAgICAgICByZWRpcmVjdF91cmk6XHJcbiAgICAgICAgICB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRCYXNlVXJsKCkgK1xyXG4gICAgICAgICAgJy9BZG1pbi9hdXRoZW50aWNhdGlvbi9hdXRoLWNhbGxiYWNrJyxcclxuICAgICAgICBwb3N0X2xvZ291dF9yZWRpcmVjdF91cmk6IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEJhc2VVcmwoKSxcclxuICAgICAgICByZXNwb25zZV90eXBlOiAnaWRfdG9rZW4gdG9rZW4nLFxyXG4gICAgICAgIHNjb3BlOiAnb3BlbmlkIHByb2ZpbGUgZW1haWwgSWRlbnRpdHlTZXJ2ZXJBcGknLFxyXG4gICAgICAgIGZpbHRlclByb3RvY29sQ2xhaW1zOiB0cnVlLFxyXG4gICAgICAgIGxvYWRVc2VySW5mbzogdHJ1ZSxcclxuICAgICAgICBhdXRvbWF0aWNTaWxlbnRSZW5ldzogdHJ1ZSxcclxuICAgICAgICBzaWxlbnRfcmVkaXJlY3RfdXJpOlxyXG4gICAgICAgICAgdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0QmFzZVVybCgpICsgJy9hc3NldHMvc2lsZW50LWNhbGxiYWNrLmh0bWwnLFxyXG4gICAgICAgIHVzZXJTdG9yZTogbmV3IFdlYlN0b3JhZ2VTdGF0ZVN0b3JlKHsgc3RvcmU6IHdpbmRvdy5sb2NhbFN0b3JhZ2UgfSksXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVzZXI7XHJcbiAgfVxyXG5cclxuICBsb2dpbigpIHtcclxuICAgIHJldHVybiB0aGlzLm1hbmFnZXIuc2lnbmluUmVkaXJlY3QoKTtcclxuICB9XHJcblxyXG4gIGdldFVzZXIoKSB7XHJcbiAgICB0aGlzLm1hbmFnZXIuZ2V0VXNlcigpLnRoZW4oYXN5bmMgKHVzZXIpID0+IHtcclxuICAgICAgQXV0aFNlcnZpY2UudXNlciA9IHVzZXI7XHJcbiAgICAgIHRoaXMudXNlciA9IHVzZXI7XHJcbiAgICAgIHRoaXMuX2F1dGhOYXZTdGF0dXNTb3VyY2UubmV4dChhd2FpdCB0aGlzLmlzQXV0aGVudGljYXRlZCgpKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBzdG9yVXNlcihVc2VyOiBhbnkpIHtcclxuICAgIHRoaXMubWFuYWdlci5zdG9yZVVzZXIoVXNlcik7XHJcbiAgfVxyXG5cclxuICByZXZva2VBY2Nlc3NUb2tlbigpIHtcclxuICAgIHRoaXMubWFuYWdlci5yZXZva2VBY2Nlc3NUb2tlbigpO1xyXG4gIH1cclxuXHJcbiAgc2lnbmluU2lsZW50KCkge1xyXG4gICAgbGV0IHggPSB0aGlzLm1hbmFnZXIuc2lnbmluU2lsZW50Q2FsbGJhY2soKTtcclxuICAgIHgudGhlbigocykgPT4ge1xyXG4gICAgICAvL2NvbnNvbGUubG9nKHMpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGNvbXBsZXRlQXV0aGVudGljYXRpb24oKSB7XHJcbiAgICB0aGlzLnVzZXIgPSBhd2FpdCB0aGlzLm1hbmFnZXIuc2lnbmluUmVkaXJlY3RDYWxsYmFjaygpO1xyXG4gICAgQXV0aFNlcnZpY2UudXNlciA9IHRoaXMudXNlcjtcclxuICAgIHRoaXMuX3VzZXJTb3VyY2UubmV4dChBdXRoU2VydmljZS51c2VyKTtcclxuICAgIHRoaXMuX2F1dGhOYXZTdGF0dXNTb3VyY2UubmV4dChhd2FpdCB0aGlzLmlzQXV0aGVudGljYXRlZCgpKTtcclxuICAgIGxldCBpc0V4dGVybmFsID1cclxuICAgICAgdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0SXNJZGVudGl0eVNlcnZlckV4dGVybmFsKCkudG9Mb3dlckNhc2UoKSA9PVxyXG4gICAgICAndHJ1ZSc7XHJcbiAgICBpZiAoaXNFeHRlcm5hbCkge1xyXG4gICAgICBjb25zdCBtYXN0ZXJMYXlvdXRTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoTWFzdGVyTGF5b3V0U2VydmljZSk7XHJcbiAgICAgIGxldCB1c2VyQ2xhaW1zID0gYXdhaXQgbWFzdGVyTGF5b3V0U2VydmljZVxyXG4gICAgICAgIC5nZXRVc2VyQ2xhaW1zKClcclxuICAgICAgICAudG9Qcm9taXNlKClcclxuICAgICAgICAudGhlbigoZSkgPT4ge1xyXG4gICAgICAgICAgQXV0aFNlcnZpY2UuVXNlckNsYWltcyA9IGU7XHJcbiAgICAgICAgfSwoZXJyb3IpPT57XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcilcclxuICAgICAgICB9KTtcclxuICAgICAgQXV0aFNlcnZpY2UudXNlci5wcm9maWxlID0gT2JqZWN0LmFzc2lnbihcclxuICAgICAgICBBdXRoU2VydmljZS51c2VyLnByb2ZpbGUsXHJcbiAgICAgICAgQXV0aFNlcnZpY2UuVXNlckNsYWltc1xyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3RvclVzZXIoQXV0aFNlcnZpY2UudXNlcik7XHJcbiAgICBpZiAoXHJcbiAgICAgICFsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKSB8fFxyXG4gICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKSA9PSB0aGlzLnVzZXIucHJvZmlsZS5sb2NhbGVcclxuICAgIClcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2xhbmd1YWdlJywgdGhpcy51c2VyLnByb2ZpbGUubG9jYWxlKTtcclxuXHJcbiAgICBpZiAodGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nICE9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5ndWFnZScpKSB7XHJcbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5yZXNldExhbmcodGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nKTtcclxuICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlXHJcbiAgICAgICAgLnJlbG9hZExhbmcobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlJykpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fdXNlclNvdXJjZS5uZXh0KEF1dGhTZXJ2aWNlLnVzZXIpO1xyXG4gICAgdGhpcy5fYXV0aE5hdlN0YXR1c1NvdXJjZS5uZXh0KGF3YWl0IHRoaXMuaXNBdXRoZW50aWNhdGVkKCkpO1xyXG4gICAgdGhpcy51c2VyID0gQXV0aFNlcnZpY2UudXNlcjtcclxuICB9XHJcblxyXG4gIGFzeW5jIHJlZnJlc2hUb2tlbih0b2tlbikge1xyXG4gICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XHJcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICBBdXRob3JpemF0aW9uOiB0b2tlbixcclxuICAgICAgfSksXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMubWFuYWdlci5yZXZva2VBY2Nlc3NUb2tlbigpO1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuaHR0cFxyXG4gICAgICAucG9zdDxhbnk+KFxyXG4gICAgICAgIGAke3RoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldElkZW50aXR5U2VydmVyVXJsKCl9L3VzZXJzL3JlZnJlc2gtdG9rZW5gLFxyXG4gICAgICAgIGh0dHBPcHRpb25zLFxyXG4gICAgICAgIHsgd2l0aENyZWRlbnRpYWxzOiB0cnVlIH1cclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCh1c2VyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fdXNlclNvdXJjZS5uZXh0KHVzZXIpO1xyXG4gICAgICAgIEF1dGhTZXJ2aWNlLnVzZXIgPSB1c2VyO1xyXG4gICAgICAgIHRoaXMudXNlciA9IHVzZXI7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q3VycmVudFVzZXIoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5tYW5hZ2VyLmdldFVzZXIoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGlzQXV0aGVudGljYXRlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGxldCB1c2VyID0gYXdhaXQgdGhpcy5tYW5hZ2VyLmdldFVzZXIoKS50aGVuKCh1c2VyKSA9PiB7XHJcbiAgICAgIHJldHVybiB1c2VyO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyICE9IG51bGwgJiYgIXRoaXMudXNlci5leHBpcmVkO1xyXG4gIH1cclxuICBpc1VzZXJJblJvbGUoYWxsb3dlZFBlcm1pc3Npb246IG51bWJlcltdKSB7XHJcbiAgICBsZXQgc2VsZWN0ZWRQZXJtaXNzaW9uU2V0SUQ6IG51bWJlciA9IE51bWJlci5wYXJzZUludChcclxuICAgICAgdGhpcy51c2VyLnByb2ZpbGVbJ3NlbGVjdGVkcGVybWlzc2lvbnNldGlkJ11cclxuICAgICk7XHJcbiAgICByZXR1cm4gYWxsb3dlZFBlcm1pc3Npb24uaW5jbHVkZXMoc2VsZWN0ZWRQZXJtaXNzaW9uU2V0SUQpO1xyXG4gIH1cclxuXHJcbiAgYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gQXV0aFNlcnZpY2UudXNlclxyXG4gICAgICA/IGAke0F1dGhTZXJ2aWNlLnVzZXIudG9rZW5fdHlwZX0gJHtBdXRoU2VydmljZS51c2VyLmFjY2Vzc190b2tlbn1gXHJcbiAgICAgIDogJyc7XHJcbiAgfVxyXG5cclxuICBuYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gQXV0aFNlcnZpY2UudXNlciAhPSBudWxsID8gQXV0aFNlcnZpY2UudXNlci5wcm9maWxlLmdpdmVuX25hbWUgOiAnJztcclxuICB9XHJcbiAgc2V0VXJsKHVybCkge1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3JlZGlyZWN0VXJsJywgdXJsKTtcclxuICB9XHJcbiAgZ2V0VXJsKCkge1xyXG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdyZWRpcmVjdFVybCcpO1xyXG4gIH1cclxuICBhc3luYyBzaWduaW5TaWxlbnRDYWxsYmFjaygpIHtcclxuICAgIGxldCB1c2VyID0gYXdhaXQgdGhpcy5tYW5hZ2VyLnNpZ25pblNpbGVudENhbGxiYWNrKCk7XHJcbiAgICAvL2F3YWl0IHRoaXMubWFuYWdlci5zdG9yZVVzZXIodXNlcik7XHJcbiAgICBBdXRoU2VydmljZS51c2VyID0gdXNlcjtcclxuICAgIGNvbnNvbGUubG9nKCdUb2tlbiBmcm9tICBzaWduaW5TaWxlbnRDYWxsYmFjayA6JyArIEF1dGhTZXJ2aWNlLnVzZXIpO1xyXG4gICAgdGhpcy51c2VyID0gdXNlcjtcclxuICB9XHJcbiAgYXN5bmMgc2lnbm91dCgpIHtcclxuICAgIGlmIChhd2FpdCAhdGhpcy5pc0F1dGhlbnRpY2F0ZWQoKSlcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvQWRtaW4vYWNjb3VudC9sb2dpbiddKSwgbG9jYWxTdG9yYWdlLmNsZWFyKCk7XHJcbiAgICBsZXQgaXNFeHRlcm5hbCA9XHJcbiAgICAgIHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldElzSWRlbnRpdHlTZXJ2ZXJFeHRlcm5hbCgpLnRvTG93ZXJDYXNlKCkgPT1cclxuICAgICAgJ3RydWUnO1xyXG4gICAgaWYgKGlzRXh0ZXJuYWwpIHtcclxuICAgICAgYXdhaXQgdGhpcy5jbGVhclVzZXJTZXNzaW9uQ2xhaW1zKClcclxuICAgICAgICAudG9Qcm9taXNlKClcclxuICAgICAgICAudGhlbigocmVzKSA9PiB7XHJcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gcmVzO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy5tYW5hZ2VyLnNpZ25vdXRSZWRpcmVjdCgpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJVc2VyU2Vzc2lvbkNsYWltcygpIHtcclxuICAgIGNvbnN0IGh0dHBPcHRpb25zID0ge1xyXG4gICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgIH0pLFxyXG4gICAgfTtcclxuICAgIGxldCBBcGlVcmwgPSAnL2FwaS9Ib21lLyc7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRCYXNlVXJsKCkgKyBBcGlVcmwgKyAnQ2xlYXJDdXJyZW50VXNlclNlc3Npb24nLGh0dHBPcHRpb25zKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { Injectable } from "@angular/core";
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "./configuration.service";
|
|
4
|
-
export class AppearanceConfigurationService {
|
|
5
|
-
constructor(configService) {
|
|
6
|
-
this.configService = configService;
|
|
7
|
-
}
|
|
8
|
-
getLayoutTheme() {
|
|
9
|
-
return this.configService.getConfigurationValue('AnonymousLayout_Theme');
|
|
10
|
-
}
|
|
11
|
-
getFooterText() {
|
|
12
|
-
return this.configService.getConfigurationValue('AnonymousLayout_FooterText');
|
|
13
|
-
}
|
|
14
|
-
getPageTitle() {
|
|
15
|
-
return this.configService.getConfigurationValue('AnonymousLayout_PageTitle');
|
|
16
|
-
}
|
|
17
|
-
getFavIcon() {
|
|
18
|
-
return this.configService.getConfigurationValue('AnonymousLayout_FavIcon');
|
|
19
|
-
}
|
|
20
|
-
getCustomStyles() {
|
|
21
|
-
return this.configService.getConfigurationValue('AnonymousLayout_CustomStyles');
|
|
22
|
-
}
|
|
23
|
-
getLogo() {
|
|
24
|
-
return this.configService.getConfigurationValue('AnonymousLayout_Logo');
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
AppearanceConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AppearanceConfigurationService, deps: [{ token: i1.ConfigurationService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
28
|
-
AppearanceConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AppearanceConfigurationService, providedIn: 'root' });
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AppearanceConfigurationService, decorators: [{
|
|
30
|
-
type: Injectable,
|
|
31
|
-
args: [{
|
|
32
|
-
providedIn: 'root'
|
|
33
|
-
}]
|
|
34
|
-
}], ctorParameters: function () { return [{ type: i1.ConfigurationService }]; } });
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwZWFyYW5jZUNvbmZpZ3VyYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtdXRpbGl0aWVzL3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL0FwcGVhcmFuY2VDb25maWd1cmF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBTzNDLE1BQU0sT0FBTyw4QkFBOEI7SUFDdkMsWUFBb0IsYUFBbUM7UUFBbkMsa0JBQWEsR0FBYixhQUFhLENBQXNCO0lBQ3ZELENBQUM7SUFFRCxjQUFjO1FBQ1YsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUNELGFBQWE7UUFDVCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBQ0QsWUFBWTtRQUNSLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFDRCxVQUFVO1FBQ04sT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUNELGVBQWU7UUFDWCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBQ0QsT0FBTztRQUNILE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQzVFLENBQUM7OzRIQXJCUSw4QkFBOEI7Z0lBQTlCLDhCQUE4QixjQUYzQixNQUFNOzRGQUVULDhCQUE4QjtrQkFIMUMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4vY29uZmlndXJhdGlvbi5zZXJ2aWNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcGVhcmFuY2VDb25maWd1cmF0aW9uU2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlKSB7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TGF5b3V0VGhlbWUoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWd1cmF0aW9uVmFsdWUoJ0Fub255bW91c0xheW91dF9UaGVtZScpO1xyXG4gICAgfVxyXG4gICAgZ2V0Rm9vdGVyVGV4dCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZ3VyYXRpb25WYWx1ZSgnQW5vbnltb3VzTGF5b3V0X0Zvb3RlclRleHQnKTtcclxuICAgIH1cclxuICAgIGdldFBhZ2VUaXRsZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZ3VyYXRpb25WYWx1ZSgnQW5vbnltb3VzTGF5b3V0X1BhZ2VUaXRsZScpO1xyXG4gICAgfVxyXG4gICAgZ2V0RmF2SWNvbigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZ3VyYXRpb25WYWx1ZSgnQW5vbnltb3VzTGF5b3V0X0Zhdkljb24nKTtcclxuICAgIH1cclxuICAgIGdldEN1c3RvbVN0eWxlcygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZ3VyYXRpb25WYWx1ZSgnQW5vbnltb3VzTGF5b3V0X0N1c3RvbVN0eWxlcycpO1xyXG4gICAgfVxyXG4gICAgZ2V0TG9nbygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZ3VyYXRpb25WYWx1ZSgnQW5vbnltb3VzTGF5b3V0X0xvZ28nKTtcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { Injectable } from "@angular/core";
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/common/http";
|
|
4
|
-
export class ConfigurationService {
|
|
5
|
-
constructor(httpClient) {
|
|
6
|
-
this.httpClient = httpClient;
|
|
7
|
-
this.httpClient.get("./assets/config/configurations.json").subscribe(data => {
|
|
8
|
-
ConfigurationService.JsonData = data;
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
getConfigurationValue(key) {
|
|
12
|
-
return ConfigurationService.JsonData[key];
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
ConfigurationService.JsonData = [];
|
|
16
|
-
ConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ConfigurationService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
17
|
-
ConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ConfigurationService, providedIn: 'root' });
|
|
18
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ConfigurationService, decorators: [{
|
|
19
|
-
type: Injectable,
|
|
20
|
-
args: [{
|
|
21
|
-
providedIn: 'root'
|
|
22
|
-
}]
|
|
23
|
-
}], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi11dGlsaXRpZXMvc3JjL2xpYi9zaGFyZWQvc2VydmljZXMvY29uZmlndXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU0zQyxNQUFNLE9BQU8sb0JBQW9CO0lBRTdCLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMscUNBQXFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEUsb0JBQW9CLENBQUMsUUFBUSxHQUFHLElBQWEsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQTtJQUNSLENBQUM7SUFDRCxxQkFBcUIsQ0FBQyxHQUFVO1FBQzVCLE9BQVEsb0JBQW9CLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLENBQUM7O0FBUkssNkJBQVEsR0FBTyxFQUFFLENBQUE7a0hBRGQsb0JBQW9CO3NIQUFwQixvQkFBb0IsY0FGakIsTUFBTTs0RkFFVCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb25TZXJ2aWNlIHtcclxuICAgc3RhdGljIEpzb25EYXRhOmFueVtdPVtdXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpe1xyXG4gICAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoXCIuL2Fzc2V0cy9jb25maWcvY29uZmlndXJhdGlvbnMuanNvblwiKS5zdWJzY3JpYmUoZGF0YSA9PntcclxuICAgICAgICAgICAgQ29uZmlndXJhdGlvblNlcnZpY2UuSnNvbkRhdGEgPSBkYXRhIGFzIGFueVtdO1xyXG4gICAgICAgICAgfSlcclxuICAgIH1cclxuICAgIGdldENvbmZpZ3VyYXRpb25WYWx1ZShrZXk6c3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuICBDb25maWd1cmF0aW9uU2VydmljZS5Kc29uRGF0YVtrZXldO1xyXG4gICAgfVxyXG59Il19
|
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import { BlockUI } from 'ng-block-ui';
|
|
4
|
-
import { RequestOptionsModel } from '../models/RequestOptionsModel';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "./utility.service";
|
|
7
|
-
export class ControlValidationService {
|
|
8
|
-
constructor(utilityService) {
|
|
9
|
-
this.utilityService = utilityService;
|
|
10
|
-
this.requestOptions = new RequestOptionsModel();
|
|
11
|
-
this.isCreatedBefor = false;
|
|
12
|
-
}
|
|
13
|
-
showGlobalError(errorMessage, formId, deleteOld) {
|
|
14
|
-
let globalErorrElement = document.getElementsByClassName('alert alert-InvalidValidation bg-light-danger text-danger');
|
|
15
|
-
if (globalErorrElement.length > 0) {
|
|
16
|
-
this.removeElementsByClass('alert alert-InvalidValidation bg-light-danger text-danger');
|
|
17
|
-
}
|
|
18
|
-
if (this.isCreatedBefor == true) {
|
|
19
|
-
this.removeElementsByClass('alert alert-InvalidValidation bg-light-danger text-danger');
|
|
20
|
-
}
|
|
21
|
-
// tslint:disable-next-line: prefer-const
|
|
22
|
-
if (!formId)
|
|
23
|
-
formId = "currentForm";
|
|
24
|
-
var object = document.getElementById(formId);
|
|
25
|
-
const tagName = 'div';
|
|
26
|
-
// tslint:disable-next-line: prefer-const
|
|
27
|
-
var elementToAppend = document.createElement(tagName); // Your tag name here
|
|
28
|
-
let message = "";
|
|
29
|
-
if (!errorMessage || (typeof errorMessage == "string")) {
|
|
30
|
-
if (localStorage.getItem('language') == "ar")
|
|
31
|
-
message = errorMessage ? errorMessage : "لديك بعص الأخطاء . من فضلك قم بالمراجعه ";
|
|
32
|
-
else
|
|
33
|
-
message = errorMessage ? errorMessage : "You have some validation errors. Please check below";
|
|
34
|
-
elementToAppend.innerHTML = "<ul class='list-unstyled m-0 py-3 d-flex align-items-center fs-6'><li><i class='fa fa-times-circle text-danger me-3 fs-2'></i>" + message + "</li></ul>";
|
|
35
|
-
elementToAppend.className += 'alert alert-InvalidValidation bg-light-danger text-danger';
|
|
36
|
-
elementToAppend.id += 'errorId';
|
|
37
|
-
// tslint:disable-next-line: prefer-for-of
|
|
38
|
-
const elementToAppen = elementToAppend.cloneNode(true);
|
|
39
|
-
// let targetElement = object.getElementsByClassName("b-control")[0];
|
|
40
|
-
object.insertBefore(elementToAppen, object.firstChild);
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
elementToAppend.innerHTML = "<ul>";
|
|
44
|
-
for (const iterator of errorMessage) {
|
|
45
|
-
elementToAppend.innerHTML = "<li>" + iterator + "</li>";
|
|
46
|
-
}
|
|
47
|
-
elementToAppend.innerHTML = "</ul>";
|
|
48
|
-
elementToAppend.className += 'alert alert-InvalidValidation bg-light-danger text-danger';
|
|
49
|
-
elementToAppend.id += 'errorId';
|
|
50
|
-
// tslint:disable-next-line: prefer-for-of
|
|
51
|
-
const elementToAppen = elementToAppend.cloneNode(true);
|
|
52
|
-
// let targetElement = object.getElementsByClassName("b-control")[0];
|
|
53
|
-
object.insertBefore(elementToAppen, object.firstChild);
|
|
54
|
-
}
|
|
55
|
-
this.isCreatedBefor = true;
|
|
56
|
-
}
|
|
57
|
-
RemoveGlobalError() {
|
|
58
|
-
const removedList = document.getElementsByClassName('alert alert-InvalidValidation bg-light-danger text-danger');
|
|
59
|
-
// tslint:disable-next-line: prefer-for-of
|
|
60
|
-
for (let index = 0; index < removedList.length; index++) {
|
|
61
|
-
const element = removedList[index];
|
|
62
|
-
element.remove();
|
|
63
|
-
}
|
|
64
|
-
this.isCreatedBefor = false;
|
|
65
|
-
}
|
|
66
|
-
showInputErro(errors) {
|
|
67
|
-
// show error on top of form
|
|
68
|
-
this.showGlobalError();
|
|
69
|
-
// remove old error from server
|
|
70
|
-
this.removeElementsByClass('errortemplet');
|
|
71
|
-
// Looping in error Object
|
|
72
|
-
for (const key in errors) {
|
|
73
|
-
if (errors.hasOwnProperty(key)) {
|
|
74
|
-
for (const iterator of errors[key]) {
|
|
75
|
-
const input = document.querySelectorAll('[ng-reflect-name=' + key + ']')[0];
|
|
76
|
-
if (input.attributes['ng-reflect-name'].value === key) {
|
|
77
|
-
this.removeElementsByClass('erroclass-' + key);
|
|
78
|
-
const tagName = 'p';
|
|
79
|
-
const elementToAppend = document.createElement(tagName); // Your tag name here
|
|
80
|
-
elementToAppend.innerHTML = iterator;
|
|
81
|
-
elementToAppend.style.color = 'red';
|
|
82
|
-
elementToAppend.className += 'errortemplet erroclass-' + key;
|
|
83
|
-
const elementToappen = elementToAppend.cloneNode(true);
|
|
84
|
-
input.parentNode.insertBefore(elementToappen, input.lastChild);
|
|
85
|
-
break;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
removeElementsByClass(className) {
|
|
92
|
-
const elements = document.getElementsByClassName(className);
|
|
93
|
-
while (elements.length > 0) {
|
|
94
|
-
elements[0].parentNode.removeChild(elements[0]);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
renderServerErrors(form, err, requestOptions, formId) {
|
|
98
|
-
if (err.error == null) {
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
let errorsArray = [];
|
|
102
|
-
this.requestOptions = requestOptions;
|
|
103
|
-
err.error.validation_errors.forEach((element) => {
|
|
104
|
-
let fieldName = element.field;
|
|
105
|
-
let controlName = element.controlName;
|
|
106
|
-
let message = element.message;
|
|
107
|
-
if (form == null) {
|
|
108
|
-
this.requestOptions.customErrorMessage ? this.utilityService.notifyErrorMessage(this.requestOptions.customErrorMessage) : this.utilityService.notifyErrorMessage(`${message}`);
|
|
109
|
-
}
|
|
110
|
-
else if (controlName && !this.hasControlName(form, controlName)) {
|
|
111
|
-
errorsArray.push(`${fieldName}: ${message}`);
|
|
112
|
-
// this.showGlobalError(`${fieldName}: ${message}`,formId )
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
this.setFieldError(form, controlName, fieldName, message);
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
if (errorsArray.length > 0)
|
|
119
|
-
this.showGlobalError(errorsArray, formId);
|
|
120
|
-
}
|
|
121
|
-
hasControlName(form, controlName) {
|
|
122
|
-
let control = form.get(controlName);
|
|
123
|
-
return control != null;
|
|
124
|
-
}
|
|
125
|
-
setFieldError(form, controlName, fieldName, message) {
|
|
126
|
-
let control = null;
|
|
127
|
-
if (controlName)
|
|
128
|
-
control = form.get(controlName);
|
|
129
|
-
else
|
|
130
|
-
control = form.get(fieldName.split('.')[0]);
|
|
131
|
-
let errors = { "errorMassage": message };
|
|
132
|
-
let fieldNameArray = fieldName.split('.');
|
|
133
|
-
if (fieldNameArray.length >= 1) {
|
|
134
|
-
switch (fieldNameArray[fieldNameArray.length - 1].toLocaleLowerCase()) {
|
|
135
|
-
case "english":
|
|
136
|
-
let englishControl = control.get("English");
|
|
137
|
-
englishControl.setErrors(errors);
|
|
138
|
-
break;
|
|
139
|
-
case "arabic":
|
|
140
|
-
let arabicControl = control.get("Arabic");
|
|
141
|
-
arabicControl.setErrors(errors);
|
|
142
|
-
break;
|
|
143
|
-
default:
|
|
144
|
-
control.setErrors(errors);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
else if (fieldNameArray.length == 1) {
|
|
148
|
-
control.setErrors(errors);
|
|
149
|
-
}
|
|
150
|
-
else {
|
|
151
|
-
this.requestOptions.customErrorMessage ? this.utilityService.notifyErrorMessage(this.requestOptions.customErrorMessage) : this.utilityService.notifyErrorMessage(`${message}`);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
ControlValidationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ControlValidationService, deps: [{ token: i1.UtilityService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
156
|
-
ControlValidationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ControlValidationService, providedIn: 'root' });
|
|
157
|
-
__decorate([
|
|
158
|
-
BlockUI()
|
|
159
|
-
], ControlValidationService.prototype, "blockUI", void 0);
|
|
160
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ControlValidationService, decorators: [{
|
|
161
|
-
type: Injectable,
|
|
162
|
-
args: [{
|
|
163
|
-
providedIn: 'root'
|
|
164
|
-
}]
|
|
165
|
-
}], ctorParameters: function () { return [{ type: i1.UtilityService }]; }, propDecorators: { blockUI: [] } });
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbHZhbGlkYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtdXRpbGl0aWVzL3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL2NvbnRyb2x2YWxpZGF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQXVDLE1BQU0sZUFBZSxDQUFDO0FBRWhGLE9BQU8sRUFBRSxPQUFPLEVBQWEsTUFBTSxhQUFhLENBQUM7QUFNakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7OztBQU9wRSxNQUFNLE9BQU8sd0JBQXdCO0lBR25DLFlBRVksY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBSmxDLG1CQUFjLEdBQXdCLElBQUksbUJBQW1CLEVBQUUsQ0FBQztRQVN4RSxtQkFBYyxHQUFHLEtBQUssQ0FBQztJQUZ2QixDQUFDO0lBTUQsZUFBZSxDQUFDLFlBQWdDLEVBQUUsTUFBZSxFQUFFLFNBQW1CO1FBQ3BGLElBQUksa0JBQWtCLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixDQUFDLDJEQUEyRCxDQUFDLENBQUE7UUFDckgsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQywyREFBMkQsQ0FBQyxDQUFDO1NBQ3pGO1FBR0QsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksRUFBRTtZQUMvQixJQUFJLENBQUMscUJBQXFCLENBQUMsMkRBQTJELENBQUMsQ0FBQztTQUN6RjtRQUVELHlDQUF5QztRQUN6QyxJQUFJLENBQUMsTUFBTTtZQUNULE1BQU0sR0FBRyxhQUFhLENBQUE7UUFDeEIsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxNQUFNLE9BQU8sR0FBRyxL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QWMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFBO1NBQy9LO0lBR0gsQ0FBQzs7c0hBbkxVLHdCQUF3QjswSEFBeEIsd0JBQXdCLGNBRnZCLE1BQU07QUFjUDtJQUFWLE9BQU8sRUFBRTt5REFBb0I7NEZBWm5CLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7cUdBYVksT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsLCBIb3N0LCBTa2lwU2VsZiwgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEluZGl2aWR1YWxDb25maWcsIFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcclxuaW1wb3J0IHsgQmxvY2tVSSwgTmdCbG9ja1VJIH0gZnJvbSAnbmctYmxvY2stdWknO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xDb250YWluZXIsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiwgRm9ybUNvbnRyb2wsIEZvcm1zTW9kdWxlLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEVycm9yTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvRXJyb3JNb2RlbCc7XHJcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi91dGlsaXR5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZXF1ZXN0T3B0aW9uc01vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL1JlcXVlc3RPcHRpb25zTW9kZWwnO1xyXG5cclxuXHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb250cm9sVmFsaWRhdGlvblNlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RPcHRpb25zTW9kZWwgPSBuZXcgUmVxdWVzdE9wdGlvbnNNb2RlbCgpO1xyXG5cclxuICBjb25zdHJ1Y3RvclxyXG4gICAgKFxyXG4gICAgICBwcml2YXRlIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZVxyXG4gICAgKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgaXNDcmVhdGVkQmVmb3IgPSBmYWxzZTtcclxuXHJcbiAgQEJsb2NrVUkoKSBibG9ja1VJOiBOZ0Jsb2NrVUk7XHJcblxyXG4gIHNob3dHbG9iYWxFcnJvcihlcnJvck1lc3NhZ2U/OiBzdHJpbmcgfCBzdHJpbmdbXSwgZm9ybUlkPzogc3RyaW5nLCBkZWxldGVPbGQ/OiBib29sZWFuKSB7XHJcbiAgICBsZXQgZ2xvYmFsRXJvcnJFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYWxlcnQgYWxlcnQtSW52YWxpZFZhbGlkYXRpb24gYmctbGlnaHQtZGFuZ2VyIHRleHQtZGFuZ2VyJylcclxuICAgIGlmIChnbG9iYWxFcm9yckVsZW1lbnQubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnJlbW92ZUVsZW1lbnRzQnlDbGFzcygnYWxlcnQgYWxlcnQtSW52YWxpZFZhbGlkYXRpb24gYmctbGlnaHQtZGFuZ2VyIHRleHQtZGFuZ2VyJyk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlmICh0aGlzLmlzQ3JlYXRlZEJlZm9yID09IHRydWUpIHtcclxuICAgICAgdGhpcy5yZW1vdmVFbGVtZW50c0J5Q2xhc3MoJ2FsZXJ0IGFsZXJ0LUludmFsaWRWYWxpZGF0aW9uIGJnLWxpZ2h0LWRhbmdlciB0ZXh0LWRhbmdlcicpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogcHJlZmVyLWNvbnN0XHJcbiAgICBpZiAoIWZvcm1JZClcclxuICAgICAgZm9ybUlkID0gXCJjdXJyZW50Rm9ybVwiXHJcbiAgICB2YXIgb2JqZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZm9ybUlkKTtcclxuICAgIGNvbnN0IHRhZ05hbWUgPSAnZGl2JztcclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogcHJlZmVyLWNvbnN0XHJcbiAgICB2YXIgZWxlbWVudFRvQXBwZW5kID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWdOYW1lKTsgLy8gWW91ciB0YWcgbmFtZSBoZXJlXHJcbiAgICBsZXQgbWVzc2FnZTogc3RyaW5nIHwgc3RyaW5nW10gPSBcIlwiO1xyXG5cclxuXHJcbiAgICBpZiAoIWVycm9yTWVzc2FnZSB8fCAodHlwZW9mIGVycm9yTWVzc2FnZSA9PSBcInN0cmluZ1wiKSkge1xyXG4gICAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlJykgPT0gXCJhclwiKVxyXG4gICAgICAgIG1lc3NhZ2UgPSBlcnJvck1lc3NhZ2UgPyBlcnJvck1lc3NhZ2UgOiBcItmE2K/ZitmDINio2LnYtSDYp9mE2KPYrti32KfYoSAuINmF2YYg2YHYttmE2YMg2YLZhSDYqNin2YTZhdix2KfYrNi52YcgXCI7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBtZXNzYWdlID0gZXJyb3JNZXNzYWdlID8gZXJyb3JNZXNzYWdlIDogXCJZb3UgaGF2ZSBzb21lIHZhbGlkYXRpb24gZXJyb3JzLiBQbGVhc2UgY2hlY2sgYmVsb3dcIlxyXG4gICAgICBlbGVtZW50VG9BcHBlbmQuaW5uZXJIVE1MID0gXCI8dWwgY2xhc3M9J2xpc3QtdW5zdHlsZWQgbS0wIHB5LTMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBmcy02Jz48bGk+PGkgY2xhc3M9J2ZhIGZhLXRpbWVzLWNpcmNsZSB0ZXh0LWRhbmdlciBtZS0zIGZzLTInPjwvaT5cIiArIG1lc3NhZ2UgKyBcIjwvbGk+PC91bD5cIjtcclxuICAgICAgZWxlbWVudFRvQXBwZW5kLmNsYXNzTmFtZSArPSAnYWxlcnQgYWxlcnQtSW52YWxpZFZhbGlkYXRpb24gYmctbGlnaHQtZGFuZ2VyIHRleHQtZGFuZ2VyJztcclxuICAgICAgZWxlbWVudFRvQXBwZW5kLmlkICs9ICdlcnJvcklkJztcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBwcmVmZXItZm9yLW9mXHJcbiAgICAgIGNvbnN0IGVsZW1lbnRUb0FwcGVuID0gZWxlbWVudFRvQXBwZW5kLmNsb25lTm9kZSh0cnVlKTtcclxuICAgICAgLy8gbGV0IHRhcmdldEVsZW1lbnQgPSBvYmplY3QuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImItY29udHJvbFwiKVswXTtcclxuICAgICAgb2JqZWN0Lmluc2VydEJlZm9yZShlbGVtZW50VG9BcHBlbiwgb2JqZWN0LmZpcnN0Q2hpbGQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGVsZW1lbnRUb0FwcGVuZC5pbm5lckhUTUwgPSBcIjx1bD5cIjtcclxuXHJcbiAgICAgIGZvciAoY29uc3QgaXRlcmF0b3Igb2YgZXJyb3JNZXNzYWdlKSB7XHJcblxyXG4gICAgICAgIGVsZW1lbnRUb0FwcGVuZC5pbm5lckhUTUwgPSBcIjxsaT5cIiArIGl0ZXJhdG9yICsgXCI8L2xpPlwiO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBlbGVtZW50VG9BcHBlbmQuaW5uZXJIVE1MID0gXCI8L3VsPlwiO1xyXG4gICAgICBlbGVtZW50VG9BcHBlbmQuY2xhc3NOYW1lICs9ICdhbGVydCBhbGVydC1JbnZhbGlkVmFsaWRhdGlvbiBiZy1saWdodC1kYW5nZXIgdGV4dC1kYW5nZXInO1xyXG4gICAgICBlbGVtZW50VG9BcHBlbmQuaWQgKz0gJ2Vycm9ySWQnO1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IHByZWZlci1mb3Itb2ZcclxuICAgICAgY29uc3QgZWxlbWVudFRvQXBwZW4gPSBlbGVtZW50VG9BcHBlbmQuY2xvbmVOb2RlKHRydWUpO1xyXG4gICAgICAvLyBsZXQgdGFyZ2V0RWxlbWVudCA9IG9iamVjdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYi1jb250cm9sXCIpWzBdO1xyXG4gICAgICBvYmplY3QuaW5zZXJ0QmVmb3JlKGVsZW1lbnRUb0FwcGVuLCBvYmplY3QuZmlyc3RDaGlsZCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pc0NyZWF0ZWRCZWZvciA9IHRydWU7XHJcblxyXG4gIH1cclxuXHJcbiAgUmVtb3ZlR2xvYmFsRXJyb3IoKSB7XHJcbiAgICBjb25zdCByZW1vdmVkTGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2FsZXJ0IGFsZXJ0LUludmFsaWRWYWxpZGF0aW9uIGJnLWxpZ2h0LWRhbmdlciB0ZXh0LWRhbmdlcicpO1xyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBwcmVmZXItZm9yLW9mXHJcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgcmVtb3ZlZExpc3QubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSByZW1vdmVkTGlzdFtpbmRleF07XHJcbiAgICAgIGVsZW1lbnQucmVtb3ZlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzQ3JlYXRlZEJlZm9yID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzaG93SW5wdXRFcnJvKGVycm9yczogYW55KSB7XHJcblxyXG4gICAgLy8gc2hvdyBlcnJvciBvbiB0b3Agb2YgZm9ybSBcclxuICAgIHRoaXMuc2hvd0dsb2JhbEVycm9yKCk7XHJcbiAgICAvLyByZW1vdmUgb2xkIGVycm9yIGZyb20gc2VydmVyXHJcbiAgICB0aGlzLnJlbW92ZUVsZW1lbnRzQnlDbGFzcygnZXJyb3J0ZW1wbGV0Jyk7XHJcbiAgICAvLyBMb29waW5nIGluIGVycm9yIE9iamVjdFxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZXJyb3JzKSB7XHJcbiAgICAgIGlmIChlcnJvcnMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgIGZvciAoY29uc3QgaXRlcmF0b3Igb2YgZXJyb3JzW2tleV0pIHtcclxuICAgICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW25nLXJlZmxlY3QtbmFtZT0nICsga2V5ICsgJ10nKVswXTtcclxuICAgICAgICAgIGlmICgoaW5wdXQuYXR0cmlidXRlc1snbmctcmVmbGVjdC1uYW1lJ10udmFsdWUgYXMgc3RyaW5nKSA9PT0ga2V5KSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlRWxlbWVudHNCeUNsYXNzKCdlcnJvY2xhc3MtJyArIGtleSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHRhZ05hbWUgPSAncCdcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudFRvQXBwZW5kID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWdOYW1lKTsgLy8gWW91ciB0YWcgbmFtZSBoZXJlXHJcbiAgICAgICAgICAgIGVsZW1lbnRUb0FwcGVuZC5pbm5lckhUTUwgPSBpdGVyYXRvcjtcclxuICAgICAgICAgICAgZWxlbWVudFRvQXBwZW5kLnN0eWxlLmNvbG9yID0gJ3JlZCdcclxuICAgICAgICAgICAgZWxlbWVudFRvQXBwZW5kLmNsYXNzTmFtZSArPSAnZXJyb3J0ZW1wbGV0IGVycm9jbGFzcy0nICsga2V5O1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50VG9hcHBlbiA9IGVsZW1lbnRUb0FwcGVuZC5jbG9uZU5vZGUodHJ1ZSk7XHJcbiAgICAgICAgICAgIGlucHV0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGVsZW1lbnRUb2FwcGVuLCBpbnB1dC5sYXN0Q2hpbGQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZUVsZW1lbnRzQnlDbGFzcyhjbGFzc05hbWUpIHtcclxuICAgIGNvbnN0IGVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShjbGFzc05hbWUpO1xyXG4gICAgd2hpbGUgKGVsZW1lbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgZWxlbWVudHNbMF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbGVtZW50c1swXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgcmVuZGVyU2VydmVyRXJyb3JzKGZvcm06IEZvcm1Hcm91cCwgZXJyOiBIdHRwRXJyb3JSZXNwb25zZSwgcmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RPcHRpb25zTW9kZWwsIGZvcm1JZD86IHN0cmluZykge1xyXG4gICAgaWYgKGVyci5lcnJvciA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBlcnJvcnNBcnJheTogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICB0aGlzLnJlcXVlc3RPcHRpb25zID0gcmVxdWVzdE9wdGlvbnM7XHJcbiAgICBlcnIuZXJyb3IudmFsaWRhdGlvbl9lcnJvcnMuZm9yRWFjaCgoZWxlbWVudDogRXJyb3JNb2RlbCkgPT4ge1xyXG4gICAgICBsZXQgZmllbGROYW1lID0gZWxlbWVudC5maWVsZDtcclxuICAgICAgbGV0IGNvbnRyb2xOYW1lID0gZWxlbWVudC5jb250cm9sTmFtZTtcclxuICAgICAgbGV0IG1lc3NhZ2UgPSBlbGVtZW50Lm1lc3NhZ2U7XHJcbiAgICAgIGlmIChmb3JtID09IG51bGwpIHtcclxuICAgICAgICB0aGlzLnJlcXVlc3RPcHRpb25zLmN1c3RvbUVycm9yTWVzc2FnZSA/IHRoaXMudXRpbGl0eVNlcnZpY2Uubm90aWZ5RXJyb3JNZXNzYWdlKHRoaXMucmVxdWVzdE9wdGlvbnMuY3VzdG9tRXJyb3JNZXNzYWdlKSA6IHRoaXMudXRpbGl0eVNlcnZpY2Uubm90aWZ5RXJyb3JNZXNzYWdlKGAke21lc3NhZ2V9YCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoY29udHJvbE5hbWUgJiYgIXRoaXMuaGFzQ29udHJvbE5hbWUoZm9ybSwgY29udHJvbE5hbWUpKSB7XHJcbiAgICAgICAgZXJyb3JzQXJyYXkucHVzaChgJHtmaWVsZE5hbWV9OiAke21lc3NhZ2V9YCk7XHJcbiAgICAgICAgLy8gdGhpcy5zaG93R2xvYmFsRXJyb3IoYCR7ZmllbGROYW1lfTogJHttZXNzYWdlfWAsZm9ybUlkIClcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldEZpZWxkRXJyb3IoZm9ybSwgY29udHJvbE5hbWUsIGZpZWxkTmFtZSwgbWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKGVycm9yc0FycmF5Lmxlbmd0aCA+IDApXHJcbiAgICAgIHRoaXMuc2hvd0dsb2JhbEVycm9yKGVycm9yc0FycmF5LCBmb3JtSWQpXHJcblxyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzQ29udHJvbE5hbWUoZm9ybTogRm9ybUdyb3VwLCBjb250cm9sTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgY29udHJvbCA9IGZvcm0uZ2V0KGNvbnRyb2xOYW1lKTtcclxuICAgIHJldHVybiBjb250cm9sICE9IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEZpZWxkRXJyb3IoZm9ybTogRm9ybUdyb3VwLCBjb250cm9sTmFtZTogc3RyaW5nLCBmaWVsZE5hbWU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKSB7XHJcbiAgICBsZXQgY29udHJvbCA9IG51bGxcclxuICAgIGlmIChjb250cm9sTmFtZSlcclxuICAgICAgY29udHJvbCA9IGZvcm0uZ2V0KGNvbnRyb2xOYW1lKTtcclxuICAgIGVsc2VcclxuICAgICAgY29udHJvbCA9IGZvcm0uZ2V0KGZpZWxkTmFtZS5zcGxpdCgnLicpWzBdKTtcclxuICAgIGxldCBlcnJvcnMgPSB7IFwiZXJyb3JNYXNzYWdlXCI6IG1lc3NhZ2UgfTtcclxuICAgIGxldCBmaWVsZE5hbWVBcnJheSA9IGZpZWxkTmFtZS5zcGxpdCgnLicpO1xyXG4gICAgaWYgKGZpZWxkTmFtZUFycmF5Lmxlbmd0aCA+PSAxKSB7XHJcbiAgICAgIHN3aXRjaCAoZmllbGROYW1lQXJyYXlbZmllbGROYW1lQXJyYXkubGVuZ3RoIC0gMV0udG9Mb2NhbGVMb3dlckNhc2UoKSkge1xyXG4gICAgICAgIGNhc2UgXCJlbmdsaXNoXCI6XHJcbiAgICAgICAgICBsZXQgZW5nbGlzaENvbnRyb2wgPSBjb250cm9sLmdldChcIkVuZ2xpc2hcIilcclxuICAgICAgICAgIGVuZ2xpc2hDb250cm9sLnNldEVycm9ycyhlcnJvcnMpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBcImFyYWJpY1wiOlxyXG4gICAgICAgICAgbGV0IGFyYWJpY0NvbnRyb2wgPSBjb250cm9sLmdldChcIkFyYWJpY1wiKVxyXG4gICAgICAgICAgYXJhYmljQ29udHJvbC5zZXRFcnJvcnMoZXJyb3JzKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgY29udHJvbC5zZXRFcnJvcnMoZXJyb3JzKTtcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGZpZWxkTmFtZUFycmF5Lmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKGVycm9ycyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5yZXF1ZXN0T3B0aW9ucy5jdXN0b21FcnJvck1lc3NhZ2UgPyB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeUVycm9yTWVzc2FnZSh0aGlzLnJlcXVlc3RPcHRpb25zLmN1c3RvbUVycm9yTWVzc2FnZSkgOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeUVycm9yTWVzc2FnZShgJHttZXNzYWdlfWApXHJcbiAgICB9XHJcblxyXG5cclxuICB9XHJcblxyXG5cclxufVxyXG4iXX0=
|