@onecx/angular-integration-interface 5.38.0 → 6.0.0-rc.11

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 (47) hide show
  1. package/fesm2022/onecx-angular-integration-interface-mocks.mjs +52 -82
  2. package/fesm2022/onecx-angular-integration-interface-mocks.mjs.map +1 -1
  3. package/fesm2022/onecx-angular-integration-interface.mjs +80 -131
  4. package/fesm2022/onecx-angular-integration-interface.mjs.map +1 -1
  5. package/lib/services/app-config-service.d.ts +0 -2
  6. package/lib/services/configuration.service.d.ts +7 -10
  7. package/lib/services/initialize-module-guard.service.d.ts +0 -1
  8. package/lib/services/portal-message.service.d.ts +0 -2
  9. package/lib/services/theme.service.d.ts +1 -10
  10. package/lib/services/user.service.d.ts +3 -7
  11. package/lib/services/workspace.service.d.ts +1 -2
  12. package/migrations.json +26 -0
  13. package/mocks/app-state-service-mock.d.ts +1 -1
  14. package/mocks/configuration-service-mock.d.ts +3 -3
  15. package/mocks/index.d.ts +2 -2
  16. package/mocks/portal-message-service-mock.d.ts +1 -1
  17. package/mocks/remote-components-service-mock.d.ts +1 -1
  18. package/mocks/user-service-mock.d.ts +3 -3
  19. package/package.json +12 -8
  20. package/esm2022/index.mjs +0 -19
  21. package/esm2022/lib/api/constants.mjs +0 -3
  22. package/esm2022/lib/api/iauth.service.mjs +0 -2
  23. package/esm2022/lib/api/injection-tokens.mjs +0 -11
  24. package/esm2022/lib/model/config-key.model.mjs +0 -31
  25. package/esm2022/lib/services/app-config-service.mjs +0 -43
  26. package/esm2022/lib/services/app-state.service.mjs +0 -47
  27. package/esm2022/lib/services/configuration.service.mjs +0 -77
  28. package/esm2022/lib/services/initialize-module-guard.service.mjs +0 -60
  29. package/esm2022/lib/services/portal-message.service.mjs +0 -49
  30. package/esm2022/lib/services/remote-components.service.mjs +0 -18
  31. package/esm2022/lib/services/shell-capability.service.mjs +0 -22
  32. package/esm2022/lib/services/theme.service.mjs +0 -48
  33. package/esm2022/lib/services/user.service.mjs +0 -93
  34. package/esm2022/lib/services/workspace.service.mjs +0 -146
  35. package/esm2022/lib/utils/add-initialize-module-guard.utils.mjs +0 -17
  36. package/esm2022/mocks/app-config-service-mock.mjs +0 -35
  37. package/esm2022/mocks/app-state-service-mock.mjs +0 -45
  38. package/esm2022/mocks/configuration-service-mock.mjs +0 -47
  39. package/esm2022/mocks/fake-topic.mjs +0 -33
  40. package/esm2022/mocks/index.mjs +0 -9
  41. package/esm2022/mocks/onecx-angular-integration-interface-mocks.mjs +0 -5
  42. package/esm2022/mocks/portal-message-service-mock.mjs +0 -38
  43. package/esm2022/mocks/remote-components-service-mock.mjs +0 -19
  44. package/esm2022/mocks/shell-capability-service-mock.mjs +0 -21
  45. package/esm2022/mocks/user-service-mock.mjs +0 -38
  46. package/esm2022/onecx-angular-integration-interface.mjs +0 -5
  47. package/mocks/fake-topic.d.ts +0 -11
@@ -1,21 +1,18 @@
1
- import { HttpClient } from '@angular/common/http';
2
1
  import { OnDestroy } from '@angular/core';
3
- import { Config, ConfigurationTopic } from '@onecx/integration-interface';
2
+ import { Config } from '@onecx/integration-interface';
4
3
  import { CONFIG_KEY } from '../model/config-key.model';
5
4
  import * as i0 from "@angular/core";
6
5
  export declare class ConfigurationService implements OnDestroy {
7
6
  private http;
8
- private defaultConfig?;
9
- config$: ConfigurationTopic;
10
- constructor(http: HttpClient, defaultConfig?: {
11
- [key: string]: string;
12
- } | undefined);
7
+ private defaultConfig;
8
+ private config$;
9
+ private semaphore;
13
10
  ngOnDestroy(): void;
14
11
  init(): Promise<boolean>;
15
12
  get isInitialized(): Promise<void>;
16
- getProperty(key: CONFIG_KEY): string | undefined;
13
+ getProperty(key: CONFIG_KEY): Promise<string | undefined>;
17
14
  setProperty(key: string, val: string): Promise<void>;
18
- getConfig(): Config | undefined;
19
- static ɵfac: i0.ɵɵFactoryDeclaration<ConfigurationService, [null, { optional: true; }]>;
15
+ getConfig(): Promise<Config | undefined>;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<ConfigurationService, never>;
20
17
  static ɵprov: i0.ɵɵInjectableDeclaration<ConfigurationService>;
21
18
  }
@@ -12,7 +12,6 @@ export declare class InitializeModuleGuard implements CanActivate {
12
12
  protected userService: UserService;
13
13
  private SUPPORTED_LANGS;
14
14
  private DEFAULT_LANG;
15
- constructor(translateService: TranslateService, configService: ConfigurationService, appStateService: AppStateService, userService: UserService);
16
15
  canActivate(_route: ActivatedRouteSnapshot, _state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree;
17
16
  getBestMatchLanguage(lang: string): string;
18
17
  loadTranslations(): Observable<boolean>;
@@ -1,5 +1,4 @@
1
1
  import { OnDestroy } from '@angular/core';
2
- import { TranslateService } from '@ngx-translate/core';
3
2
  import { MessageTopic } from '@onecx/integration-interface';
4
3
  import * as i0 from "@angular/core";
5
4
  export type Message = {
@@ -19,7 +18,6 @@ export type Message = {
19
18
  };
20
19
  export declare class PortalMessageService implements OnDestroy {
21
20
  private translateService;
22
- constructor(translateService: TranslateService);
23
21
  message$: MessageTopic;
24
22
  success(msg: Message): void;
25
23
  info(msg: Message): void;
@@ -1,17 +1,8 @@
1
- import { HttpClient } from '@angular/common/http';
2
1
  import { OnDestroy } from '@angular/core';
3
- import { CurrentThemeTopic, Theme } from '@onecx/integration-interface';
4
- import { ConfigurationService } from './configuration.service';
2
+ import { CurrentThemeTopic } from '@onecx/integration-interface';
5
3
  import * as i0 from "@angular/core";
6
4
  export declare class ThemeService implements OnDestroy {
7
- private configService;
8
- private http;
9
- baseUrlV1: string;
10
5
  currentTheme$: CurrentThemeTopic;
11
- constructor(configService: ConfigurationService, http: HttpClient);
12
- getThemeHref(themeId: string): string;
13
- loadAndApplyTheme(themeName: string): import("rxjs").Observable<Theme>;
14
- apply(theme: Theme): Promise<void>;
15
6
  ngOnDestroy(): void;
16
7
  static ɵfac: i0.ɵɵFactoryDeclaration<ThemeService, never>;
17
8
  static ɵprov: i0.ɵɵInjectableDeclaration<ThemeService>;
@@ -1,20 +1,16 @@
1
1
  import { OnDestroy } from '@angular/core';
2
- import { BehaviorSubject, Observable } from 'rxjs';
3
2
  import { UserProfileTopic } from '@onecx/integration-interface';
3
+ import { BehaviorSubject } from 'rxjs';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class UserService implements OnDestroy {
6
6
  profile$: UserProfileTopic;
7
- permissions$: BehaviorSubject<string[]>;
8
7
  lang$: BehaviorSubject<string>;
9
- private effectivePermissions$;
10
8
  private permissionsTopic$;
11
- private oldStylePermissionsInitialized;
12
9
  constructor();
13
10
  ngOnDestroy(): void;
14
- getPermissions(): Observable<string[]>;
15
- hasPermission(permissionKey: string | string[]): boolean;
11
+ getPermissions(): import("rxjs").Observable<string[]>;
12
+ hasPermission(permissionKey: string | string[] | undefined): Promise<boolean>;
16
13
  private determineLanguage;
17
- private extractPermissions;
18
14
  get isInitialized(): Promise<void>;
19
15
  static ɵfac: i0.ɵɵFactoryDeclaration<UserService, never>;
20
16
  static ɵprov: i0.ɵɵInjectableDeclaration<UserService>;
@@ -1,5 +1,5 @@
1
- import { AppStateService } from './app-state.service';
2
1
  import { Observable } from 'rxjs';
2
+ import { AppStateService } from './app-state.service';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class WorkspaceService {
5
5
  protected appStateService: AppStateService;
@@ -7,7 +7,6 @@ export declare class WorkspaceService {
7
7
  private aliasEnd;
8
8
  private paramStart;
9
9
  private paramEnd;
10
- constructor(appStateService: AppStateService);
11
10
  getUrl(productName: string, appId: string, endpointName?: string, endpointParameters?: Record<string, unknown>): Observable<string>;
12
11
  doesUrlExistFor(productName: string, appId: string, endpointName?: string): Observable<boolean>;
13
12
  private constructBaseUrlFromWorkspace;
@@ -0,0 +1,26 @@
1
+ {
2
+ "generators": {
3
+ "migrate-onecx-to-v6": {
4
+ "cli": "nx",
5
+ "version": "6.0.0",
6
+ "description": "Update package json to Angular 19, PrimeNG 19, OneCX versions to v6 and other dependencies to be compatible with Angular 19.",
7
+ "factory": "migrations/v6/migrate-onecx-to-v6"
8
+ }
9
+ },
10
+ "packageJsonUpdates": {
11
+ "6.0.0": {
12
+ "version": "6.0.0",
13
+ "packages": {
14
+ "@angular/cli": {
15
+ "version": "~19.0.0",
16
+ "alwaysAddToPackageJson": false
17
+ },
18
+ "@nx/angular": {
19
+ "version": "~20.3.0",
20
+ "alwaysAddToPackageJson": false
21
+ }
22
+ }
23
+ },
24
+ "version": "null"
25
+ }
26
+ }
@@ -1,6 +1,6 @@
1
1
  import { CurrentLocationTopicPayload, MfeInfo, PageInfo, Workspace } from '@onecx/integration-interface';
2
2
  import { AppStateService } from '@onecx/angular-integration-interface';
3
- import { FakeTopic } from './fake-topic';
3
+ import { FakeTopic } from '@onecx/accelerator';
4
4
  import * as i0 from "@angular/core";
5
5
  /**
6
6
  * @deprecated use provideAppStateServiceMock()
@@ -1,7 +1,7 @@
1
1
  import { Config } from '@onecx/integration-interface';
2
2
  import { CONFIG_KEY } from '@onecx/angular-integration-interface';
3
- import { FakeTopic } from './fake-topic';
4
3
  import { ConfigurationService } from '@onecx/angular-integration-interface';
4
+ import { FakeTopic } from '@onecx/accelerator';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare function provideConfigurationServiceMock(): (typeof ConfigurationServiceMock | {
7
7
  provide: typeof ConfigurationService;
@@ -14,9 +14,9 @@ export declare class ConfigurationServiceMock {
14
14
  constructor();
15
15
  init(config?: Config): Promise<boolean>;
16
16
  get isInitialized(): Promise<void>;
17
- getProperty(key: CONFIG_KEY): string | undefined;
17
+ getProperty(key: CONFIG_KEY): Promise<string | undefined>;
18
18
  setProperty(key: string, val: string): Promise<void>;
19
- getConfig(): Config | undefined;
19
+ getConfig(): Promise<Config | undefined>;
20
20
  static ɵfac: i0.ɵɵFactoryDeclaration<ConfigurationServiceMock, never>;
21
21
  static ɵprov: i0.ɵɵInjectableDeclaration<ConfigurationServiceMock>;
22
22
  }
package/mocks/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  export * from './app-config-service-mock';
2
2
  export * from './app-state-service-mock';
3
- export * from './fake-topic';
4
3
  export * from './configuration-service-mock';
5
4
  export * from './portal-message-service-mock';
6
5
  export * from './remote-components-service-mock';
7
- export * from './shell-capability-service-mock';
8
6
  export * from './user-service-mock';
7
+ export * from './shell-capability-service-mock';
8
+ export * from '@onecx/accelerator';
@@ -1,4 +1,4 @@
1
- import { FakeTopic } from './fake-topic';
1
+ import { FakeTopic } from '@onecx/accelerator';
2
2
  import { Message as PortalMessage, PortalMessageService } from '@onecx/angular-integration-interface';
3
3
  import { Message } from '@onecx/integration-interface';
4
4
  import * as i0 from "@angular/core";
@@ -1,6 +1,6 @@
1
- import { FakeTopic } from './fake-topic';
2
1
  import { RemoteComponentsInfo } from '@onecx/integration-interface';
3
2
  import { RemoteComponentsService } from '@onecx/angular-integration-interface';
3
+ import { FakeTopic } from '@onecx/accelerator';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare function provideRemoteComponentsServiceMock(): (typeof RemoteComponentsServiceMock | {
6
6
  provide: typeof RemoteComponentsService;
@@ -1,6 +1,6 @@
1
1
  import { BehaviorSubject } from 'rxjs';
2
2
  import { UserProfile } from '@onecx/integration-interface';
3
- import { FakeTopic } from './fake-topic';
3
+ import { FakeTopic } from '@onecx/accelerator';
4
4
  import { UserService } from '@onecx/angular-integration-interface';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare function provideUserServiceMock(): (typeof UserServiceMock | {
@@ -9,9 +9,9 @@ export declare function provideUserServiceMock(): (typeof UserServiceMock | {
9
9
  })[];
10
10
  export declare class UserServiceMock {
11
11
  profile$: FakeTopic<UserProfile>;
12
- permissions$: BehaviorSubject<string[]>;
12
+ permissionsTopic$: FakeTopic<string[]>;
13
13
  lang$: BehaviorSubject<string>;
14
- hasPermission(permissionKey: string | string[]): boolean;
14
+ hasPermission(permissionKey: string | string[]): Promise<boolean>;
15
15
  determineLanguage(): string | undefined;
16
16
  extractPermissions(userProfile: UserProfile): string[] | null;
17
17
  get isInitialized(): Promise<void>;
package/package.json CHANGED
@@ -1,11 +1,16 @@
1
1
  {
2
2
  "name": "@onecx/angular-integration-interface",
3
- "version": "5.38.0",
3
+ "version": "6.0.0-rc.11",
4
4
  "license": "Apache-2.0",
5
5
  "peerDependencies": {
6
- "@angular/core": "^18.0.5",
7
- "@onecx/integration-interface": "^5.38.0",
8
- "rxjs": "~7.8.1"
6
+ "@angular/core": "^19.0.0",
7
+ "@onecx/integration-interface": "^6.0.0-rc.11",
8
+ "@onecx/accelerator": "^6.0.0-rc.11",
9
+ "@onecx/nx-migration-utils": "^6.0.0-rc.11",
10
+ "rxjs": "~7.8.1",
11
+ "@nx/devkit": "^20.3.0",
12
+ "@phenomnomnominal/tsquery": "^6",
13
+ "ts-semaphore": "^1.0.0"
9
14
  },
10
15
  "dependencies": {
11
16
  "tslib": "^2.3.0"
@@ -13,6 +18,9 @@
13
18
  "publishConfig": {
14
19
  "access": "public"
15
20
  },
21
+ "nx-migrations": {
22
+ "migrations": "./migrations.json"
23
+ },
16
24
  "module": "fesm2022/onecx-angular-integration-interface.mjs",
17
25
  "typings": "index.d.ts",
18
26
  "exports": {
@@ -21,14 +29,10 @@
21
29
  },
22
30
  ".": {
23
31
  "types": "./index.d.ts",
24
- "esm2022": "./esm2022/onecx-angular-integration-interface.mjs",
25
- "esm": "./esm2022/onecx-angular-integration-interface.mjs",
26
32
  "default": "./fesm2022/onecx-angular-integration-interface.mjs"
27
33
  },
28
34
  "./mocks": {
29
35
  "types": "./mocks/index.d.ts",
30
- "esm2022": "./esm2022/mocks/onecx-angular-integration-interface-mocks.mjs",
31
- "esm": "./esm2022/mocks/onecx-angular-integration-interface-mocks.mjs",
32
36
  "default": "./fesm2022/onecx-angular-integration-interface-mocks.mjs"
33
37
  }
34
38
  },
package/esm2022/index.mjs DELETED
@@ -1,19 +0,0 @@
1
- // services
2
- export * from './lib/services/app-config-service';
3
- export * from './lib/services/app-state.service';
4
- export * from './lib/services/configuration.service';
5
- export * from './lib/services/user.service';
6
- export * from './lib/services/portal-message.service';
7
- export * from './lib/services/theme.service';
8
- export * from './lib/services/remote-components.service';
9
- export * from './lib/services/initialize-module-guard.service';
10
- export * from './lib/services/workspace.service';
11
- export * from './lib/services/shell-capability.service';
12
- // models
13
- export * from './lib/model/config-key.model';
14
- // core
15
- export * from './lib/api/iauth.service';
16
- export * from './lib/api/injection-tokens';
17
- // utils
18
- export * from './lib/utils/add-initialize-module-guard.utils';
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItaW50ZWdyYXRpb24taW50ZXJmYWNlL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxXQUFXO0FBQ1gsY0FBYyxtQ0FBbUMsQ0FBQTtBQUNqRCxjQUFjLGtDQUFrQyxDQUFBO0FBQ2hELGNBQWMsc0NBQXNDLENBQUE7QUFDcEQsY0FBYyw2QkFBNkIsQ0FBQTtBQUMzQyxjQUFjLHVDQUF1QyxDQUFBO0FBQ3JELGNBQWMsOEJBQThCLENBQUE7QUFDNUMsY0FBYywwQ0FBMEMsQ0FBQTtBQUN4RCxjQUFjLGdEQUFnRCxDQUFBO0FBQzlELGNBQWMsa0NBQWtDLENBQUE7QUFDaEQsY0FBYyx5Q0FBeUMsQ0FBQTtBQUV2RCxTQUFTO0FBQ1QsY0FBYyw4QkFBOEIsQ0FBQTtBQUU1QyxPQUFPO0FBQ1AsY0FBYyx5QkFBeUIsQ0FBQTtBQUN2QyxjQUFjLDRCQUE0QixDQUFBO0FBRTFDLFFBQVE7QUFDUixjQUFjLCtDQUErQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gc2VydmljZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2FwcC1jb25maWctc2VydmljZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2FwcC1zdGF0ZS5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvY29uZmlndXJhdGlvbi5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdXNlci5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvcG9ydGFsLW1lc3NhZ2Uuc2VydmljZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3RoZW1lLnNlcnZpY2UnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9yZW1vdGUtY29tcG9uZW50cy5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvaW5pdGlhbGl6ZS1tb2R1bGUtZ3VhcmQuc2VydmljZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3dvcmtzcGFjZS5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvc2hlbGwtY2FwYWJpbGl0eS5zZXJ2aWNlJ1xuXG4vLyBtb2RlbHNcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVsL2NvbmZpZy1rZXkubW9kZWwnXG5cbi8vIGNvcmVcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9pYXV0aC5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpL2luamVjdGlvbi10b2tlbnMnXG5cbi8vIHV0aWxzXG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9hZGQtaW5pdGlhbGl6ZS1tb2R1bGUtZ3VhcmQudXRpbHMnXG5cbmV4cG9ydCB7IE1mZUluZm8sIFRoZW1lIH0gZnJvbSAnQG9uZWN4L2ludGVncmF0aW9uLWludGVyZmFjZSdcbiJdfQ==
@@ -1,3 +0,0 @@
1
- export const API_PREFIX = 'portal-api';
2
- export const DEFAULT_LANG = 'en';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWludGVncmF0aW9uLWludGVyZmFjZS9zcmMvbGliL2FwaS9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQTtBQUV0QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEFQSV9QUkVGSVggPSAncG9ydGFsLWFwaSdcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTEFORyA9ICdlbidcbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWF1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1pbnRlZ3JhdGlvbi1pbnRlcmZhY2Uvc3JjL2xpYi9hcGkvaWF1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElBdXRoU2VydmljZSB7XG4gIGxvZ291dCgpOiB2b2lkXG5cbiAgLyoqXG4gICAqIFVuaXF1ZSBuYW1lIG9mIHRoaXMgYXV0aCBwcm92aWRlcjogZS5nLiBtb2NrQXV0aFByb3ZpZGVyLCBLZXljbG9ha1Byb3ZpZGVyLi5cbiAgICovXG4gIGdldEF1dGhQcm92aWRlck5hbWUoKTogc3RyaW5nXG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemF0aW9uIG1ldGhvZCBvZiB0aGUgQXV0aCBzZXJ2aWNlLiBPbmNlIHJlc29sdmVkLCBhbGwgdXNlciBkYXRhIE1VU1QgYmUgYXZhaWxhYmxlLlxuICAgKi9cbiAgaW5pdCgpOiBQcm9taXNlPGJvb2xlYW4+XG5cbiAgZ2V0SWRUb2tlbigpOiBzdHJpbmcgfCBudWxsXG5cbiAgaGFzUm9sZShfcm9sZTogc3RyaW5nKTogYm9vbGVhblxuXG4gIGdldFVzZXJSb2xlcygpOiBzdHJpbmdbXVxufVxuIl19
@@ -1,11 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- export const APP_CONFIG = new InjectionToken('APP_CONFIG');
3
- /**
4
- * @deprecated
5
- * Please do not inject the auth service at all.
6
- * There are better ways to achieve what you want. Please use permission service or user service.
7
- */
8
- export const AUTH_SERVICE = new InjectionToken('AUTH_SERVICE');
9
- export const SANITY_CHECK = new InjectionToken('OCXSANITY_CHECK');
10
- export const APPLICATION_NAME = new InjectionToken('APPLICATION_NAME');
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0aW9uLXRva2Vucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1pbnRlZ3JhdGlvbi1pbnRlcmZhY2Uvc3JjL2xpYi9hcGkvaW5qZWN0aW9uLXRva2Vucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBZTlDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxJQUFJLGNBQWMsQ0FBWSxZQUFZLENBQUMsQ0FBQTtBQUVyRTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLElBQUksY0FBYyxDQUFlLGNBQWMsQ0FBQyxDQUFBO0FBRTVFLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLGNBQWMsQ0FBUyxpQkFBaUIsQ0FBQyxDQUFBO0FBRXpFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksY0FBYyxDQUFTLGtCQUFrQixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBJQXV0aFNlcnZpY2UgfSBmcm9tICcuL2lhdXRoLnNlcnZpY2UnXG5cbmV4cG9ydCBpbnRlcmZhY2UgTGliQ29uZmlnIHtcbiAgYXBwSWQ6IHN0cmluZ1xuICBwb3J0YWxJZDogc3RyaW5nXG4gIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgdGtpdC1tb2R1bGUgd2lsbCBub3QgdHJ5IHRvIGxvYWQgcmVtb3RlIGVudiB2YWx1ZXMgZnJvbSBzZXJ2ZXIoR0VUIC9hc3NldHMvZW52Lmpzb24pXG4gICAqL1xuICBza2lwUmVtb3RlQ29uZmlnTG9hZDogYm9vbGVhblxuICAvKipcbiAgICogVVJMIGZyb20gd2hpY2ggdGhlIHJlbW90ZSBjb25maWcgd2lsbCBiZSBsb2FkZWQsIGRlZmF1bHQ6ICcvYXNzZXRzL2Vudi5qc29uJ1xuICAgKi9cbiAgcmVtb3RlQ29uZmlnVVJMOiBzdHJpbmdcbn1cbmV4cG9ydCBjb25zdCBBUFBfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPExpYkNvbmZpZz4oJ0FQUF9DT05GSUcnKVxuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBQbGVhc2UgZG8gbm90IGluamVjdCB0aGUgYXV0aCBzZXJ2aWNlIGF0IGFsbC5cbiAqIFRoZXJlIGFyZSBiZXR0ZXIgd2F5cyB0byBhY2hpZXZlIHdoYXQgeW91IHdhbnQuIFBsZWFzZSB1c2UgcGVybWlzc2lvbiBzZXJ2aWNlIG9yIHVzZXIgc2VydmljZS5cbiAqL1xuZXhwb3J0IGNvbnN0IEFVVEhfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJQXV0aFNlcnZpY2U+KCdBVVRIX1NFUlZJQ0UnKVxuXG5leHBvcnQgY29uc3QgU0FOSVRZX0NIRUNLID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ09DWFNBTklUWV9DSEVDSycpXG5cbmV4cG9ydCBjb25zdCBBUFBMSUNBVElPTl9OQU1FID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ0FQUExJQ0FUSU9OX05BTUUnKVxuIl19
@@ -1,31 +0,0 @@
1
- export var CONFIG_KEY;
2
- (function (CONFIG_KEY) {
3
- CONFIG_KEY["TKIT_PORTAL_DEFAULT_THEME"] = "TKIT_PORTAL_DEFAULT_THEME";
4
- CONFIG_KEY["TKIT_PORTAL_DISABLE_THEME_MANAGEMENT"] = "TKIT_PORTAL_DISABLE_THEME_MANAGEMENT";
5
- CONFIG_KEY["TKIT_PORTAL_THEME_SERVER_URL"] = "TKIT_PORTAL_THEME_SERVER_URL";
6
- CONFIG_KEY["TKIT_TOKEN_ROLE_CLAIM_NAME"] = "TKIT_TOKEN_ROLE_CLAIM_NAME";
7
- CONFIG_KEY["TKIT_PORTAL_ID"] = "TKIT_PORTAL_ID";
8
- CONFIG_KEY["TKIT_SUPPORTED_LANGUAGES"] = "TKIT_SUPPORTED_LANGUAGES";
9
- CONFIG_KEY["TKIT_SEARCH_BASE_URL"] = "TKIT_SEARCH_BASE_URL";
10
- CONFIG_KEY["APP_BASE_HREF"] = "APP_BASE_HREF";
11
- CONFIG_KEY["KEYCLOAK_REALM"] = "KEYCLOAK_REALM";
12
- CONFIG_KEY["KEYCLOAK_ENABLE_SILENT_SSO"] = "KEYCLOAK_ENABLE_SILENT_SSO";
13
- CONFIG_KEY["KEYCLOAK_URL"] = "KEYCLOAK_URL";
14
- CONFIG_KEY["KEYCLOAK_CLIENT_ID"] = "KEYCLOAK_CLIENT_ID";
15
- CONFIG_KEY["ONECX_PORTAL_FAVORITES_DISABLED"] = "ONECX_PORTAL_FAVORITES_DISABLED";
16
- CONFIG_KEY["ONECX_PORTAL_FEEDBACK_DISABLED"] = "ONECX_PORTAL_FEEDBACK_DISABLED";
17
- CONFIG_KEY["ONECX_PORTAL_SEARCH_DISABLED"] = "ONECX_PORTAL_SEARCH_DISABLED";
18
- CONFIG_KEY["ONECX_PORTAL_SUPPORT_TICKET_DISABLED"] = "ONECX_PORTAL_SUPPORT_TICKET_DISABLED";
19
- CONFIG_KEY["ONECX_PORTAL_ANNOUNCEMENTS_DISABLED"] = "ONECX_PORTAL_ANNOUNCEMENTS_DISABLED";
20
- CONFIG_KEY["ONECX_PORTAL_PASSWORD_CHANGE_DISABLED"] = "ONECX_PORTAL_PASSWORD_CHANGE_DISABLED";
21
- CONFIG_KEY["ONECX_PORTAL_SETTINGS_DISABLED"] = "ONECX_PORTAL_SETTINGS_DISABLED";
22
- CONFIG_KEY["ONECX_PORTAL_MY_ROLES_PERMISSIONS_DISABLED"] = "ONECX_PORTAL_MY_ROLES_PERMISSIONS_DISABLED";
23
- CONFIG_KEY["ONECX_PORTAL_HELP_DISABLED"] = "ONECX_PORTAL_HELP_DISABLED";
24
- CONFIG_KEY["ONECX_PORTAL_SEARCH_BUTTONS_REVERSED"] = "ONECX_PORTAL_SEARCH_BUTTONS_REVERSED";
25
- CONFIG_KEY["APP_VERSION"] = "APP_VERSION";
26
- CONFIG_KEY["IS_SHELL"] = "IS_SHELL";
27
- CONFIG_KEY["AUTH_SERVICE"] = "AUTH_SERVICE";
28
- CONFIG_KEY["AUTH_SERVICE_CUSTOM_URL"] = "AUTH_SERVICE_CUSTOM_URL";
29
- CONFIG_KEY["AUTH_SERVICE_CUSTOM_MODULE_NAME"] = "AUTH_SERVICE_CUSTOM_MODULE_NAME";
30
- })(CONFIG_KEY || (CONFIG_KEY = {}));
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWtleS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1pbnRlZ3JhdGlvbi1pbnRlcmZhY2Uvc3JjL2xpYi9tb2RlbC9jb25maWcta2V5Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLFVBNEJYO0FBNUJELFdBQVksVUFBVTtJQUNwQixxRUFBdUQsQ0FBQTtJQUN2RCwyRkFBNkUsQ0FBQTtJQUM3RSwyRUFBNkQsQ0FBQTtJQUM3RCx1RUFBeUQsQ0FBQTtJQUN6RCwrQ0FBaUMsQ0FBQTtJQUNqQyxtRUFBcUQsQ0FBQTtJQUNyRCwyREFBNkMsQ0FBQTtJQUM3Qyw2Q0FBK0IsQ0FBQTtJQUMvQiwrQ0FBaUMsQ0FBQTtJQUNqQyx1RUFBeUQsQ0FBQTtJQUN6RCwyQ0FBNkIsQ0FBQTtJQUM3Qix1REFBeUMsQ0FBQTtJQUN6QyxpRkFBbUUsQ0FBQTtJQUNuRSwrRUFBaUUsQ0FBQTtJQUNqRSwyRUFBNkQsQ0FBQTtJQUM3RCwyRkFBNkUsQ0FBQTtJQUM3RSx5RkFBMkUsQ0FBQTtJQUMzRSw2RkFBK0UsQ0FBQTtJQUMvRSwrRUFBaUUsQ0FBQTtJQUNqRSx1R0FBeUYsQ0FBQTtJQUN6Rix1RUFBeUQsQ0FBQTtJQUN6RCwyRkFBNkUsQ0FBQTtJQUM3RSx5Q0FBMkIsQ0FBQTtJQUMzQixtQ0FBcUIsQ0FBQTtJQUNyQiwyQ0FBNkIsQ0FBQTtJQUM3QixpRUFBbUQsQ0FBQTtJQUNuRCxpRkFBbUUsQ0FBQTtBQUNyRSxDQUFDLEVBNUJXLFVBQVUsS0FBVixVQUFVLFFBNEJyQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIENPTkZJR19LRVkge1xuICBUS0lUX1BPUlRBTF9ERUZBVUxUX1RIRU1FID0gJ1RLSVRfUE9SVEFMX0RFRkFVTFRfVEhFTUUnLFxuICBUS0lUX1BPUlRBTF9ESVNBQkxFX1RIRU1FX01BTkFHRU1FTlQgPSAnVEtJVF9QT1JUQUxfRElTQUJMRV9USEVNRV9NQU5BR0VNRU5UJyxcbiAgVEtJVF9QT1JUQUxfVEhFTUVfU0VSVkVSX1VSTCA9ICdUS0lUX1BPUlRBTF9USEVNRV9TRVJWRVJfVVJMJyxcbiAgVEtJVF9UT0tFTl9ST0xFX0NMQUlNX05BTUUgPSAnVEtJVF9UT0tFTl9ST0xFX0NMQUlNX05BTUUnLFxuICBUS0lUX1BPUlRBTF9JRCA9ICdUS0lUX1BPUlRBTF9JRCcsXG4gIFRLSVRfU1VQUE9SVEVEX0xBTkdVQUdFUyA9ICdUS0lUX1NVUFBPUlRFRF9MQU5HVUFHRVMnLFxuICBUS0lUX1NFQVJDSF9CQVNFX1VSTCA9ICdUS0lUX1NFQVJDSF9CQVNFX1VSTCcsXG4gIEFQUF9CQVNFX0hSRUYgPSAnQVBQX0JBU0VfSFJFRicsXG4gIEtFWUNMT0FLX1JFQUxNID0gJ0tFWUNMT0FLX1JFQUxNJyxcbiAgS0VZQ0xPQUtfRU5BQkxFX1NJTEVOVF9TU08gPSAnS0VZQ0xPQUtfRU5BQkxFX1NJTEVOVF9TU08nLFxuICBLRVlDTE9BS19VUkwgPSAnS0VZQ0xPQUtfVVJMJyxcbiAgS0VZQ0xPQUtfQ0xJRU5UX0lEID0gJ0tFWUNMT0FLX0NMSUVOVF9JRCcsXG4gIE9ORUNYX1BPUlRBTF9GQVZPUklURVNfRElTQUJMRUQgPSAnT05FQ1hfUE9SVEFMX0ZBVk9SSVRFU19ESVNBQkxFRCcsXG4gIE9ORUNYX1BPUlRBTF9GRUVEQkFDS19ESVNBQkxFRCA9ICdPTkVDWF9QT1JUQUxfRkVFREJBQ0tfRElTQUJMRUQnLFxuICBPTkVDWF9QT1JUQUxfU0VBUkNIX0RJU0FCTEVEID0gJ09ORUNYX1BPUlRBTF9TRUFSQ0hfRElTQUJMRUQnLFxuICBPTkVDWF9QT1JUQUxfU1VQUE9SVF9USUNLRVRfRElTQUJMRUQgPSAnT05FQ1hfUE9SVEFMX1NVUFBPUlRfVElDS0VUX0RJU0FCTEVEJyxcbiAgT05FQ1hfUE9SVEFMX0FOTk9VTkNFTUVOVFNfRElTQUJMRUQgPSAnT05FQ1hfUE9SVEFMX0FOTk9VTkNFTUVOVFNfRElTQUJMRUQnLFxuICBPTkVDWF9QT1JUQUxfUEFTU1dPUkRfQ0hBTkdFX0RJU0FCTEVEID0gJ09ORUNYX1BPUlRBTF9QQVNTV09SRF9DSEFOR0VfRElTQUJMRUQnLFxuICBPTkVDWF9QT1JUQUxfU0VUVElOR1NfRElTQUJMRUQgPSAnT05FQ1hfUE9SVEFMX1NFVFRJTkdTX0RJU0FCTEVEJyxcbiAgT05FQ1hfUE9SVEFMX01ZX1JPTEVTX1BFUk1JU1NJT05TX0RJU0FCTEVEID0gJ09ORUNYX1BPUlRBTF9NWV9ST0xFU19QRVJNSVNTSU9OU19ESVNBQkxFRCcsXG4gIE9ORUNYX1BPUlRBTF9IRUxQX0RJU0FCTEVEID0gJ09ORUNYX1BPUlRBTF9IRUxQX0RJU0FCTEVEJyxcbiAgT05FQ1hfUE9SVEFMX1NFQVJDSF9CVVRUT05TX1JFVkVSU0VEID0gJ09ORUNYX1BPUlRBTF9TRUFSQ0hfQlVUVE9OU19SRVZFUlNFRCcsXG4gIEFQUF9WRVJTSU9OID0gJ0FQUF9WRVJTSU9OJyxcbiAgSVNfU0hFTEwgPSAnSVNfU0hFTEwnLFxuICBBVVRIX1NFUlZJQ0UgPSAnQVVUSF9TRVJWSUNFJyxcbiAgQVVUSF9TRVJWSUNFX0NVU1RPTV9VUkwgPSAnQVVUSF9TRVJWSUNFX0NVU1RPTV9VUkwnLFxuICBBVVRIX1NFUlZJQ0VfQ1VTVE9NX01PRFVMRV9OQU1FID0gJ0FVVEhfU0VSVklDRV9DVVNUT01fTU9EVUxFX05BTUUnLFxufVxuIl19
@@ -1,43 +0,0 @@
1
- import { Location } from '@angular/common';
2
- import { HttpClient } from '@angular/common/http';
3
- import { Injectable } from '@angular/core';
4
- import { BehaviorSubject, firstValueFrom } from 'rxjs';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/common/http";
7
- export class AppConfigService {
8
- constructor(http) {
9
- this.http = http;
10
- this.config$ = new BehaviorSubject({});
11
- }
12
- init(baseUrl) {
13
- return new Promise((resolve, reject) => {
14
- const loadConfigPromise = firstValueFrom(this.http.get(Location.joinWithSlash(baseUrl, 'assets/env.json')));
15
- loadConfigPromise
16
- .then(async (config) => {
17
- if (config) {
18
- this.config$.next(config);
19
- resolve();
20
- }
21
- })
22
- .catch((e) => {
23
- console.log(`Failed to load env configuration`);
24
- reject(e);
25
- });
26
- });
27
- }
28
- getProperty(key) {
29
- return this.config$.getValue()?.[key];
30
- }
31
- setProperty(key, val) {
32
- this.config$.next({ ...this.config$.value, [key]: val });
33
- }
34
- getConfig() {
35
- return this.config$.getValue();
36
- }
37
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppConfigService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
38
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppConfigService }); }
39
- }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppConfigService, decorators: [{
41
- type: Injectable
42
- }], ctorParameters: () => [{ type: i1.HttpClient }] });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWNvbmZpZy1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWludGVncmF0aW9uLWludGVyZmFjZS9zcmMvbGliL3NlcnZpY2VzL2FwcC1jb25maWctc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUE7OztBQUd0RCxNQUFNLE9BQU8sZ0JBQWdCO0lBRzNCLFlBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFGcEMsWUFBTyxHQUFHLElBQUksZUFBZSxDQUE0QixFQUFFLENBQUMsQ0FBQTtJQUVyQixDQUFDO0lBRWpDLElBQUksQ0FBQyxPQUFlO1FBQ3pCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsTUFBTSxpQkFBaUIsR0FBb0IsY0FBYyxDQUN2RCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBUyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQzFFLENBQUE7WUFFRCxpQkFBaUI7aUJBQ2QsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRTtnQkFDckIsSUFBSSxNQUFNLEVBQUUsQ0FBQztvQkFDWCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtvQkFDekIsT0FBTyxFQUFFLENBQUE7Z0JBQ1gsQ0FBQztZQUNILENBQUMsQ0FBQztpQkFDRCxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDWCxPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxDQUFDLENBQUE7Z0JBQy9DLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUNYLENBQUMsQ0FBQyxDQUFBO1FBQ04sQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRU0sV0FBVyxDQUFDLEdBQVc7UUFDNUIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDdkMsQ0FBQztJQUVNLFdBQVcsQ0FBQyxHQUFXLEVBQUUsR0FBVztRQUN6QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFBO0lBQzFELENBQUM7SUFFTSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ2hDLENBQUM7K0dBbkNVLGdCQUFnQjttSEFBaEIsZ0JBQWdCOzs0RkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gJ0BvbmVjeC9pbnRlZ3JhdGlvbi1pbnRlcmZhY2UnXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcydcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFwcENvbmZpZ1NlcnZpY2Uge1xuICBjb25maWckID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9Pih7fSlcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHt9XG5cbiAgcHVibGljIGluaXQoYmFzZVVybDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IGxvYWRDb25maWdQcm9taXNlOiBQcm9taXNlPENvbmZpZz4gPSBmaXJzdFZhbHVlRnJvbShcbiAgICAgICAgdGhpcy5odHRwLmdldDxDb25maWc+KExvY2F0aW9uLmpvaW5XaXRoU2xhc2goYmFzZVVybCwgJ2Fzc2V0cy9lbnYuanNvbicpKVxuICAgICAgKVxuXG4gICAgICBsb2FkQ29uZmlnUHJvbWlzZVxuICAgICAgICAudGhlbihhc3luYyAoY29uZmlnKSA9PiB7XG4gICAgICAgICAgaWYgKGNvbmZpZykge1xuICAgICAgICAgICAgdGhpcy5jb25maWckLm5leHQoY29uZmlnKVxuICAgICAgICAgICAgcmVzb2x2ZSgpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIGxvYWQgZW52IGNvbmZpZ3VyYXRpb25gKVxuICAgICAgICAgIHJlamVjdChlKVxuICAgICAgICB9KVxuICAgIH0pXG4gIH1cblxuICBwdWJsaWMgZ2V0UHJvcGVydHkoa2V5OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZyQuZ2V0VmFsdWUoKT8uW2tleV1cbiAgfVxuXG4gIHB1YmxpYyBzZXRQcm9wZXJ0eShrZXk6IHN0cmluZywgdmFsOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbmZpZyQubmV4dCh7IC4uLnRoaXMuY29uZmlnJC52YWx1ZSwgW2tleV06IHZhbCB9KVxuICB9XG5cbiAgcHVibGljIGdldENvbmZpZygpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWckLmdldFZhbHVlKClcbiAgfVxufVxuIl19
@@ -1,47 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { GlobalErrorTopic, GlobalLoadingTopic, CurrentMfeTopic, CurrentPageTopic, CurrentWorkspaceTopic, IsAuthenticatedTopic, CurrentLocationTopic, } from '@onecx/integration-interface';
3
- import * as i0 from "@angular/core";
4
- export class AppStateService {
5
- constructor() {
6
- this.globalError$ = new GlobalErrorTopic();
7
- this.globalLoading$ = new GlobalLoadingTopic();
8
- this.currentMfe$ = new CurrentMfeTopic();
9
- this.currentLocation$ = new CurrentLocationTopic();
10
- /**
11
- * This topic will only fire when pageInfo.path matches document.location.pathname,
12
- * if not it will fire undefined.
13
- */
14
- this.currentPage$ = new CurrentPageTopic();
15
- this.currentWorkspace$ = new CurrentWorkspaceTopic();
16
- /**
17
- * This Topic is initialized as soon as the authentication is done
18
- */
19
- this.isAuthenticated$ = new IsAuthenticatedTopic();
20
- }
21
- /**
22
- * @deprecated Will be replaced by currentWorkspace$
23
- */
24
- get currentPortal$() {
25
- return this.currentWorkspace$;
26
- }
27
- set currentPortal$(value) {
28
- this.currentWorkspace$ = value;
29
- }
30
- ngOnDestroy() {
31
- this.globalError$.destroy();
32
- this.globalLoading$.destroy();
33
- this.currentMfe$.destroy();
34
- this.currentPage$.destroy();
35
- this.currentPortal$.destroy();
36
- this.currentLocation$.destroy();
37
- this.currentWorkspace$.destroy();
38
- this.isAuthenticated$.destroy();
39
- }
40
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
41
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppStateService, providedIn: 'root' }); }
42
- }
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AppStateService, decorators: [{
44
- type: Injectable,
45
- args: [{ providedIn: 'root' }]
46
- }] });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXN0YXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItaW50ZWdyYXRpb24taW50ZXJmYWNlL3NyYy9saWIvc2VydmljZXMvYXBwLXN0YXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQTtBQUNyRCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsb0JBQW9CLEdBQ3JCLE1BQU0sOEJBQThCLENBQUE7O0FBR3JDLE1BQU0sT0FBTyxlQUFlO0lBRDVCO1FBRUUsaUJBQVksR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUE7UUFDckMsbUJBQWMsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUE7UUFDekMsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFBO1FBQ25DLHFCQUFnQixHQUFHLElBQUksb0JBQW9CLEVBQUUsQ0FBQTtRQUU3Qzs7O1dBR0c7UUFDSCxpQkFBWSxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQTtRQUNyQyxzQkFBaUIsR0FBRyxJQUFJLHFCQUFxQixFQUFFLENBQUE7UUFZL0M7O1dBRUc7UUFDSCxxQkFBZ0IsR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUE7S0FZOUM7SUF6QkM7O09BRUc7SUFDSCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUE7SUFDL0IsQ0FBQztJQUNELElBQUksY0FBYyxDQUFDLEtBQTRCO1FBQzdDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUE7SUFDaEMsQ0FBQztJQU9ELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQy9CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUNoQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUE7SUFDakMsQ0FBQzsrR0FyQ1UsZUFBZTttSEFBZixlQUFlLGNBREYsTUFBTTs7NEZBQ25CLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIEdsb2JhbEVycm9yVG9waWMsXG4gIEdsb2JhbExvYWRpbmdUb3BpYyxcbiAgQ3VycmVudE1mZVRvcGljLFxuICBDdXJyZW50UGFnZVRvcGljLFxuICBDdXJyZW50V29ya3NwYWNlVG9waWMsXG4gIElzQXV0aGVudGljYXRlZFRvcGljLFxuICBDdXJyZW50TG9jYXRpb25Ub3BpYyxcbn0gZnJvbSAnQG9uZWN4L2ludGVncmF0aW9uLWludGVyZmFjZSdcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBcHBTdGF0ZVNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBnbG9iYWxFcnJvciQgPSBuZXcgR2xvYmFsRXJyb3JUb3BpYygpXG4gIGdsb2JhbExvYWRpbmckID0gbmV3IEdsb2JhbExvYWRpbmdUb3BpYygpXG4gIGN1cnJlbnRNZmUkID0gbmV3IEN1cnJlbnRNZmVUb3BpYygpXG4gIGN1cnJlbnRMb2NhdGlvbiQgPSBuZXcgQ3VycmVudExvY2F0aW9uVG9waWMoKVxuXG4gIC8qKlxuICAgKiBUaGlzIHRvcGljIHdpbGwgb25seSBmaXJlIHdoZW4gcGFnZUluZm8ucGF0aCBtYXRjaGVzIGRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLFxuICAgKiBpZiBub3QgaXQgd2lsbCBmaXJlIHVuZGVmaW5lZC5cbiAgICovXG4gIGN1cnJlbnRQYWdlJCA9IG5ldyBDdXJyZW50UGFnZVRvcGljKClcbiAgY3VycmVudFdvcmtzcGFjZSQgPSBuZXcgQ3VycmVudFdvcmtzcGFjZVRvcGljKClcbiAgXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlcGxhY2VkIGJ5IGN1cnJlbnRXb3Jrc3BhY2UkXG4gICAqL1xuICBnZXQgY3VycmVudFBvcnRhbCQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFdvcmtzcGFjZSRcbiAgfVxuICBzZXQgY3VycmVudFBvcnRhbCQodmFsdWU6IEN1cnJlbnRXb3Jrc3BhY2VUb3BpYykge1xuICAgIHRoaXMuY3VycmVudFdvcmtzcGFjZSQgPSB2YWx1ZVxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgVG9waWMgaXMgaW5pdGlhbGl6ZWQgYXMgc29vbiBhcyB0aGUgYXV0aGVudGljYXRpb24gaXMgZG9uZVxuICAgKi9cbiAgaXNBdXRoZW50aWNhdGVkJCA9IG5ldyBJc0F1dGhlbnRpY2F0ZWRUb3BpYygpXG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5nbG9iYWxFcnJvciQuZGVzdHJveSgpXG4gICAgdGhpcy5nbG9iYWxMb2FkaW5nJC5kZXN0cm95KClcbiAgICB0aGlzLmN1cnJlbnRNZmUkLmRlc3Ryb3koKVxuICAgIHRoaXMuY3VycmVudFBhZ2UkLmRlc3Ryb3koKVxuICAgIHRoaXMuY3VycmVudFBvcnRhbCQuZGVzdHJveSgpXG4gICAgdGhpcy5jdXJyZW50TG9jYXRpb24kLmRlc3Ryb3koKVxuICAgIHRoaXMuY3VycmVudFdvcmtzcGFjZSQuZGVzdHJveSgpXG4gICAgdGhpcy5pc0F1dGhlbnRpY2F0ZWQkLmRlc3Ryb3koKVxuICB9XG59XG4iXX0=
@@ -1,77 +0,0 @@
1
- import { HttpClient } from '@angular/common/http';
2
- import { Inject, Injectable, Optional } from '@angular/core';
3
- import { firstValueFrom } from 'rxjs';
4
- import { ConfigurationTopic } from '@onecx/integration-interface';
5
- import { APP_CONFIG } from '../api/injection-tokens';
6
- import { CONFIG_KEY } from '../model/config-key.model';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/common/http";
9
- export class ConfigurationService {
10
- constructor(http, defaultConfig) {
11
- this.http = http;
12
- this.defaultConfig = defaultConfig;
13
- this.config$ = new ConfigurationTopic();
14
- }
15
- ngOnDestroy() {
16
- this.config$.destroy();
17
- }
18
- init() {
19
- return new Promise((resolve, reject) => {
20
- const skipRemoteConfigLoad = this.defaultConfig && this.defaultConfig['skipRemoteConfigLoad'];
21
- let loadConfigPromise;
22
- const inlinedConfig = window['APP_CONFIG'];
23
- if (inlinedConfig) {
24
- console.log(`ENV resolved from injected config`);
25
- loadConfigPromise = Promise.resolve(inlinedConfig);
26
- }
27
- else {
28
- if (skipRemoteConfigLoad) {
29
- console.log('📢 TKA001: Remote config load is disabled. To enable it, remove the "skipRemoteConfigLoad" key in your environment.json');
30
- loadConfigPromise = Promise.resolve(this.defaultConfig || {});
31
- }
32
- else {
33
- loadConfigPromise = firstValueFrom(this.http.get((this.defaultConfig && this.defaultConfig['remoteConfigURL']) || 'assets/env.json'));
34
- }
35
- }
36
- loadConfigPromise
37
- .then(async (config) => {
38
- await this.config$.publish({ ...this.defaultConfig, ...(config ?? {}) }).then(() => {
39
- resolve(true);
40
- });
41
- })
42
- .catch((e) => {
43
- console.log(`Failed to load env configuration`);
44
- reject(e);
45
- });
46
- });
47
- }
48
- get isInitialized() {
49
- return this.config$.isInitialized;
50
- }
51
- getProperty(key) {
52
- if (!Object.values(CONFIG_KEY).includes(key)) {
53
- console.error('Invalid config key ', key);
54
- }
55
- return this.config$.getValue()?.[key];
56
- }
57
- async setProperty(key, val) {
58
- const currentValues = await firstValueFrom(this.config$.asObservable());
59
- currentValues[key] = val;
60
- await this.config$.publish(currentValues);
61
- }
62
- getConfig() {
63
- return this.config$.getValue();
64
- }
65
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConfigurationService, deps: [{ token: i1.HttpClient }, { token: APP_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
66
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConfigurationService, providedIn: 'root' }); }
67
- }
68
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConfigurationService, decorators: [{
69
- type: Injectable,
70
- args: [{ providedIn: 'root' }]
71
- }], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
72
- type: Optional
73
- }, {
74
- type: Inject,
75
- args: [APP_CONFIG]
76
- }] }] });
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWludGVncmF0aW9uLWludGVyZmFjZS9zcmMvbGliL3NlcnZpY2VzL2NvbmZpZ3VyYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQWEsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDckMsT0FBTyxFQUFVLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDekUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTs7O0FBR3RELE1BQU0sT0FBTyxvQkFBb0I7SUFHL0IsWUFDVSxJQUFnQixFQUNnQixhQUF5QztRQUR6RSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2dCLGtCQUFhLEdBQWIsYUFBYSxDQUE0QjtRQUpuRixZQUFPLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFBO0lBSy9CLENBQUM7SUFFSixXQUFXO1FBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUN4QixDQUFDO0lBRU0sSUFBSTtRQUNULE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtZQUM3RixJQUFJLGlCQUFrQyxDQUFBO1lBRXRDLE1BQU0sYUFBYSxHQUFJLE1BQWlELENBQUMsWUFBWSxDQUFDLENBQUE7WUFDdEYsSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFBO2dCQUNoRCxpQkFBaUIsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFBO1lBQ3BELENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLG9CQUFvQixFQUFFLENBQUM7b0JBQ3pCLE9BQU8sQ0FBQyxHQUFHLENBQ1QseUhBQXlILENBQzFILENBQUE7b0JBQ0QsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxDQUFBO2dCQUMvRCxDQUFDO3FCQUFNLENBQUM7b0JBQ04saUJBQWlCLEdBQUcsY0FBYyxDQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksaUJBQWlCLENBQUMsQ0FDMUcsQ0FBQTtnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUVELGlCQUFpQjtpQkFDZCxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUNyQixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7b0JBQ2pGLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDZixDQUFDLENBQUMsQ0FBQTtZQUNKLENBQUMsQ0FBQztpQkFDRCxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDWCxPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxDQUFDLENBQUE7Z0JBQy9DLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUNYLENBQUMsQ0FBQyxDQUFBO1FBQ04sQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQTtJQUNuQyxDQUFDO0lBRU0sV0FBVyxDQUFDLEdBQWU7UUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0MsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLENBQUMsQ0FBQTtRQUMzQyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDdkMsQ0FBQztJQUVNLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBVyxFQUFFLEdBQVc7UUFDL0MsTUFBTSxhQUFhLEdBQUcsTUFBTSxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFBO1FBQ3ZFLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUE7UUFDeEIsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0lBRU0sU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUNoQyxDQUFDOytHQWxFVSxvQkFBb0IsNENBS1QsVUFBVTttSEFMckIsb0JBQW9CLGNBRFAsTUFBTTs7NEZBQ25CLG9CQUFvQjtrQkFEaEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQU03QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9uRGVzdHJveSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgQ29uZmlnLCBDb25maWd1cmF0aW9uVG9waWMgfSBmcm9tICdAb25lY3gvaW50ZWdyYXRpb24taW50ZXJmYWNlJ1xuaW1wb3J0IHsgQVBQX0NPTkZJRyB9IGZyb20gJy4uL2FwaS9pbmplY3Rpb24tdG9rZW5zJ1xuaW1wb3J0IHsgQ09ORklHX0tFWSB9IGZyb20gJy4uL21vZGVsL2NvbmZpZy1rZXkubW9kZWwnXG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQ29uZmlndXJhdGlvblNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBjb25maWckID0gbmV3IENvbmZpZ3VyYXRpb25Ub3BpYygpXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVBQX0NPTkZJRykgcHJpdmF0ZSBkZWZhdWx0Q29uZmlnPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVxuICApIHt9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jb25maWckLmRlc3Ryb3koKVxuICB9XG5cbiAgcHVibGljIGluaXQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHNraXBSZW1vdGVDb25maWdMb2FkID0gdGhpcy5kZWZhdWx0Q29uZmlnICYmIHRoaXMuZGVmYXVsdENvbmZpZ1snc2tpcFJlbW90ZUNvbmZpZ0xvYWQnXVxuICAgICAgbGV0IGxvYWRDb25maWdQcm9taXNlOiBQcm9taXNlPENvbmZpZz5cblxuICAgICAgY29uc3QgaW5saW5lZENvbmZpZyA9ICh3aW5kb3cgYXMgdHlwZW9mIHdpbmRvdyAmIHsgQVBQX0NPTkZJRzogQ29uZmlnIH0pWydBUFBfQ09ORklHJ11cbiAgICAgIGlmIChpbmxpbmVkQ29uZmlnKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBFTlYgcmVzb2x2ZWQgZnJvbSBpbmplY3RlZCBjb25maWdgKVxuICAgICAgICBsb2FkQ29uZmlnUHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShpbmxpbmVkQ29uZmlnKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHNraXBSZW1vdGVDb25maWdMb2FkKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAn8J+ToiBUS0EwMDE6IFJlbW90ZSBjb25maWcgbG9hZCBpcyBkaXNhYmxlZC4gVG8gZW5hYmxlIGl0LCByZW1vdmUgdGhlIFwic2tpcFJlbW90ZUNvbmZpZ0xvYWRcIiBrZXkgaW4geW91ciBlbnZpcm9ubWVudC5qc29uJ1xuICAgICAgICAgIClcbiAgICAgICAgICBsb2FkQ29uZmlnUHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh0aGlzLmRlZmF1bHRDb25maWcgfHwge30pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9hZENvbmZpZ1Byb21pc2UgPSBmaXJzdFZhbHVlRnJvbShcbiAgICAgICAgICAgIHRoaXMuaHR0cC5nZXQ8Q29uZmlnPigodGhpcy5kZWZhdWx0Q29uZmlnICYmIHRoaXMuZGVmYXVsdENvbmZpZ1sncmVtb3RlQ29uZmlnVVJMJ10pIHx8ICdhc3NldHMvZW52Lmpzb24nKVxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsb2FkQ29uZmlnUHJvbWlzZVxuICAgICAgICAudGhlbihhc3luYyAoY29uZmlnKSA9PiB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5jb25maWckLnB1Ymxpc2goeyAuLi50aGlzLmRlZmF1bHRDb25maWcsIC4uLihjb25maWcgPz8ge30pIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKVxuICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBGYWlsZWQgdG8gbG9hZCBlbnYgY29uZmlndXJhdGlvbmApXG4gICAgICAgICAgcmVqZWN0KGUpXG4gICAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIGdldCBpc0luaXRpYWxpemVkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZyQuaXNJbml0aWFsaXplZFxuICB9XG5cbiAgcHVibGljIGdldFByb3BlcnR5KGtleTogQ09ORklHX0tFWSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFPYmplY3QudmFsdWVzKENPTkZJR19LRVkpLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ludmFsaWQgY29uZmlnIGtleSAnLCBrZXkpXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbmZpZyQuZ2V0VmFsdWUoKT8uW2tleV1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZXRQcm9wZXJ0eShrZXk6IHN0cmluZywgdmFsOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjdXJyZW50VmFsdWVzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5jb25maWckLmFzT2JzZXJ2YWJsZSgpKVxuICAgIGN1cnJlbnRWYWx1ZXNba2V5XSA9IHZhbFxuICAgIGF3YWl0IHRoaXMuY29uZmlnJC5wdWJsaXNoKGN1cnJlbnRWYWx1ZXMpXG4gIH1cblxuICBwdWJsaWMgZ2V0Q29uZmlnKCk6IENvbmZpZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnJC5nZXRWYWx1ZSgpXG4gIH1cbn1cbiJdfQ==
@@ -1,60 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { TranslateService } from '@ngx-translate/core';
3
- import { filter, from, isObservable, map, mergeMap, of, tap, zip } from 'rxjs';
4
- import { AppStateService } from './app-state.service';
5
- import { ConfigurationService } from './configuration.service';
6
- import { UserService } from './user.service';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@ngx-translate/core";
9
- import * as i2 from "./configuration.service";
10
- import * as i3 from "./app-state.service";
11
- import * as i4 from "./user.service";
12
- export class InitializeModuleGuard {
13
- constructor(translateService, configService, appStateService, userService) {
14
- this.translateService = translateService;
15
- this.configService = configService;
16
- this.appStateService = appStateService;
17
- this.userService = userService;
18
- this.SUPPORTED_LANGS = ['en', 'de'];
19
- this.DEFAULT_LANG = 'en';
20
- }
21
- canActivate(_route, _state) {
22
- console.time('InitializeModuleGuard');
23
- return zip([
24
- this.loadTranslations(),
25
- from(this.configService.isInitialized),
26
- from(this.userService.isInitialized),
27
- from(this.appStateService.currentWorkspace$.isInitialized),
28
- ]).pipe(tap(() => {
29
- console.timeEnd('InitializeModuleGuard');
30
- }), map(() => true));
31
- }
32
- getBestMatchLanguage(lang) {
33
- if (this.SUPPORTED_LANGS.includes(lang)) {
34
- return lang;
35
- }
36
- else {
37
- console.log(`${lang} is not supported. Using ${this.DEFAULT_LANG} as a fallback.`);
38
- }
39
- return this.DEFAULT_LANG;
40
- }
41
- loadTranslations() {
42
- return this.userService.lang$.pipe(filter((v) => v !== undefined), mergeMap((lang) => {
43
- const bestMatchLang = this.getBestMatchLanguage(lang);
44
- return this.translateService.use(bestMatchLang);
45
- }), mergeMap(() => of(true)));
46
- }
47
- toObservable(canActivateResult) {
48
- if (isObservable(canActivateResult)) {
49
- return canActivateResult;
50
- }
51
- return from(Promise.resolve(canActivateResult));
52
- }
53
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InitializeModuleGuard, deps: [{ token: i1.TranslateService }, { token: i2.ConfigurationService }, { token: i3.AppStateService }, { token: i4.UserService }], target: i0.ɵɵFactoryTarget.Injectable }); }
54
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InitializeModuleGuard, providedIn: 'any' }); }
55
- }
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InitializeModuleGuard, decorators: [{
57
- type: Injectable,
58
- args: [{ providedIn: 'any' }]
59
- }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.ConfigurationService }, { type: i3.AppStateService }, { type: i4.UserService }] });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbGl6ZS1tb2R1bGUtZ3VhcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1pbnRlZ3JhdGlvbi1pbnRlcmZhY2Uvc3JjL2xpYi9zZXJ2aWNlcy9pbml0aWFsaXplLW1vZHVsZS1ndWFyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFMUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDMUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBRzdDLE1BQU0sT0FBTyxxQkFBcUI7SUFHaEMsWUFDWSxnQkFBa0MsRUFDbEMsYUFBbUMsRUFDbkMsZUFBZ0MsRUFDaEMsV0FBd0I7UUFIeEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUFDbkMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBTjVCLG9CQUFlLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDOUIsaUJBQVksR0FBRyxJQUFJLENBQUE7SUFNeEIsQ0FBQztJQUVKLFdBQVcsQ0FDVCxNQUE4QixFQUM5QixNQUEyQjtRQUUzQixPQUFPLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUE7UUFDckMsT0FBTyxHQUFHLENBQUM7WUFDVCxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztZQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUM7U0FDM0QsQ0FBQyxDQUFDLElBQUksQ0FDTCxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsT0FBTyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO1FBQzFDLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FDaEIsQ0FBQTtJQUNILENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxJQUFZO1FBQy9CLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN4QyxPQUFPLElBQUksQ0FBQTtRQUNiLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksNEJBQTRCLElBQUksQ0FBQyxZQUFZLGlCQUFpQixDQUFDLENBQUE7UUFDcEYsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQTtJQUMxQixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQ2hDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxFQUM5QixRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNoQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBYyxDQUFDLENBQUE7WUFDL0QsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBQ2pELENBQUMsQ0FBQyxFQUNGLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDekIsQ0FBQTtJQUNILENBQUM7SUFFUyxZQUFZLENBQ3BCLGlCQUFpRztRQUVqRyxJQUFJLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7WUFDcEMsT0FBTyxpQkFBaUIsQ0FBQTtRQUMxQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUE7SUFDakQsQ0FBQzsrR0F2RFUscUJBQXFCO21IQUFyQixxQkFBcUIsY0FEUixLQUFLOzs0RkFDbEIscUJBQXFCO2tCQURqQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgQ2FuQWN0aXZhdGUsIFJvdXRlclN0YXRlU25hcHNob3QsIFVybFRyZWUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IGZpbHRlciwgZnJvbSwgaXNPYnNlcnZhYmxlLCBtYXAsIG1lcmdlTWFwLCBPYnNlcnZhYmxlLCBvZiwgdGFwLCB6aXAgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgQXBwU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9hcHAtc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4vY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdhbnknIH0pXG5leHBvcnQgY2xhc3MgSW5pdGlhbGl6ZU1vZHVsZUd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xuICBwcml2YXRlIFNVUFBPUlRFRF9MQU5HUyA9IFsnZW4nLCAnZGUnXVxuICBwcml2YXRlIERFRkFVTFRfTEFORyA9ICdlbidcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhcHBTdGF0ZVNlcnZpY2U6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlXG4gICkge31cblxuICBjYW5BY3RpdmF0ZShcbiAgICBfcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgX3N0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XG4gICk6IE9ic2VydmFibGU8Ym9vbGVhbiB8IFVybFRyZWU+IHwgUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4gfCBib29sZWFuIHwgVXJsVHJlZSB7XG4gICAgY29uc29sZS50aW1lKCdJbml0aWFsaXplTW9kdWxlR3VhcmQnKVxuICAgIHJldHVybiB6aXAoW1xuICAgICAgdGhpcy5sb2FkVHJhbnNsYXRpb25zKCksXG4gICAgICBmcm9tKHRoaXMuY29uZmlnU2VydmljZS5pc0luaXRpYWxpemVkKSxcbiAgICAgIGZyb20odGhpcy51c2VyU2VydmljZS5pc0luaXRpYWxpemVkKSxcbiAgICAgIGZyb20odGhpcy5hcHBTdGF0ZVNlcnZpY2UuY3VycmVudFdvcmtzcGFjZSQuaXNJbml0aWFsaXplZCksXG4gICAgXSkucGlwZShcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIGNvbnNvbGUudGltZUVuZCgnSW5pdGlhbGl6ZU1vZHVsZUd1YXJkJylcbiAgICAgIH0pLFxuICAgICAgbWFwKCgpID0+IHRydWUpXG4gICAgKVxuICB9XG5cbiAgZ2V0QmVzdE1hdGNoTGFuZ3VhZ2UobGFuZzogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuU1VQUE9SVEVEX0xBTkdTLmluY2x1ZGVzKGxhbmcpKSB7XG4gICAgICByZXR1cm4gbGFuZ1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhgJHtsYW5nfSBpcyBub3Qgc3VwcG9ydGVkLiBVc2luZyAke3RoaXMuREVGQVVMVF9MQU5HfSBhcyBhIGZhbGxiYWNrLmApXG4gICAgfVxuICAgIHJldHVybiB0aGlzLkRFRkFVTFRfTEFOR1xuICB9XG5cbiAgbG9hZFRyYW5zbGF0aW9ucygpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy51c2VyU2VydmljZS5sYW5nJC5waXBlKFxuICAgICAgZmlsdGVyKCh2KSA9PiB2ICE9PSB1bmRlZmluZWQpLFxuICAgICAgbWVyZ2VNYXAoKGxhbmcpID0+IHtcbiAgICAgICAgY29uc3QgYmVzdE1hdGNoTGFuZyA9IHRoaXMuZ2V0QmVzdE1hdGNoTGFuZ3VhZ2UobGFuZyBhcyBzdHJpbmcpXG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudXNlKGJlc3RNYXRjaExhbmcpXG4gICAgICB9KSxcbiAgICAgIG1lcmdlTWFwKCgpID0+IG9mKHRydWUpKVxuICAgIClcbiAgfVxuXG4gIHByb3RlY3RlZCB0b09ic2VydmFibGUoXG4gICAgY2FuQWN0aXZhdGVSZXN1bHQ6IE9ic2VydmFibGU8Ym9vbGVhbiB8IFVybFRyZWU+IHwgUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4gfCBib29sZWFuIHwgVXJsVHJlZVxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPiB7XG4gICAgaWYgKGlzT2JzZXJ2YWJsZShjYW5BY3RpdmF0ZVJlc3VsdCkpIHtcbiAgICAgIHJldHVybiBjYW5BY3RpdmF0ZVJlc3VsdFxuICAgIH1cbiAgICByZXR1cm4gZnJvbShQcm9taXNlLnJlc29sdmUoY2FuQWN0aXZhdGVSZXN1bHQpKVxuICB9XG59XG4iXX0=