@mediusinc/mng-commons 3.6.0-rc.2 → 3.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/esm2022/lib/components/layoutV2/breadcrumb.component.mjs +5 -5
  2. package/esm2022/lib/components/layoutV2/footer.component.mjs +5 -5
  3. package/esm2022/lib/components/layoutV2/main-layout.component.mjs +8 -8
  4. package/esm2022/lib/components/layoutV2/menu-item.component.mjs +5 -5
  5. package/esm2022/lib/components/layoutV2/menu.component.mjs +7 -7
  6. package/esm2022/lib/components/layoutV2/sidebar.component.mjs +9 -9
  7. package/esm2022/lib/components/layoutV2/topbar-user.component.mjs +5 -5
  8. package/esm2022/lib/components/layoutV2/topbar.component.mjs +13 -13
  9. package/esm2022/lib/components/layoutV2/version.component.mjs +5 -5
  10. package/esm2022/lib/provide-commons.mjs +3 -3
  11. package/esm2022/lib/services/commons-init.service.mjs +99 -0
  12. package/esm2022/lib/services/index.mjs +2 -1
  13. package/esm2022/lib/services/internal/commons-init.provider.mjs +1 -1
  14. package/esm2022/lib/services/internal/index.mjs +1 -2
  15. package/fesm2022/mediusinc-mng-commons.mjs +192 -192
  16. package/fesm2022/mediusinc-mng-commons.mjs.map +1 -1
  17. package/lib/components/layoutV2/breadcrumb.component.d.ts +3 -3
  18. package/lib/components/layoutV2/footer.component.d.ts +3 -3
  19. package/lib/components/layoutV2/menu-item.component.d.ts +3 -3
  20. package/lib/components/layoutV2/menu.component.d.ts +3 -3
  21. package/lib/components/layoutV2/sidebar.component.d.ts +3 -3
  22. package/lib/components/layoutV2/topbar-user.component.d.ts +3 -3
  23. package/lib/components/layoutV2/topbar.component.d.ts +5 -5
  24. package/lib/components/layoutV2/version.component.d.ts +3 -3
  25. package/lib/services/{internal/commons-init.service.d.ts → commons-init.service.d.ts} +1 -1
  26. package/lib/services/index.d.ts +1 -0
  27. package/lib/services/internal/commons-init.provider.d.ts +1 -1
  28. package/lib/services/internal/index.d.ts +0 -1
  29. package/package.json +1 -1
  30. package/esm2022/lib/services/internal/commons-init.service.mjs +0 -99
@@ -1,10 +1,10 @@
1
1
  import { MenuItem } from 'primeng/api';
2
2
  import { Observable } from 'rxjs';
3
3
  import * as i0 from "@angular/core";
4
- export declare class MngBreadcrumbComponent {
4
+ export declare class MngBreadcrumbV2Component {
5
5
  private mngCommons;
6
6
  mappedBreadcrumbs$: Observable<MenuItem[]>;
7
7
  private mapMngMenuItem;
8
- static ɵfac: i0.ɵɵFactoryDeclaration<MngBreadcrumbComponent, never>;
9
- static ɵcmp: i0.ɵɵComponentDeclaration<MngBreadcrumbComponent, "mng-breadcrumb-v2", never, {}, {}, never, never, true, never>;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<MngBreadcrumbV2Component, never>;
9
+ static ɵcmp: i0.ɵɵComponentDeclaration<MngBreadcrumbV2Component, "mng-breadcrumb-v2", never, {}, {}, never, never, true, never>;
10
10
  }
@@ -1,8 +1,8 @@
1
1
  import { MngCommonsService } from '../../services';
2
2
  import * as i0 from "@angular/core";
3
- export declare class MngFooterComponent {
3
+ export declare class MngFooterV2Component {
4
4
  mngCommons: MngCommonsService;
5
5
  currentYear: number;
6
- static ɵfac: i0.ɵɵFactoryDeclaration<MngFooterComponent, never>;
7
- static ɵcmp: i0.ɵɵComponentDeclaration<MngFooterComponent, "mng-footer-v2", never, {}, {}, never, never, true, never>;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<MngFooterV2Component, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<MngFooterV2Component, "mng-footer-v2", never, {}, {}, never, never, true, never>;
8
8
  }
@@ -1,7 +1,7 @@
1
1
  import { ElementRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
2
2
  import { MngMenuItem } from '../../models';
3
3
  import * as i0 from "@angular/core";
4
- export declare class MngMenuItemComponent implements OnInit, OnDestroy {
4
+ export declare class MngMenuItemV2Component implements OnInit, OnDestroy {
5
5
  private readonly router;
6
6
  private readonly injector;
7
7
  private readonly destroyRef;
@@ -33,6 +33,6 @@ export declare class MngMenuItemComponent implements OnInit, OnDestroy {
33
33
  private checkIfMenuItemIsAllowedFromGuard;
34
34
  private updateActiveStateFromRoute;
35
35
  private processItemChildrenVisibility;
36
- static ɵfac: i0.ɵɵFactoryDeclaration<MngMenuItemComponent, never>;
37
- static ɵcmp: i0.ɵɵComponentDeclaration<MngMenuItemComponent, "[mng-menuitem-v2]", never, { "item": { "alias": "item"; "required": true; }; "root": { "alias": "root"; "required": false; }; }, { "visibleChangeEventEmitter": "visibleChange"; }, never, never, true, never>;
36
+ static ɵfac: i0.ɵɵFactoryDeclaration<MngMenuItemV2Component, never>;
37
+ static ɵcmp: i0.ɵɵComponentDeclaration<MngMenuItemV2Component, "[mng-menuitem-v2]", never, { "item": { "alias": "item"; "required": true; }; "root": { "alias": "root"; "required": false; }; }, { "visibleChangeEventEmitter": "visibleChange"; }, never, never, true, never>;
38
38
  }
@@ -1,12 +1,12 @@
1
1
  import { OnInit } from '@angular/core';
2
2
  import { MngMenuItem } from '../../models';
3
3
  import * as i0 from "@angular/core";
4
- export declare class MngMenuComponent implements OnInit {
4
+ export declare class MngMenuV2Component implements OnInit {
5
5
  private readonly route;
6
6
  private readonly menuService;
7
7
  private readonly mngCommons;
8
8
  menuItems: Array<MngMenuItem>;
9
9
  ngOnInit(): void;
10
- static ɵfac: i0.ɵɵFactoryDeclaration<MngMenuComponent, never>;
11
- static ɵcmp: i0.ɵɵComponentDeclaration<MngMenuComponent, "mng-menu-v2", never, {}, {}, never, never, true, never>;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<MngMenuV2Component, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<MngMenuV2Component, "mng-menu-v2", never, {}, {}, never, never, true, never>;
12
12
  }
@@ -2,7 +2,7 @@ import { ElementRef, OnInit, Type } from '@angular/core';
2
2
  import { MngCommonsService } from '../../services';
3
3
  import { MngMainLayoutComponentV2Service } from './services';
4
4
  import * as i0 from "@angular/core";
5
- export declare class MngSidebarComponent implements OnInit {
5
+ export declare class MngSidebarV2Component implements OnInit {
6
6
  private config;
7
7
  mngCommons: MngCommonsService;
8
8
  layoutService: MngMainLayoutComponentV2Service;
@@ -14,6 +14,6 @@ export declare class MngSidebarComponent implements OnInit {
14
14
  onMouseEnter(): void;
15
15
  onMouseLeave(): void;
16
16
  anchor(): void;
17
- static ɵfac: i0.ɵɵFactoryDeclaration<MngSidebarComponent, never>;
18
- static ɵcmp: i0.ɵɵComponentDeclaration<MngSidebarComponent, "mng-sidebar-v2", never, {}, {}, never, never, true, never>;
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<MngSidebarV2Component, never>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<MngSidebarV2Component, "mng-sidebar-v2", never, {}, {}, never, never, true, never>;
19
19
  }
@@ -3,7 +3,7 @@ import { Observable } from 'rxjs';
3
3
  import { IUser } from '../../models';
4
4
  import { MngCommonsService } from '../../services';
5
5
  import * as i0 from "@angular/core";
6
- export declare class MngTopbarUserComponent implements OnInit {
6
+ export declare class MngTopbarUserV2Component implements OnInit {
7
7
  private readonly destroyRef;
8
8
  mngCommons: MngCommonsService;
9
9
  user?: IUser;
@@ -11,6 +11,6 @@ export declare class MngTopbarUserComponent implements OnInit {
11
11
  hrefJsVoid: import("@angular/platform-browser").SafeUrl;
12
12
  ngOnInit(): void;
13
13
  logout(user: IUser | undefined, event: Event): void;
14
- static ɵfac: i0.ɵɵFactoryDeclaration<MngTopbarUserComponent, never>;
15
- static ɵcmp: i0.ɵɵComponentDeclaration<MngTopbarUserComponent, "mng-topbar-user-component-v2", never, {}, {}, never, never, true, never>;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<MngTopbarUserV2Component, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<MngTopbarUserV2Component, "mng-topbar-user-component-v2", never, {}, {}, never, never, true, never>;
16
16
  }
@@ -1,16 +1,16 @@
1
1
  import { ElementRef, OnInit, Type } from '@angular/core';
2
2
  import { MngCommonsService } from '../../services';
3
3
  import { MngMainLayoutComponentV2Service } from './services';
4
- import { MngSidebarComponent } from './sidebar.component';
4
+ import { MngSidebarV2Component } from './sidebar.component';
5
5
  import * as i0 from "@angular/core";
6
- export declare class MngTopbarComponent implements OnInit {
6
+ export declare class MngTopbarV2Component implements OnInit {
7
7
  el: ElementRef<any>;
8
8
  mngCommons: MngCommonsService;
9
9
  mainLayoutService: MngMainLayoutComponentV2Service;
10
10
  private config;
11
11
  menuButton: ElementRef;
12
12
  topbarInjectionRef: ElementRef;
13
- appSidebar: MngSidebarComponent;
13
+ appSidebar: MngSidebarV2Component;
14
14
  breadcrumbComponent: Type<any>;
15
15
  topbarUserComponent: Type<any>;
16
16
  languages: Array<string>;
@@ -18,6 +18,6 @@ export declare class MngTopbarComponent implements OnInit {
18
18
  ngOnInit(): void;
19
19
  onMenuButtonClick(): void;
20
20
  switchLanguage(language: string): void;
21
- static ɵfac: i0.ɵɵFactoryDeclaration<MngTopbarComponent, never>;
22
- static ɵcmp: i0.ɵɵComponentDeclaration<MngTopbarComponent, "mng-topbar-v2", never, {}, {}, never, never, true, never>;
21
+ static ɵfac: i0.ɵɵFactoryDeclaration<MngTopbarV2Component, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<MngTopbarV2Component, "mng-topbar-v2", never, {}, {}, never, never, true, never>;
23
23
  }
@@ -3,7 +3,7 @@ import { VersionConfig, VersionConfigType } from '../../models';
3
3
  import { JsonPathPipe } from '../../pipes';
4
4
  import { MngVersionService } from '../../services';
5
5
  import * as i0 from "@angular/core";
6
- export declare class MngVersionComponent implements OnInit {
6
+ export declare class MngVersionV2Component implements OnInit {
7
7
  private versionService;
8
8
  private jsonPathPipe;
9
9
  initVersion?: VersionConfigType;
@@ -14,6 +14,6 @@ export declare class MngVersionComponent implements OnInit {
14
14
  loading$: import("rxjs").Observable<boolean>;
15
15
  constructor(versionService: MngVersionService, jsonPathPipe: JsonPathPipe);
16
16
  ngOnInit(): void;
17
- static ɵfac: i0.ɵɵFactoryDeclaration<MngVersionComponent, never>;
18
- static ɵcmp: i0.ɵɵComponentDeclaration<MngVersionComponent, "mng-version-v2", never, { "initVersion": { "alias": "version"; "required": false; }; }, {}, never, never, true, never>;
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<MngVersionV2Component, never>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<MngVersionV2Component, "mng-version-v2", never, { "initVersion": { "alias": "version"; "required": false; }; }, {}, never, never, true, never>;
19
19
  }
@@ -1,5 +1,5 @@
1
1
  import { Observable } from 'rxjs';
2
- import { MngCommonsInitEventEnum } from '../../models';
2
+ import { MngCommonsInitEventEnum } from '../models';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class MngCommonsInitService {
5
5
  private readonly httpClient;
@@ -9,3 +9,4 @@ export * from './view-container.component.service';
9
9
  export * from './mng-localstorage-config.service';
10
10
  export * from './log-publisher-console.service';
11
11
  export * from './logger.service';
12
+ export * from './commons-init.service';
@@ -1,3 +1,3 @@
1
1
  import { Observable } from 'rxjs';
2
- import { MngCommonsInitService } from './commons-init.service';
2
+ import { MngCommonsInitService } from '../commons-init.service';
3
3
  export declare function mngCommonsInitializerProvider(mngCommonsInit: MngCommonsInitService): () => Observable<void>;
@@ -1,2 +1 @@
1
1
  export * from './commons-init.provider';
2
- export * from './commons-init.service';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mediusinc/mng-commons",
3
- "version": "3.6.0-rc.2",
3
+ "version": "3.6.0",
4
4
  "peerDependencies": {
5
5
  "@angular/animations": "^16.0.0",
6
6
  "@angular/common": "^16.0.0",
@@ -1,99 +0,0 @@
1
- import { HttpClient } from '@angular/common/http';
2
- import { Injectable, inject } from '@angular/core';
3
- import { ReplaySubject, Subject, combineLatest, mergeMap, of, take, throwError } from 'rxjs';
4
- import { catchError, map } from 'rxjs/operators';
5
- import { MngCommonsService, MngConfigurationService, MngLoggerService, MngRouterService } from '../';
6
- import { MngCommonsInitEventEnum } from '../../models';
7
- import { MNG_COMMONS_INITIALIZER_IT, MNG_LOG_PUBLISHERS, MNG_MODULE_CONFIG_IT } from '../tokens';
8
- import * as i0 from "@angular/core";
9
- export class MngCommonsInitService {
10
- constructor() {
11
- this.httpClient = inject(HttpClient);
12
- this.logger = inject(MngLoggerService);
13
- this.logPublishers = inject(MNG_LOG_PUBLISHERS, { optional: true });
14
- this.config = inject(MngConfigurationService);
15
- this.mngCommons = inject(MngCommonsService);
16
- this.mngRouter = inject(MngRouterService);
17
- this.moduleConfig = inject(MNG_MODULE_CONFIG_IT, { optional: true });
18
- this.commonsInitializers = inject(MNG_COMMONS_INITIALIZER_IT, { optional: true });
19
- this.isInitialized = false;
20
- this.isInitializedSubject = new ReplaySubject();
21
- this.commonsInitServiceEvents = new Subject();
22
- }
23
- get events$() {
24
- return this.commonsInitServiceEvents.asObservable();
25
- }
26
- get isInitialized$() {
27
- return this.isInitializedSubject.asObservable().pipe(take(1));
28
- }
29
- initialize() {
30
- if (this.isInitialized) {
31
- return of(void 0);
32
- }
33
- this.isInitialized = true;
34
- MngLoggerService.configure({ timestampFormat: this.moduleConfig?.log?.timestampFormat });
35
- const ctxLogger = this.logger.create('MngCommonsInitService');
36
- ctxLogger.debug('Commons initialization is starting');
37
- this.commonsInitServiceEvents.next(MngCommonsInitEventEnum.CommonsInitStart);
38
- // init router
39
- this.mngRouter.initialize();
40
- // init configurations with settings from module config
41
- this.config.init(this.httpClient, this.logger);
42
- this.config.addModuleConfigSource(this.moduleConfig ?? undefined);
43
- this.commonsInitServiceEvents.next(MngCommonsInitEventEnum.ConfigSourceModuleLoaded);
44
- if (this.moduleConfig?.configuration?.projectEnvironment) {
45
- this.config.addEnvironmentSource(this.moduleConfig.configuration.projectEnvironment);
46
- this.commonsInitServiceEvents.next(MngCommonsInitEventEnum.ConfigSourceProjectEnvLoaded);
47
- }
48
- // init configurations with settings from module config for json source
49
- if (!(this.moduleConfig?.configuration?.skipJsonSourceInit ?? false)) {
50
- const jsonSourceEnableEnvProd = this.moduleConfig?.configuration?.jsonSourceEnableEnvProd ?? false;
51
- const jsonSource = this.moduleConfig?.configuration?.jsonSource;
52
- if (!jsonSource) {
53
- this.config.addJsonSource({ enableEnvProd: jsonSourceEnableEnvProd });
54
- }
55
- else if (Array.isArray(jsonSource)) {
56
- jsonSource.forEach(source => this.config.addJsonSource({ url: source, enableEnvProd: jsonSourceEnableEnvProd }));
57
- }
58
- else {
59
- this.config.addJsonSource({ url: jsonSource, enableEnvProd: jsonSourceEnableEnvProd });
60
- }
61
- this.commonsInitServiceEvents.next(MngCommonsInitEventEnum.ConfigSourceJsonAdded);
62
- }
63
- return this.config.loadJsonConfigurations().pipe(mergeMap(() => {
64
- if (!(this.moduleConfig?.configuration?.skipJsonSourceInit ?? false)) {
65
- this.commonsInitServiceEvents.next(MngCommonsInitEventEnum.ConfigSourceJsonLoaded);
66
- }
67
- // init logger
68
- MngLoggerService.init(this.config, this.logPublishers ?? []);
69
- if (this.commonsInitializers) {
70
- ctxLogger.debug('Project initializers are being initialized');
71
- return combineLatest(this.commonsInitializers.map(ci => ci())).pipe(map(res => res));
72
- }
73
- else {
74
- return of(true);
75
- }
76
- }), map(() => {
77
- ctxLogger.debug('Commons initialization is finished');
78
- this.commonsInitServiceEvents.next(MngCommonsInitEventEnum.CommonsInitEnd);
79
- this.commonsInitServiceEvents.complete();
80
- this.isInitializedSubject.next(true);
81
- return this.mngCommons.reset();
82
- }), catchError(err => {
83
- ctxLogger.warn('Commons initialization failed with error', err);
84
- this.commonsInitServiceEvents.next(MngCommonsInitEventEnum.CommonsInitError);
85
- this.commonsInitServiceEvents.complete();
86
- this.isInitializedSubject.next(false);
87
- return throwError(() => err);
88
- }));
89
- }
90
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngCommonsInitService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
91
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngCommonsInitService, providedIn: 'root' }); }
92
- }
93
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngCommonsInitService, decorators: [{
94
- type: Injectable,
95
- args: [{
96
- providedIn: 'root'
97
- }]
98
- }] });
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9ucy1pbml0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ludGVybmFsL2NvbW1vbnMtaW5pdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQWEsYUFBYSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3ZHLE9BQU8sRUFBQyxVQUFVLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0MsT0FBTyxFQUFDLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFDLE1BQU0sS0FBSyxDQUFDO0FBQ25HLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUNyRCxPQUFPLEVBQUMsMEJBQTBCLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxXQUFXLENBQUM7O0FBSy9GLE1BQU0sT0FBTyxxQkFBcUI7SUFIbEM7UUFJcUIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxXQUFNLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDbEMsa0JBQWEsR0FBRyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUM3RCxXQUFNLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDekMsZUFBVSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3ZDLGNBQVMsR0FBRyxNQUFNLENBQUMs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QUFFO1lBQ0wsU0FBUyxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDM0UsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25DLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNiLFNBQVMsQ0FBQyxJQUFJLENBQUMsMENBQTBDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzdFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RDLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDOzhHQTNGUSxxQkFBcUI7a0hBQXJCLHFCQUFxQixjQUZsQixNQUFNOzsyRkFFVCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge0luamVjdGFibGUsIGluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7T2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWVyZ2VNYXAsIG9mLCB0YWtlLCB0aHJvd0Vycm9yfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7TW5nQ29tbW9uc1NlcnZpY2UsIE1uZ0NvbmZpZ3VyYXRpb25TZXJ2aWNlLCBNbmdMb2dnZXJTZXJ2aWNlLCBNbmdSb3V0ZXJTZXJ2aWNlfSBmcm9tICcuLi8nO1xuaW1wb3J0IHtNbmdDb21tb25zSW5pdEV2ZW50RW51bX0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7TU5HX0NPTU1PTlNfSU5JVElBTElaRVJfSVQsIE1OR19MT0dfUFVCTElTSEVSUywgTU5HX01PRFVMRV9DT05GSUdfSVR9IGZyb20gJy4uL3Rva2Vucyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTW5nQ29tbW9uc0luaXRTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHBDbGllbnQgPSBpbmplY3QoSHR0cENsaWVudCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBpbmplY3QoTW5nTG9nZ2VyU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dQdWJsaXNoZXJzID0gaW5qZWN0KE1OR19MT0dfUFVCTElTSEVSUywge29wdGlvbmFsOiB0cnVlfSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWcgPSBpbmplY3QoTW5nQ29uZmlndXJhdGlvblNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbW5nQ29tbW9ucyA9IGluamVjdChNbmdDb21tb25zU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtbmdSb3V0ZXIgPSBpbmplY3QoTW5nUm91dGVyU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtb2R1bGVDb25maWcgPSBpbmplY3QoTU5HX01PRFVMRV9DT05GSUdfSVQsIHtvcHRpb25hbDogdHJ1ZX0pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29tbW9uc0luaXRpYWxpemVycyA9IGluamVjdChNTkdfQ09NTU9OU19JTklUSUFMSVpFUl9JVCwge29wdGlvbmFsOiB0cnVlfSk7XG5cbiAgICBwcml2YXRlIGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgaXNJbml0aWFsaXplZFN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigpO1xuICAgIHByaXZhdGUgY29tbW9uc0luaXRTZXJ2aWNlRXZlbnRzID0gbmV3IFN1YmplY3Q8TW5nQ29tbW9uc0luaXRFdmVudEVudW0+KCk7XG5cbiAgICBwdWJsaWMgZ2V0IGV2ZW50cyQoKTogT2JzZXJ2YWJsZTxNbmdDb21tb25zSW5pdEV2ZW50RW51bT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21tb25zSW5pdFNlcnZpY2VFdmVudHMuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc0luaXRpYWxpemVkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNJbml0aWFsaXplZFN1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlKDEpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5pdGlhbGl6ZSgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNJbml0aWFsaXplZCkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKHZvaWQgMCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcblxuICAgICAgICBNbmdMb2dnZXJTZXJ2aWNlLmNvbmZpZ3VyZSh7dGltZXN0YW1wRm9ybWF0OiB0aGlzLm1vZHVsZUNvbmZpZz8ubG9nPy50aW1lc3RhbXBGb3JtYXR9KTtcblxuICAgICAgICBjb25zdCBjdHhMb2dnZXIgPSB0aGlzLmxvZ2dlci5jcmVhdGUoJ01uZ0NvbW1vbnNJbml0U2VydmljZScpO1xuICAgICAgICBjdHhMb2dnZXIuZGVidWcoJ0NvbW1vbnMgaW5pdGlhbGl6YXRpb24gaXMgc3RhcnRpbmcnKTtcbiAgICAgICAgdGhpcy5jb21tb25zSW5pdFNlcnZpY2VFdmVudHMubmV4dChNbmdDb21tb25zSW5pdEV2ZW50RW51bS5Db21tb25zSW5pdFN0YXJ0KTtcblxuICAgICAgICAvLyBpbml0IHJvdXRlclxuICAgICAgICB0aGlzLm1uZ1JvdXRlci5pbml0aWFsaXplKCk7XG5cbiAgICAgICAgLy8gaW5pdCBjb25maWd1cmF0aW9ucyB3aXRoIHNldHRpbmdzIGZyb20gbW9kdWxlIGNvbmZpZ1xuICAgICAgICB0aGlzLmNvbmZpZy5pbml0KHRoaXMuaHR0cENsaWVudCwgdGhpcy5sb2dnZXIpO1xuICAgICAgICB0aGlzLmNvbmZpZy5hZGRNb2R1bGVDb25maWdTb3VyY2UodGhpcy5tb2R1bGVDb25maWcgPz8gdW5kZWZpbmVkKTtcbiAgICAgICAgdGhpcy5jb21tb25zSW5pdFNlcnZpY2VFdmVudHMubmV4dChNbmdDb21tb25zSW5pdEV2ZW50RW51bS5Db25maWdTb3VyY2VNb2R1bGVMb2FkZWQpO1xuICAgICAgICBpZiAodGhpcy5tb2R1bGVDb25maWc/LmNvbmZpZ3VyYXRpb24/LnByb2plY3RFbnZpcm9ubWVudCkge1xuICAgICAgICAgICAgdGhpcy5jb25maWcuYWRkRW52aXJvbm1lbnRTb3VyY2UodGhpcy5tb2R1bGVDb25maWcuY29uZmlndXJhdGlvbi5wcm9qZWN0RW52aXJvbm1lbnQpO1xuICAgICAgICAgICAgdGhpcy5jb21tb25zSW5pdFNlcnZpY2VFdmVudHMubmV4dChNbmdDb21tb25zSW5pdEV2ZW50RW51bS5Db25maWdTb3VyY2VQcm9qZWN0RW52TG9hZGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGluaXQgY29uZmlndXJhdGlvbnMgd2l0aCBzZXR0aW5ncyBmcm9tIG1vZHVsZSBjb25maWcgZm9yIGpzb24gc291cmNlXG4gICAgICAgIGlmICghKHRoaXMubW9kdWxlQ29uZmlnPy5jb25maWd1cmF0aW9uPy5za2lwSnNvblNvdXJjZUluaXQgPz8gZmFsc2UpKSB7XG4gICAgICAgICAgICBjb25zdCBqc29uU291cmNlRW5hYmxlRW52UHJvZCA9IHRoaXMubW9kdWxlQ29uZmlnPy5jb25maWd1cmF0aW9uPy5qc29uU291cmNlRW5hYmxlRW52UHJvZCA/PyBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IGpzb25Tb3VyY2UgPSB0aGlzLm1vZHVsZUNvbmZpZz8uY29uZmlndXJhdGlvbj8uanNvblNvdXJjZTtcbiAgICAgICAgICAgIGlmICghanNvblNvdXJjZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmFkZEpzb25Tb3VyY2Uoe2VuYWJsZUVudlByb2Q6IGpzb25Tb3VyY2VFbmFibGVFbnZQcm9kfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoanNvblNvdXJjZSkpIHtcbiAgICAgICAgICAgICAgICBqc29uU291cmNlLmZvckVhY2goc291cmNlID0+IHRoaXMuY29uZmlnLmFkZEpzb25Tb3VyY2Uoe3VybDogc291cmNlLCBlbmFibGVFbnZQcm9kOiBqc29uU291cmNlRW5hYmxlRW52UHJvZH0pKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcuYWRkSnNvblNvdXJjZSh7dXJsOiBqc29uU291cmNlLCBlbmFibGVFbnZQcm9kOiBqc29uU291cmNlRW5hYmxlRW52UHJvZH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jb21tb25zSW5pdFNlcnZpY2VFdmVudHMubmV4dChNbmdDb21tb25zSW5pdEV2ZW50RW51bS5Db25maWdTb3VyY2VKc29uQWRkZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmxvYWRKc29uQ29uZmlndXJhdGlvbnMoKS5waXBlKFxuICAgICAgICAgICAgbWVyZ2VNYXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghKHRoaXMubW9kdWxlQ29uZmlnPy5jb25maWd1cmF0aW9uPy5za2lwSnNvblNvdXJjZUluaXQgPz8gZmFsc2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbW9uc0luaXRTZXJ2aWNlRXZlbnRzLm5leHQoTW5nQ29tbW9uc0luaXRFdmVudEVudW0uQ29uZmlnU291cmNlSnNvbkxvYWRlZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGluaXQgbG9nZ2VyXG4gICAgICAgICAgICAgICAgTW5nTG9nZ2VyU2VydmljZS5pbml0KHRoaXMuY29uZmlnLCB0aGlzLmxvZ1B1Ymxpc2hlcnMgPz8gW10pO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29tbW9uc0luaXRpYWxpemVycykge1xuICAgICAgICAgICAgICAgICAgICBjdHhMb2dnZXIuZGVidWcoJ1Byb2plY3QgaW5pdGlhbGl6ZXJzIGFyZSBiZWluZyBpbml0aWFsaXplZCcpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdCh0aGlzLmNvbW1vbnNJbml0aWFsaXplcnMubWFwKGNpID0+IGNpKCkpKS5waXBlKG1hcChyZXMgPT4gcmVzKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjdHhMb2dnZXIuZGVidWcoJ0NvbW1vbnMgaW5pdGlhbGl6YXRpb24gaXMgZmluaXNoZWQnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNJbml0U2VydmljZUV2ZW50cy5uZXh0KE1uZ0NvbW1vbnNJbml0RXZlbnRFbnVtLkNvbW1vbnNJbml0RW5kKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNJbml0U2VydmljZUV2ZW50cy5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNJbml0aWFsaXplZFN1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tbmdDb21tb25zLnJlc2V0KCk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgICAgICAgICAgICBjdHhMb2dnZXIud2FybignQ29tbW9ucyBpbml0aWFsaXphdGlvbiBmYWlsZWQgd2l0aCBlcnJvcicsIGVycik7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21tb25zSW5pdFNlcnZpY2VFdmVudHMubmV4dChNbmdDb21tb25zSW5pdEV2ZW50RW51bS5Db21tb25zSW5pdEVycm9yKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbW1vbnNJbml0U2VydmljZUV2ZW50cy5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNJbml0aWFsaXplZFN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19