@odx/auth 1.0.3 → 3.0.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 (80) hide show
  1. package/README.md +27 -1
  2. package/esm2020/index.mjs +2 -1
  3. package/esm2020/lib/auth.component.mjs +6 -5
  4. package/esm2020/lib/auth.config.mjs +20 -4
  5. package/esm2020/lib/auth.directive.mjs +2 -2
  6. package/esm2020/lib/auth.guard.mjs +17 -6
  7. package/esm2020/lib/auth.providers.mjs +7 -2
  8. package/esm2020/lib/auth.service.mjs +29 -15
  9. package/esm2020/lib/auth.typings.mjs +1 -1
  10. package/esm2020/lib/directives/auth-action.directive.mjs +24 -0
  11. package/esm2020/lib/directives/index.mjs +2 -1
  12. package/esm2020/lib/directives/sign-in.directive.mjs +10 -15
  13. package/esm2020/lib/directives/sign-out.directive.mjs +10 -15
  14. package/esm2020/lib/helpers/create-inititals.mjs +3 -3
  15. package/esm2020/lib/helpers/index.mjs +3 -2
  16. package/esm2020/lib/helpers/resolve-email.mjs +14 -0
  17. package/esm2020/lib/helpers/resolve-username.mjs +14 -0
  18. package/esm2020/lib/models/auth-http-cache.mjs +34 -0
  19. package/esm2020/lib/models/auth-plugin-manager.mjs +29 -0
  20. package/esm2020/lib/models/authorized-handler.mjs +1 -1
  21. package/esm2020/lib/models/index.mjs +3 -1
  22. package/esm2020/lib/plugins/core-identity.plugin.mjs +13 -0
  23. package/esm2020/lib/plugins/index.mjs +2 -0
  24. package/esm2020/plugins/service-connect/index.mjs +8 -0
  25. package/esm2020/plugins/service-connect/lib/dtos/get-service-connect-rights-response.dto.mjs +2 -0
  26. package/esm2020/plugins/service-connect/lib/dtos/index.mjs +2 -0
  27. package/esm2020/plugins/service-connect/lib/helpers/build-service-connect-url.mjs +9 -0
  28. package/esm2020/plugins/service-connect/lib/helpers/has-roles-or-rights-handler.mjs +5 -0
  29. package/esm2020/plugins/service-connect/lib/helpers/has-roles-or-rights.mjs +5 -0
  30. package/esm2020/plugins/service-connect/lib/helpers/index.mjs +4 -0
  31. package/esm2020/plugins/service-connect/lib/service-connect-rights.directive.mjs +32 -0
  32. package/esm2020/plugins/service-connect/lib/service-connect-rights.guard.mjs +7 -0
  33. package/esm2020/plugins/service-connect/lib/service-connect-rights.plugin.mjs +29 -0
  34. package/esm2020/plugins/service-connect/lib/service-connect.config.mjs +14 -0
  35. package/esm2020/plugins/service-connect/lib/service-connect.typings.mjs +2 -0
  36. package/esm2020/plugins/service-connect/odx-auth-plugins-service-connect.mjs +5 -0
  37. package/fesm2015/odx-auth-plugins-service-connect.mjs +99 -0
  38. package/fesm2015/odx-auth-plugins-service-connect.mjs.map +1 -0
  39. package/fesm2015/odx-auth.mjs +208 -72
  40. package/fesm2015/odx-auth.mjs.map +1 -1
  41. package/fesm2020/odx-auth-plugins-service-connect.mjs +97 -0
  42. package/fesm2020/odx-auth-plugins-service-connect.mjs.map +1 -0
  43. package/fesm2020/odx-auth.mjs +201 -71
  44. package/fesm2020/odx-auth.mjs.map +1 -1
  45. package/index.d.ts +1 -0
  46. package/lib/auth.component.d.ts +1 -1
  47. package/lib/auth.config.d.ts +12 -3
  48. package/lib/auth.guard.d.ts +2 -2
  49. package/lib/auth.service.d.ts +11 -8
  50. package/lib/auth.typings.d.ts +9 -1
  51. package/lib/directives/auth-action.directive.d.ts +12 -0
  52. package/lib/directives/index.d.ts +1 -0
  53. package/lib/directives/sign-in.directive.d.ts +4 -6
  54. package/lib/directives/sign-out.directive.d.ts +4 -6
  55. package/lib/helpers/create-inititals.d.ts +1 -1
  56. package/lib/helpers/index.d.ts +2 -1
  57. package/lib/helpers/resolve-email.d.ts +1 -0
  58. package/lib/helpers/resolve-username.d.ts +1 -0
  59. package/lib/models/auth-http-cache.d.ts +11 -0
  60. package/lib/models/auth-plugin-manager.d.ts +15 -0
  61. package/lib/models/authorized-handler.d.ts +1 -2
  62. package/lib/models/index.d.ts +2 -0
  63. package/lib/plugins/core-identity.plugin.d.ts +11 -0
  64. package/lib/plugins/index.d.ts +1 -0
  65. package/package.json +11 -2
  66. package/plugins/service-connect/README.md +3 -0
  67. package/plugins/service-connect/index.d.ts +7 -0
  68. package/plugins/service-connect/lib/dtos/get-service-connect-rights-response.dto.d.ts +3 -0
  69. package/plugins/service-connect/lib/dtos/index.d.ts +1 -0
  70. package/plugins/service-connect/lib/helpers/build-service-connect-url.d.ts +3 -0
  71. package/plugins/service-connect/lib/helpers/has-roles-or-rights-handler.d.ts +3 -0
  72. package/plugins/service-connect/lib/helpers/has-roles-or-rights.d.ts +5 -0
  73. package/plugins/service-connect/lib/helpers/index.d.ts +3 -0
  74. package/plugins/service-connect/lib/service-connect-rights.directive.d.ts +9 -0
  75. package/plugins/service-connect/lib/service-connect-rights.guard.d.ts +3 -0
  76. package/plugins/service-connect/lib/service-connect-rights.plugin.d.ts +7 -0
  77. package/plugins/service-connect/lib/service-connect.config.d.ts +11 -0
  78. package/plugins/service-connect/lib/service-connect.typings.d.ts +9 -0
  79. package/esm2020/lib/helpers/parse-identity-claims.mjs +0 -13
  80. package/lib/helpers/parse-identity-claims.d.ts +0 -2
package/README.md CHANGED
@@ -17,10 +17,34 @@ Import the `AuthModule` from `@odx/auth` and add it to the application imports,
17
17
  provideAuth({
18
18
  environment: 'dev',
19
19
  clientId: '<oktaClientId>',
20
- scopes: ['offline_access'],
21
20
  })
22
21
  ```
23
22
 
23
+ The configuration object has the following interface:
24
+
25
+ ```TS
26
+ interface AuthConfig {
27
+ environment: AuthEnvironment;
28
+ clientId: string;
29
+ issuer: string;
30
+ redirectPath: string;
31
+ allowedUrls: Array<string | RegExp>;
32
+ timeoutFactor: number;
33
+ maxOfflineTime: number;
34
+ loadUserProfile: boolean;
35
+ postLogoutRedirectUrl: string;
36
+ scopes: string[];
37
+ discoveryUrl: string;
38
+ errorHandler: AuthErrorHandlerFn;
39
+ createInitials: CreateInitialsFn;
40
+ resolveEmail: ResolveEmailFn;
41
+ resolveUsername: ResolveUsernameFn;
42
+ storage: OAuthStorage;
43
+ plugins: AuthPluginFactory[];
44
+ showRedirectOverlay: boolean;
45
+ }
46
+ ```
47
+
24
48
  In order to add the UI for signing in and out, add the `odx-auth` component to the `odx-header`:
25
49
 
26
50
  ```HTML
@@ -30,3 +54,5 @@ In order to add the UI for signing in and out, add the `odx-auth` component to t
30
54
  </odx-auth>
31
55
  </odx-header>
32
56
  ```
57
+
58
+ > The library provides some additional plugins that can be imported from `@odx/auth/plugins/*`
package/esm2020/index.mjs CHANGED
@@ -9,4 +9,5 @@ export * from './lib/auth.typings';
9
9
  export * from './lib/directives';
10
10
  export * from './lib/helpers';
11
11
  export * from './lib/models';
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGguY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGguY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGguZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGguZ3VhcmQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC5wcm92aWRlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGgudHlwaW5ncyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2hlbHBlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzJztcbiJdfQ==
12
+ export * from './lib/plugins';
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGguY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGguY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGguZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGguZ3VhcmQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC5wcm92aWRlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXV0aC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGgudHlwaW5ncyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2hlbHBlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BsdWdpbnMnO1xuIl19
@@ -3,6 +3,7 @@ import { CoreModule } from '@odx/angular';
3
3
  import { AreaHeaderModule } from '@odx/angular/components/area-header';
4
4
  import { DropdownModule } from '@odx/angular/components/dropdown';
5
5
  import { HeaderModule } from '@odx/angular/components/header';
6
+ import { LoadingSpinnerModule } from '@odx/angular/components/loading-spinner';
6
7
  import { LogoDirective } from '@odx/angular/components/logo';
7
8
  import { Position } from '@odx/angular/utils';
8
9
  import { injectAuthConfig } from './auth.config';
@@ -17,11 +18,11 @@ import * as i5 from "@odx/angular/components/action-group";
17
18
  import * as i6 from "@odx/angular/components/button";
18
19
  import * as i7 from "@odx/angular/components/icon";
19
20
  import * as i8 from "@odx/angular/components/dropdown";
20
- import * as i9 from "@odx/angular/components/header";
21
+ import * as i9 from "@odx/angular/components/loading-spinner";
21
22
  export class AuthComponent {
22
23
  constructor() {
23
- this.authService = inject(AuthService);
24
24
  this.authConfig = injectAuthConfig();
25
+ this.authService = inject(AuthService);
25
26
  this.dropdownOptions = {
26
27
  position: Position.BOTTOM_END,
27
28
  enableFallback: false,
@@ -32,13 +33,13 @@ export class AuthComponent {
32
33
  }
33
34
  }
34
35
  AuthComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AuthComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
35
- AuthComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: AuthComponent, isStandalone: true, selector: "odx-auth", inputs: { signInButtonText: "signInButtonText", signOutButtonText: "signOutButtonText" }, ngImport: i0, template: "<odx-action-group *ngrxLet=\"{ idClaims: authService.identityClaims$, isAuthenticated: authService.isAuthenticated$ } as vm\">\n <ng-template [ngIf]=\"vm.isAuthenticated\" [ngIfElse]=\"notAuthenticated\">\n <button odxButton odxHeaderAvatar [odxDropdown]=\"userProfileMenu\" [odxDropdownOptions]=\"dropdownOptions\" data-testid=\"odx-auth-user-profile-button\">\n <ng-template [ngTemplateOutlet]=\"userAvatar\"></ng-template>\n </button>\n <ng-template #userProfileMenu>\n <odx-area-header class=\"odx-padding-x-12\" size=\"small\">\n <ng-template [ngTemplateOutlet]=\"userAvatar\" ngProjectAs=\"odx-avatar\"></ng-template>\n {{ authConfig.resolveUsername(vm.idClaims) }}\n <odx-area-header-subtitle>\n {{ vm.idClaims?.email }}\n </odx-area-header-subtitle>\n </odx-area-header>\n <ng-content></ng-content>\n <div class=\"odx-margin-top-12\" odxLayout=\"flex vertical-center\">\n <odx-logo odxLayout=\"auto\" class=\"odx-margin-left-12 odx-margin-right-auto\"></odx-logo>\n <button odxButton odxAuthSignOut variant=\"ghost\" data-testid=\"odx-auth-sign-out-button\">\n {{ signOutButtonText }}\n <odx-icon name=\"arrow-right\" alignRight></odx-icon>\n </button>\n </div>\n </ng-template>\n </ng-template>\n <ng-template #notAuthenticated>\n <button class=\"odx-auth-sign-in\" odxButton odxAuthSignIn variant=\"secondary\" data-testid=\"odx-auth-sign-in-button\">\n <odx-icon name=\"user\" alignLeft></odx-icon>\n {{ signInButtonText }}\n </button>\n </ng-template>\n <ng-template #userAvatar>\n <odx-avatar class=\"odx-auth-user-avatar\">\n {{ vm.idClaims?.initials ?? '' }}\n </odx-avatar>\n </ng-template>\n</odx-action-group>\n", styles: [".odx-auth-user-profile .odx-dropdown__inner>.odx-area-header{max-width:max(360px,25vw);min-width:296px}\n"], dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.LetDirective, selector: "[ngrxLet]", inputs: ["ngrxLet", "ngrxLetSuspenseTpl"] }, { kind: "ngmodule", type: AreaHeaderModule }, { kind: "component", type: i3.AreaHeaderComponent, selector: "odx-area-header", inputs: ["size"] }, { kind: "directive", type: i3.AreaHeaderSubtitleDirective, selector: "odx-area-header-subtitle" }, { kind: "component", type: i4.AvatarComponent, selector: "odx-avatar", inputs: ["size", "variant"] }, { kind: "component", type: i5.ActionGroupComponent, selector: "odx-action-group", inputs: ["reverse"] }, { kind: "component", type: i6.ButtonComponent, selector: "button[odxButton], a[odxButton]", inputs: ["variant", "size"] }, { kind: "component", type: i7.IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "directive", type: i8.DropdownDirective, selector: "[odxDropdown]", inputs: ["odxDropdown", "odxDropdownDisabled", "odxDropdownShowLoader", "odxDropdownOptions", "odxDropdownReferenceElement", "odxDropdownTriggerElement", "odxDropdownHost", "odxDropdownOpenTrigger", "odxDropdownCloseTrigger"], outputs: ["odxDropdownBeforeOpen", "odxDropdownAfterOpen", "odxDropdownBeforeClose", "odxDropdownAfterClose"], exportAs: ["odxDropdown"] }, { kind: "ngmodule", type: HeaderModule }, { kind: "directive", type: i9.HeaderAvatarDirective, selector: "button[odxButton][odxHeaderAvatar]" }, { kind: "directive", type: LogoDirective, selector: "odx-logo", inputs: ["size", "variant"] }, { kind: "directive", type: SignInDirective, selector: "[odxButton][odxAuthSignIn]", outputs: ["odxAuthSignIn"] }, { kind: "directive", type: SignOutDirective, selector: "[odxButton][odxAuthSignOut]", outputs: ["odxAuthSignOut"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
36
+ AuthComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: AuthComponent, isStandalone: true, selector: "odx-auth", inputs: { signInButtonText: "signInButtonText", signOutButtonText: "signOutButtonText" }, ngImport: i0, template: "<odx-action-group>\n <ng-template [ngrxLet]=\"{ idClaims: authService.identityClaims$, isAuthenticated: authService.isAuthenticated$ }\" let-vm>\n <ng-template [ngIf]=\"vm.isAuthenticated\" [ngIfElse]=\"notAuthenticated\">\n <button odxButton [odxDropdown]=\"userProfileMenu\" [odxDropdownOptions]=\"dropdownOptions\" data-testid=\"odx-auth-user-profile-button\">\n <ng-template [ngTemplateOutlet]=\"userAvatar\"></ng-template>\n </button>\n <ng-template #userProfileMenu>\n <odx-area-header class=\"odx-padding-x-12\" size=\"small\">\n <ng-template [ngTemplateOutlet]=\"userAvatar\" ngProjectAs=\"odx-avatar\"></ng-template>\n {{ vm.idClaims?.username }}\n <odx-area-header-subtitle>\n {{ vm.idClaims?.email }}\n </odx-area-header-subtitle>\n </odx-area-header>\n <ng-content></ng-content>\n <div class=\"odx-margin-top-12\" odxLayout=\"flex vertical-center\">\n <odx-logo odxLayout=\"auto\" class=\"odx-margin-left-12 odx-margin-right-auto\"></odx-logo>\n <button odxButton odxAuthSignOut variant=\"ghost\" data-testid=\"odx-auth-sign-out-button\">\n {{ signOutButtonText }}\n <odx-icon name=\"arrow-right\" alignRight></odx-icon>\n </button>\n </div>\n </ng-template>\n </ng-template>\n <ng-template #notAuthenticated>\n <button class=\"odx-auth-sign-in\" odxButton odxAuthSignIn variant=\"secondary\" data-testid=\"odx-auth-sign-in-button\">\n <odx-icon name=\"user\" alignLeft></odx-icon>\n {{ signInButtonText }}\n </button>\n </ng-template>\n <ng-template #userAvatar>\n <odx-avatar class=\"odx-auth-user-avatar\">\n {{ vm.idClaims?.initials ?? '' }}\n </odx-avatar>\n </ng-template>\n </ng-template>\n <ng-template [ngIf]=\"authConfig.showRedirectOverlay\">\n <div class=\"odx-auth-overlay\" [odxLoadingSpinner]=\"true\" *ngIf=\"authService.isLoading$ | async\"></div>\n </ng-template>\n</odx-action-group>\n", styles: [".odx-auth-user-profile .odx-dropdown__inner>.odx-area-header{max-width:max(360px,25vw);min-width:296px}.odx-auth-overlay{position:fixed;z-index:var(--odx-v-layer-5);inset:0}\n"], dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "directive", type: i2.LetDirective, selector: "[ngrxLet]", inputs: ["ngrxLet", "ngrxLetSuspenseTpl"] }, { kind: "ngmodule", type: AreaHeaderModule }, { kind: "component", type: i3.AreaHeaderComponent, selector: "odx-area-header", inputs: ["size"] }, { kind: "directive", type: i3.AreaHeaderSubtitleDirective, selector: "odx-area-header-subtitle" }, { kind: "component", type: i4.AvatarComponent, selector: "odx-avatar", inputs: ["size", "variant"] }, { kind: "component", type: i5.ActionGroupComponent, selector: "odx-action-group", inputs: ["reverse"] }, { kind: "component", type: i6.ButtonComponent, selector: "button[odxButton], a[odxButton]", inputs: ["variant", "size"] }, { kind: "component", type: i7.IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "directive", type: i8.DropdownDirective, selector: "[odxDropdown]", inputs: ["odxDropdown", "odxDropdownDisabled", "odxDropdownShowLoader", "odxDropdownClickOutsideActive", "odxDropdownOptions", "odxDropdownReferenceElement", "odxDropdownTriggerElement", "odxDropdownHost", "odxDropdownOpenTrigger", "odxDropdownCloseTrigger"], outputs: ["odxDropdownBeforeOpen", "odxDropdownAfterOpen", "odxDropdownBeforeClose", "odxDropdownAfterClose"], exportAs: ["odxDropdown"] }, { kind: "ngmodule", type: HeaderModule }, { kind: "directive", type: LogoDirective, selector: "odx-logo", inputs: ["size", "variant"] }, { kind: "directive", type: SignInDirective, selector: "[odxButton][odxAuthSignIn]", outputs: ["odxAuthSignIn"] }, { kind: "directive", type: SignOutDirective, selector: "[odxButton][odxAuthSignOut]", outputs: ["odxAuthSignOut"] }, { kind: "ngmodule", type: LoadingSpinnerModule }, { kind: "directive", type: i9.LoadingSpinnerDirective, selector: "[odxLoadingSpinner]", inputs: ["odxLoadingSpinnerAutoColor", "odxLoadingSpinner", "odxLoadingSpinnerMinHeight"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
36
37
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AuthComponent, decorators: [{
37
38
  type: Component,
38
- args: [{ standalone: true, selector: 'odx-auth', imports: [CoreModule, AreaHeaderModule, DropdownModule, HeaderModule, LogoDirective, SignInDirective, SignOutDirective], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<odx-action-group *ngrxLet=\"{ idClaims: authService.identityClaims$, isAuthenticated: authService.isAuthenticated$ } as vm\">\n <ng-template [ngIf]=\"vm.isAuthenticated\" [ngIfElse]=\"notAuthenticated\">\n <button odxButton odxHeaderAvatar [odxDropdown]=\"userProfileMenu\" [odxDropdownOptions]=\"dropdownOptions\" data-testid=\"odx-auth-user-profile-button\">\n <ng-template [ngTemplateOutlet]=\"userAvatar\"></ng-template>\n </button>\n <ng-template #userProfileMenu>\n <odx-area-header class=\"odx-padding-x-12\" size=\"small\">\n <ng-template [ngTemplateOutlet]=\"userAvatar\" ngProjectAs=\"odx-avatar\"></ng-template>\n {{ authConfig.resolveUsername(vm.idClaims) }}\n <odx-area-header-subtitle>\n {{ vm.idClaims?.email }}\n </odx-area-header-subtitle>\n </odx-area-header>\n <ng-content></ng-content>\n <div class=\"odx-margin-top-12\" odxLayout=\"flex vertical-center\">\n <odx-logo odxLayout=\"auto\" class=\"odx-margin-left-12 odx-margin-right-auto\"></odx-logo>\n <button odxButton odxAuthSignOut variant=\"ghost\" data-testid=\"odx-auth-sign-out-button\">\n {{ signOutButtonText }}\n <odx-icon name=\"arrow-right\" alignRight></odx-icon>\n </button>\n </div>\n </ng-template>\n </ng-template>\n <ng-template #notAuthenticated>\n <button class=\"odx-auth-sign-in\" odxButton odxAuthSignIn variant=\"secondary\" data-testid=\"odx-auth-sign-in-button\">\n <odx-icon name=\"user\" alignLeft></odx-icon>\n {{ signInButtonText }}\n </button>\n </ng-template>\n <ng-template #userAvatar>\n <odx-avatar class=\"odx-auth-user-avatar\">\n {{ vm.idClaims?.initials ?? '' }}\n </odx-avatar>\n </ng-template>\n</odx-action-group>\n", styles: [".odx-auth-user-profile .odx-dropdown__inner>.odx-area-header{max-width:max(360px,25vw);min-width:296px}\n"] }]
39
+ args: [{ standalone: true, selector: 'odx-auth', imports: [CoreModule, AreaHeaderModule, DropdownModule, HeaderModule, LogoDirective, SignInDirective, SignOutDirective, LoadingSpinnerModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<odx-action-group>\n <ng-template [ngrxLet]=\"{ idClaims: authService.identityClaims$, isAuthenticated: authService.isAuthenticated$ }\" let-vm>\n <ng-template [ngIf]=\"vm.isAuthenticated\" [ngIfElse]=\"notAuthenticated\">\n <button odxButton [odxDropdown]=\"userProfileMenu\" [odxDropdownOptions]=\"dropdownOptions\" data-testid=\"odx-auth-user-profile-button\">\n <ng-template [ngTemplateOutlet]=\"userAvatar\"></ng-template>\n </button>\n <ng-template #userProfileMenu>\n <odx-area-header class=\"odx-padding-x-12\" size=\"small\">\n <ng-template [ngTemplateOutlet]=\"userAvatar\" ngProjectAs=\"odx-avatar\"></ng-template>\n {{ vm.idClaims?.username }}\n <odx-area-header-subtitle>\n {{ vm.idClaims?.email }}\n </odx-area-header-subtitle>\n </odx-area-header>\n <ng-content></ng-content>\n <div class=\"odx-margin-top-12\" odxLayout=\"flex vertical-center\">\n <odx-logo odxLayout=\"auto\" class=\"odx-margin-left-12 odx-margin-right-auto\"></odx-logo>\n <button odxButton odxAuthSignOut variant=\"ghost\" data-testid=\"odx-auth-sign-out-button\">\n {{ signOutButtonText }}\n <odx-icon name=\"arrow-right\" alignRight></odx-icon>\n </button>\n </div>\n </ng-template>\n </ng-template>\n <ng-template #notAuthenticated>\n <button class=\"odx-auth-sign-in\" odxButton odxAuthSignIn variant=\"secondary\" data-testid=\"odx-auth-sign-in-button\">\n <odx-icon name=\"user\" alignLeft></odx-icon>\n {{ signInButtonText }}\n </button>\n </ng-template>\n <ng-template #userAvatar>\n <odx-avatar class=\"odx-auth-user-avatar\">\n {{ vm.idClaims?.initials ?? '' }}\n </odx-avatar>\n </ng-template>\n </ng-template>\n <ng-template [ngIf]=\"authConfig.showRedirectOverlay\">\n <div class=\"odx-auth-overlay\" [odxLoadingSpinner]=\"true\" *ngIf=\"authService.isLoading$ | async\"></div>\n </ng-template>\n</odx-action-group>\n", styles: [".odx-auth-user-profile .odx-dropdown__inner>.odx-area-header{max-width:max(360px,25vw);min-width:296px}.odx-auth-overlay{position:fixed;z-index:var(--odx-v-layer-5);inset:0}\n"] }]
39
40
  }], propDecorators: { signInButtonText: [{
40
41
  type: Input
41
42
  }], signOutButtonText: [{
42
43
  type: Input
43
44
  }] } });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvYXV0aC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvYXV0aC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFtQixNQUFNLGtDQUFrQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7Ozs7QUFXakUsTUFBTSxPQUFPLGFBQWE7SUFUMUI7UUFVcUIsZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEMsZUFBVSxHQUFHLGdCQUFnQixFQUFFLENBQUM7UUFDaEMsb0JBQWUsR0FBRztZQUNuQyxRQUFRLEVBQUUsUUFBUSxDQUFDLFVBQVU7WUFDN0IsY0FBYyxFQUFFLEtBQUs7WUFDckIsY0FBYyxFQUFFLHVCQUF1QjtTQUNaLENBQUM7UUFHdkIscUJBQWdCLEdBQUcsU0FBUyxDQUFDO1FBRzdCLHNCQUFpQixHQUFHLFVBQVUsQ0FBQztLQUN2Qzs7MEdBZFksYUFBYTs4RkFBYixhQUFhLDhKQ3BCMUIsc3ZEQW1DQSxrS0RyQlksVUFBVSx5WkFBRSxnQkFBZ0IsbXFCQUFFLGNBQWMseWRBQUUsWUFBWSxzSUFBRSxhQUFhLGtGQUFFLGVBQWUsbUdBQUUsZ0JBQWdCOzJGQU0zRyxhQUFhO2tCQVR6QixTQUFTO2lDQUNJLElBQUksWUFDTixVQUFVLFdBQ1gsQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixDQUFDLG1CQUd0Ryx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJOzhCQVk5QixnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBSUMsaUJBQWlCO3NCQUR2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvcmVNb2R1bGUgfSBmcm9tICdAb2R4L2FuZ3VsYXInO1xuaW1wb3J0IHsgQXJlYUhlYWRlck1vZHVsZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2FyZWEtaGVhZGVyJztcbmltcG9ydCB7IERyb3Bkb3duTW9kdWxlLCBEcm9wZG93bk9wdGlvbnMgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBIZWFkZXJNb2R1bGUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9oZWFkZXInO1xuaW1wb3J0IHsgTG9nb0RpcmVjdGl2ZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2xvZ28nO1xuaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgaW5qZWN0QXV0aENvbmZpZyB9IGZyb20gJy4vYXV0aC5jb25maWcnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBTaWduSW5EaXJlY3RpdmUsIFNpZ25PdXREaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdvZHgtYXV0aCcsXG4gIGltcG9ydHM6IFtDb3JlTW9kdWxlLCBBcmVhSGVhZGVyTW9kdWxlLCBEcm9wZG93bk1vZHVsZSwgSGVhZGVyTW9kdWxlLCBMb2dvRGlyZWN0aXZlLCBTaWduSW5EaXJlY3RpdmUsIFNpZ25PdXREaXJlY3RpdmVdLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0aC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2F1dGguY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhDb21wb25lbnQge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXV0aENvbmZpZyA9IGluamVjdEF1dGhDb25maWcoKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRyb3Bkb3duT3B0aW9ucyA9IHtcbiAgICBwb3NpdGlvbjogUG9zaXRpb24uQk9UVE9NX0VORCxcbiAgICBlbmFibGVGYWxsYmFjazogZmFsc2UsXG4gICAgY29udGFpbmVyQ2xhc3M6ICdvZHgtYXV0aC11c2VyLXByb2ZpbGUnLFxuICB9IGFzIFBhcnRpYWw8RHJvcGRvd25PcHRpb25zPjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2lnbkluQnV0dG9uVGV4dCA9ICdTaWduIGluJztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2lnbk91dEJ1dHRvblRleHQgPSAnU2lnbiBvdXQnO1xufVxuIiwiPG9keC1hY3Rpb24tZ3JvdXAgKm5ncnhMZXQ9XCJ7IGlkQ2xhaW1zOiBhdXRoU2VydmljZS5pZGVudGl0eUNsYWltcyQsIGlzQXV0aGVudGljYXRlZDogYXV0aFNlcnZpY2UuaXNBdXRoZW50aWNhdGVkJCB9IGFzIHZtXCI+XG4gIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJ2bS5pc0F1dGhlbnRpY2F0ZWRcIiBbbmdJZkVsc2VdPVwibm90QXV0aGVudGljYXRlZFwiPlxuICAgIDxidXR0b24gb2R4QnV0dG9uIG9keEhlYWRlckF2YXRhciBbb2R4RHJvcGRvd25dPVwidXNlclByb2ZpbGVNZW51XCIgW29keERyb3Bkb3duT3B0aW9uc109XCJkcm9wZG93bk9wdGlvbnNcIiBkYXRhLXRlc3RpZD1cIm9keC1hdXRoLXVzZXItcHJvZmlsZS1idXR0b25cIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ1c2VyQXZhdGFyXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L2J1dHRvbj5cbiAgICA8bmctdGVtcGxhdGUgI3VzZXJQcm9maWxlTWVudT5cbiAgICAgIDxvZHgtYXJlYS1oZWFkZXIgY2xhc3M9XCJvZHgtcGFkZGluZy14LTEyXCIgc2l6ZT1cInNtYWxsXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ1c2VyQXZhdGFyXCIgbmdQcm9qZWN0QXM9XCJvZHgtYXZhdGFyXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAge3sgYXV0aENvbmZpZy5yZXNvbHZlVXNlcm5hbWUodm0uaWRDbGFpbXMpIH19XG4gICAgICAgIDxvZHgtYXJlYS1oZWFkZXItc3VidGl0bGU+XG4gICAgICAgICAge3sgdm0uaWRDbGFpbXM/LmVtYWlsIH19XG4gICAgICAgIDwvb2R4LWFyZWEtaGVhZGVyLXN1YnRpdGxlPlxuICAgICAgPC9vZHgtYXJlYS1oZWFkZXI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8ZGl2IGNsYXNzPVwib2R4LW1hcmdpbi10b3AtMTJcIiBvZHhMYXlvdXQ9XCJmbGV4IHZlcnRpY2FsLWNlbnRlclwiPlxuICAgICAgICA8b2R4LWxvZ28gb2R4TGF5b3V0PVwiYXV0b1wiIGNsYXNzPVwib2R4LW1hcmdpbi1sZWZ0LTEyIG9keC1tYXJnaW4tcmlnaHQtYXV0b1wiPjwvb2R4LWxvZ28+XG4gICAgICAgIDxidXR0b24gb2R4QnV0dG9uIG9keEF1dGhTaWduT3V0IHZhcmlhbnQ9XCJnaG9zdFwiIGRhdGEtdGVzdGlkPVwib2R4LWF1dGgtc2lnbi1vdXQtYnV0dG9uXCI+XG4gICAgICAgICAge3sgc2lnbk91dEJ1dHRvblRleHQgfX1cbiAgICAgICAgICA8b2R4LWljb24gbmFtZT1cImFycm93LXJpZ2h0XCIgYWxpZ25SaWdodD48L29keC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjbm90QXV0aGVudGljYXRlZD5cbiAgICA8YnV0dG9uIGNsYXNzPVwib2R4LWF1dGgtc2lnbi1pblwiIG9keEJ1dHRvbiBvZHhBdXRoU2lnbkluIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIiBkYXRhLXRlc3RpZD1cIm9keC1hdXRoLXNpZ24taW4tYnV0dG9uXCI+XG4gICAgICA8b2R4LWljb24gbmFtZT1cInVzZXJcIiBhbGlnbkxlZnQ+PC9vZHgtaWNvbj5cbiAgICAgIHt7IHNpZ25JbkJ1dHRvblRleHQgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICN1c2VyQXZhdGFyPlxuICAgIDxvZHgtYXZhdGFyIGNsYXNzPVwib2R4LWF1dGgtdXNlci1hdmF0YXJcIj5cbiAgICAgIHt7IHZtLmlkQ2xhaW1zPy5pbml0aWFscyA/PyAnJyB9fVxuICAgIDwvb2R4LWF2YXRhcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvb2R4LWFjdGlvbi1ncm91cD5cbiJdfQ==
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvYXV0aC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvYXV0aC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFtQixNQUFNLGtDQUFrQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7Ozs7QUFXakUsTUFBTSxPQUFPLGFBQWE7SUFUMUI7UUFVcUIsZUFBVSxHQUFHLGdCQUFnQixFQUFFLENBQUM7UUFDaEMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEMsb0JBQWUsR0FBRztZQUNuQyxRQUFRLEVBQUUsUUFBUSxDQUFDLFVBQVU7WUFDN0IsY0FBYyxFQUFFLEtBQUs7WUFDckIsY0FBYyxFQUFFLHVCQUF1QjtTQUNaLENBQUM7UUFHdkIscUJBQWdCLEdBQUcsU0FBUyxDQUFDO1FBRzdCLHNCQUFpQixHQUFHLFVBQVUsQ0FBQztLQUN2Qzs7MEdBZFksYUFBYTs4RkFBYixhQUFhLDhKQ3JCMUIsMC9EQXdDQSx3T0R6QlksVUFBVSw4Y0FBRSxnQkFBZ0IsbXFCQUFFLGNBQWMsMGZBQUUsWUFBWSwrQkFBRSxhQUFhLGtGQUFFLGVBQWUsbUdBQUUsZ0JBQWdCLG9HQUFFLG9CQUFvQjsyRkFNakksYUFBYTtrQkFUekIsU0FBUztpQ0FDSSxJQUFJLFlBQ04sVUFBVSxXQUNYLENBQUMsVUFBVSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsQ0FBQyxtQkFHNUgsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTs4QkFZOUIsZ0JBQWdCO3NCQUR0QixLQUFLO2dCQUlDLGlCQUFpQjtzQkFEdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb3JlTW9kdWxlIH0gZnJvbSAnQG9keC9hbmd1bGFyJztcbmltcG9ydCB7IEFyZWFIZWFkZXJNb2R1bGUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9hcmVhLWhlYWRlcic7XG5pbXBvcnQgeyBEcm9wZG93bk1vZHVsZSwgRHJvcGRvd25PcHRpb25zIH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgSGVhZGVyTW9kdWxlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvaGVhZGVyJztcbmltcG9ydCB7IExvYWRpbmdTcGlubmVyTW9kdWxlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvbG9hZGluZy1zcGlubmVyJztcbmltcG9ydCB7IExvZ29EaXJlY3RpdmUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9sb2dvJztcbmltcG9ydCB7IFBvc2l0aW9uIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IGluamVjdEF1dGhDb25maWcgfSBmcm9tICcuL2F1dGguY29uZmlnJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2lnbkluRGlyZWN0aXZlLCBTaWduT3V0RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnb2R4LWF1dGgnLFxuICBpbXBvcnRzOiBbQ29yZU1vZHVsZSwgQXJlYUhlYWRlck1vZHVsZSwgRHJvcGRvd25Nb2R1bGUsIEhlYWRlck1vZHVsZSwgTG9nb0RpcmVjdGl2ZSwgU2lnbkluRGlyZWN0aXZlLCBTaWduT3V0RGlyZWN0aXZlLCBMb2FkaW5nU3Bpbm5lck1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRoLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXV0aC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQXV0aENvbXBvbmVudCB7XG4gIHByb3RlY3RlZCByZWFkb25seSBhdXRoQ29uZmlnID0gaW5qZWN0QXV0aENvbmZpZygpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZHJvcGRvd25PcHRpb25zID0ge1xuICAgIHBvc2l0aW9uOiBQb3NpdGlvbi5CT1RUT01fRU5ELFxuICAgIGVuYWJsZUZhbGxiYWNrOiBmYWxzZSxcbiAgICBjb250YWluZXJDbGFzczogJ29keC1hdXRoLXVzZXItcHJvZmlsZScsXG4gIH0gYXMgUGFydGlhbDxEcm9wZG93bk9wdGlvbnM+O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaWduSW5CdXR0b25UZXh0ID0gJ1NpZ24gaW4nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaWduT3V0QnV0dG9uVGV4dCA9ICdTaWduIG91dCc7XG59XG4iLCI8b2R4LWFjdGlvbi1ncm91cD5cbiAgPG5nLXRlbXBsYXRlIFtuZ3J4TGV0XT1cInsgaWRDbGFpbXM6IGF1dGhTZXJ2aWNlLmlkZW50aXR5Q2xhaW1zJCwgaXNBdXRoZW50aWNhdGVkOiBhdXRoU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQkIH1cIiBsZXQtdm0+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cInZtLmlzQXV0aGVudGljYXRlZFwiIFtuZ0lmRWxzZV09XCJub3RBdXRoZW50aWNhdGVkXCI+XG4gICAgICA8YnV0dG9uIG9keEJ1dHRvbiBbb2R4RHJvcGRvd25dPVwidXNlclByb2ZpbGVNZW51XCIgW29keERyb3Bkb3duT3B0aW9uc109XCJkcm9wZG93bk9wdGlvbnNcIiBkYXRhLXRlc3RpZD1cIm9keC1hdXRoLXVzZXItcHJvZmlsZS1idXR0b25cIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInVzZXJBdmF0YXJcIj48L25nLXRlbXBsYXRlPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8bmctdGVtcGxhdGUgI3VzZXJQcm9maWxlTWVudT5cbiAgICAgICAgPG9keC1hcmVhLWhlYWRlciBjbGFzcz1cIm9keC1wYWRkaW5nLXgtMTJcIiBzaXplPVwic21hbGxcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwidXNlckF2YXRhclwiIG5nUHJvamVjdEFzPVwib2R4LWF2YXRhclwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAge3sgdm0uaWRDbGFpbXM/LnVzZXJuYW1lIH19XG4gICAgICAgICAgPG9keC1hcmVhLWhlYWRlci1zdWJ0aXRsZT5cbiAgICAgICAgICAgIHt7IHZtLmlkQ2xhaW1zPy5lbWFpbCB9fVxuICAgICAgICAgIDwvb2R4LWFyZWEtaGVhZGVyLXN1YnRpdGxlPlxuICAgICAgICA8L29keC1hcmVhLWhlYWRlcj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8ZGl2IGNsYXNzPVwib2R4LW1hcmdpbi10b3AtMTJcIiBvZHhMYXlvdXQ9XCJmbGV4IHZlcnRpY2FsLWNlbnRlclwiPlxuICAgICAgICAgIDxvZHgtbG9nbyBvZHhMYXlvdXQ9XCJhdXRvXCIgY2xhc3M9XCJvZHgtbWFyZ2luLWxlZnQtMTIgb2R4LW1hcmdpbi1yaWdodC1hdXRvXCI+PC9vZHgtbG9nbz5cbiAgICAgICAgICA8YnV0dG9uIG9keEJ1dHRvbiBvZHhBdXRoU2lnbk91dCB2YXJpYW50PVwiZ2hvc3RcIiBkYXRhLXRlc3RpZD1cIm9keC1hdXRoLXNpZ24tb3V0LWJ1dHRvblwiPlxuICAgICAgICAgICAge3sgc2lnbk91dEJ1dHRvblRleHQgfX1cbiAgICAgICAgICAgIDxvZHgtaWNvbiBuYW1lPVwiYXJyb3ctcmlnaHRcIiBhbGlnblJpZ2h0Pjwvb2R4LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjbm90QXV0aGVudGljYXRlZD5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJvZHgtYXV0aC1zaWduLWluXCIgb2R4QnV0dG9uIG9keEF1dGhTaWduSW4gdmFyaWFudD1cInNlY29uZGFyeVwiIGRhdGEtdGVzdGlkPVwib2R4LWF1dGgtc2lnbi1pbi1idXR0b25cIj5cbiAgICAgICAgPG9keC1pY29uIG5hbWU9XCJ1c2VyXCIgYWxpZ25MZWZ0Pjwvb2R4LWljb24+XG4gICAgICAgIHt7IHNpZ25JbkJ1dHRvblRleHQgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICN1c2VyQXZhdGFyPlxuICAgICAgPG9keC1hdmF0YXIgY2xhc3M9XCJvZHgtYXV0aC11c2VyLWF2YXRhclwiPlxuICAgICAgICB7eyB2bS5pZENsYWltcz8uaW5pdGlhbHMgPz8gJycgfX1cbiAgICAgIDwvb2R4LWF2YXRhcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgW25nSWZdPVwiYXV0aENvbmZpZy5zaG93UmVkaXJlY3RPdmVybGF5XCI+XG4gICAgPGRpdiBjbGFzcz1cIm9keC1hdXRoLW92ZXJsYXlcIiBbb2R4TG9hZGluZ1NwaW5uZXJdPVwidHJ1ZVwiICpuZ0lmPVwiYXV0aFNlcnZpY2UuaXNMb2FkaW5nJCB8IGFzeW5jXCI+PC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L29keC1hY3Rpb24tZ3JvdXA+XG4iXX0=
@@ -1,10 +1,24 @@
1
+ import { inject, InjectionToken } from '@angular/core';
1
2
  import { createConfigTokens } from '@odx/angular/utils';
3
+ import { createInitials, resolveEmail, resolveUsername } from './helpers';
2
4
  export const DEFAULT_AUTH_SCOPES = ['openid', 'profile', 'email', 'offline_access'];
3
5
  export const DEFAULT_ISSUERS = {
4
6
  dev: 'https://dev.login.draeger.com/oauth2/default',
5
7
  stage: 'https://test.login.draeger.com/oauth2/default',
6
8
  prod: 'https://login.draeger.com/oauth2/default',
7
9
  };
10
+ export const ODX_AUTH_CORE_PLUGINS = new InjectionToken('@odx/auth::CorePlugins', {
11
+ providedIn: 'root',
12
+ factory: () => [],
13
+ });
14
+ export const ODX_AUTH_PLUGINS = new InjectionToken('@odx/auth::Plugins', {
15
+ providedIn: 'root',
16
+ factory: () => {
17
+ const { plugins } = injectAuthConfig();
18
+ const corePlugins = inject(ODX_AUTH_CORE_PLUGINS);
19
+ return [...corePlugins, ...plugins].map((pluginFactory) => pluginFactory());
20
+ },
21
+ });
8
22
  export const { AuthDefaultConfig, AuthConfig, injectAuthConfig, provideAuthConfig } = createConfigTokens('Auth', '@odx/auth', {
9
23
  environment: 'prod',
10
24
  redirectPath: 'login/callback',
@@ -15,8 +29,10 @@ export const { AuthDefaultConfig, AuthConfig, injectAuthConfig, provideAuthConfi
15
29
  errorHandler: (error) => {
16
30
  throw error;
17
31
  },
18
- resolveUsername: (claims) => {
19
- return claims?.displayname || claims?.name || '';
20
- },
32
+ createInitials,
33
+ resolveEmail,
34
+ resolveUsername,
35
+ showRedirectOverlay: false,
36
+ plugins: [],
21
37
  });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvYXV0aC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFLeEQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3BGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBb0M7SUFDOUQsR0FBRyxFQUFFLDhDQUE4QztJQUNuRCxLQUFLLEVBQUUsK0NBQStDO0lBQ3RELElBQUksRUFBRSwwQ0FBMEM7Q0FDakQsQ0FBQztBQXNCRixNQUFNLENBQUMsTUFBTSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUU7SUFDNUgsV0FBVyxFQUFFLE1BQU07SUFDbkIsWUFBWSxFQUFFLGdCQUFnQjtJQUM5QixXQUFXLEVBQUUsRUFBRTtJQUNmLGFBQWEsRUFBRSxJQUFJO0lBQ25CLGNBQWMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7SUFDNUIsZUFBZSxFQUFFLEtBQUs7SUFDdEIsWUFBWSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDdEIsTUFBTSxLQUFLLENBQUM7SUFDZCxDQUFDO0lBQ0QsZUFBZSxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDMUIsT0FBTyxNQUFNLEVBQUUsV0FBVyxJQUFJLE1BQU0sRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ25ELENBQUM7Q0FDWSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVDb25maWdUb2tlbnMgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgT0F1dGhFcnJvckV2ZW50LCBPQXV0aFN0b3JhZ2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcblxuaW1wb3J0IHsgQXV0aEVudmlyb25tZW50IH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9BVVRIX1NDT1BFUyA9IFsnb3BlbmlkJywgJ3Byb2ZpbGUnLCAnZW1haWwnLCAnb2ZmbGluZV9hY2Nlc3MnXTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0lTU1VFUlM6IFJlY29yZDxBdXRoRW52aXJvbm1lbnQsIHN0cmluZz4gPSB7XG4gIGRldjogJ2h0dHBzOi8vZGV2LmxvZ2luLmRyYWVnZXIuY29tL29hdXRoMi9kZWZhdWx0JyxcbiAgc3RhZ2U6ICdodHRwczovL3Rlc3QubG9naW4uZHJhZWdlci5jb20vb2F1dGgyL2RlZmF1bHQnLFxuICBwcm9kOiAnaHR0cHM6Ly9sb2dpbi5kcmFlZ2VyLmNvbS9vYXV0aDIvZGVmYXVsdCcsXG59O1xuXG5leHBvcnQgdHlwZSBBdXRoRXJyb3JIYW5kbGVyRm4gPSAoZXJyb3I6IE9BdXRoRXJyb3JFdmVudCkgPT4gdm9pZDtcbmV4cG9ydCB0eXBlIFJlc29sdmVVc2VybmFtZUZuID0gKGNsYWltczogT2R4QXV0aC5JZGVudGl5Q2xhaW1zIHwgbnVsbCkgPT4gc3RyaW5nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhDb25maWcge1xuICBlbnZpcm9ubWVudDogQXV0aEVudmlyb25tZW50O1xuICBjbGllbnRJZD86IHN0cmluZztcbiAgaXNzdWVyPzogc3RyaW5nO1xuICByZWRpcmVjdFBhdGg6IHN0cmluZztcbiAgYWxsb3dlZFVybHM6IEFycmF5PHN0cmluZyB8IFJlZ0V4cD47XG4gIHRpbWVvdXRGYWN0b3I6IG51bWJlcjtcbiAgbWF4T2ZmbGluZVRpbWU6IG51bWJlcjtcbiAgbG9hZFVzZXJQcm9maWxlOiBib29sZWFuO1xuICBwb3N0TG9nb3V0UmVkaXJlY3RVcmw/OiBzdHJpbmc7XG4gIHNjb3Blcz86IHN0cmluZ1tdO1xuICBkaXNjb3ZlcnlVcmw/OiBzdHJpbmc7XG4gIGVycm9ySGFuZGxlcjogQXV0aEVycm9ySGFuZGxlckZuO1xuICByZXNvbHZlVXNlcm5hbWU6IFJlc29sdmVVc2VybmFtZUZuO1xuICBzdG9yYWdlPzogT0F1dGhTdG9yYWdlO1xufVxuXG5leHBvcnQgY29uc3QgeyBBdXRoRGVmYXVsdENvbmZpZywgQXV0aENvbmZpZywgaW5qZWN0QXV0aENvbmZpZywgcHJvdmlkZUF1dGhDb25maWcgfSA9IGNyZWF0ZUNvbmZpZ1Rva2VucygnQXV0aCcsICdAb2R4L2F1dGgnLCB7XG4gIGVudmlyb25tZW50OiAncHJvZCcsXG4gIHJlZGlyZWN0UGF0aDogJ2xvZ2luL2NhbGxiYWNrJyxcbiAgYWxsb3dlZFVybHM6IFtdLFxuICB0aW1lb3V0RmFjdG9yOiAwLjc1LFxuICBtYXhPZmZsaW5lVGltZTogMjQgKiA2MCAqIDYwLCAvLyAxIGRheVxuICBsb2FkVXNlclByb2ZpbGU6IGZhbHNlLFxuICBlcnJvckhhbmRsZXI6IChlcnJvcikgPT4ge1xuICAgIHRocm93IGVycm9yO1xuICB9LFxuICByZXNvbHZlVXNlcm5hbWU6IChjbGFpbXMpID0+IHtcbiAgICByZXR1cm4gY2xhaW1zPy5kaXNwbGF5bmFtZSB8fCBjbGFpbXM/Lm5hbWUgfHwgJyc7XG4gIH0sXG59IGFzIEF1dGhDb25maWcpO1xuIl19
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvYXV0aC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBSTFFLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUNwRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQW9DO0lBQzlELEdBQUcsRUFBRSw4Q0FBOEM7SUFDbkQsS0FBSyxFQUFFLCtDQUErQztJQUN0RCxJQUFJLEVBQUUsMENBQTBDO0NBQ2pELENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FBc0Isd0JBQXdCLEVBQUU7SUFDckcsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Q0FDbEIsQ0FBQyxDQUFDO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQWUsb0JBQW9CLEVBQUU7SUFDckYsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNaLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRWxELE9BQU8sQ0FBQyxHQUFHLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUM5RSxDQUFDO0NBQ0YsQ0FBQyxDQUFDO0FBNEJILE1BQU0sQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRTtJQUM1SCxXQUFXLEVBQUUsTUFBTTtJQUNuQixZQUFZLEVBQUUsZ0JBQWdCO0lBQzlCLFdBQVcsRUFBRSxFQUFFO0lBQ2YsYUFBYSxFQUFFLElBQUk7SUFDbkIsY0FBYyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtJQUM1QixlQUFlLEVBQUUsS0FBSztJQUN0QixZQUFZLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUN0QixNQUFNLEtBQUssQ0FBQztJQUNkLENBQUM7SUFDRCxjQUFjO0lBQ2QsWUFBWTtJQUNaLGVBQWU7SUFDZixtQkFBbUIsRUFBRSxLQUFLO0lBQzFCLE9BQU8sRUFBRSxFQUFFO0NBQ0UsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY3JlYXRlQ29uZmlnVG9rZW5zIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IE9BdXRoRXJyb3JFdmVudCwgT0F1dGhTdG9yYWdlIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XG5pbXBvcnQgeyBjcmVhdGVJbml0aWFscywgcmVzb2x2ZUVtYWlsLCByZXNvbHZlVXNlcm5hbWUgfSBmcm9tICcuL2hlbHBlcnMnO1xuXG5pbXBvcnQgeyBBdXRoRW52aXJvbm1lbnQsIEF1dGhQbHVnaW4sIEF1dGhQbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9BVVRIX1NDT1BFUyA9IFsnb3BlbmlkJywgJ3Byb2ZpbGUnLCAnZW1haWwnLCAnb2ZmbGluZV9hY2Nlc3MnXTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0lTU1VFUlM6IFJlY29yZDxBdXRoRW52aXJvbm1lbnQsIHN0cmluZz4gPSB7XG4gIGRldjogJ2h0dHBzOi8vZGV2LmxvZ2luLmRyYWVnZXIuY29tL29hdXRoMi9kZWZhdWx0JyxcbiAgc3RhZ2U6ICdodHRwczovL3Rlc3QubG9naW4uZHJhZWdlci5jb20vb2F1dGgyL2RlZmF1bHQnLFxuICBwcm9kOiAnaHR0cHM6Ly9sb2dpbi5kcmFlZ2VyLmNvbS9vYXV0aDIvZGVmYXVsdCcsXG59O1xuZXhwb3J0IGNvbnN0IE9EWF9BVVRIX0NPUkVfUExVR0lOUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBdXRoUGx1Z2luRmFjdG9yeVtdPignQG9keC9hdXRoOjpDb3JlUGx1Z2lucycsIHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBmYWN0b3J5OiAoKSA9PiBbXSxcbn0pO1xuZXhwb3J0IGNvbnN0IE9EWF9BVVRIX1BMVUdJTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48QXV0aFBsdWdpbltdPignQG9keC9hdXRoOjpQbHVnaW5zJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IHtcbiAgICBjb25zdCB7IHBsdWdpbnMgfSA9IGluamVjdEF1dGhDb25maWcoKTtcbiAgICBjb25zdCBjb3JlUGx1Z2lucyA9IGluamVjdChPRFhfQVVUSF9DT1JFX1BMVUdJTlMpO1xuXG4gICAgcmV0dXJuIFsuLi5jb3JlUGx1Z2lucywgLi4ucGx1Z2luc10ubWFwKChwbHVnaW5GYWN0b3J5KSA9PiBwbHVnaW5GYWN0b3J5KCkpO1xuICB9LFxufSk7XG5cbmV4cG9ydCB0eXBlIEF1dGhFcnJvckhhbmRsZXJGbiA9IChlcnJvcjogT0F1dGhFcnJvckV2ZW50KSA9PiB2b2lkO1xuZXhwb3J0IHR5cGUgUmVzb2x2ZVVzZXJuYW1lRm4gPSAocmF3Q2xhaW1zOiBPZHhBdXRoLlJhd0lkZW50aXR5Q2xhaW1zKSA9PiBzdHJpbmc7XG5leHBvcnQgdHlwZSBSZXNvbHZlRW1haWxGbiA9IChyYXdDbGFpbXM6IE9keEF1dGguUmF3SWRlbnRpdHlDbGFpbXMpID0+IHN0cmluZztcbmV4cG9ydCB0eXBlIENyZWF0ZUluaXRpYWxzRm4gPSAodmFsdWU6IHN0cmluZykgPT4gc3RyaW5nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhDb25maWcge1xuICBlbnZpcm9ubWVudDogQXV0aEVudmlyb25tZW50O1xuICBjbGllbnRJZD86IHN0cmluZztcbiAgaXNzdWVyPzogc3RyaW5nO1xuICByZWRpcmVjdFBhdGg6IHN0cmluZztcbiAgYWxsb3dlZFVybHM6IEFycmF5PHN0cmluZyB8IFJlZ0V4cD47XG4gIHRpbWVvdXRGYWN0b3I6IG51bWJlcjtcbiAgbWF4T2ZmbGluZVRpbWU6IG51bWJlcjtcbiAgbG9hZFVzZXJQcm9maWxlOiBib29sZWFuO1xuICBwb3N0TG9nb3V0UmVkaXJlY3RVcmw/OiBzdHJpbmc7XG4gIHNjb3Blcz86IHN0cmluZ1tdO1xuICBkaXNjb3ZlcnlVcmw/OiBzdHJpbmc7XG4gIGVycm9ySGFuZGxlcjogQXV0aEVycm9ySGFuZGxlckZuO1xuICBjcmVhdGVJbml0aWFsczogQ3JlYXRlSW5pdGlhbHNGbjtcbiAgcmVzb2x2ZUVtYWlsOiBSZXNvbHZlRW1haWxGbjtcbiAgcmVzb2x2ZVVzZXJuYW1lOiBSZXNvbHZlVXNlcm5hbWVGbjtcbiAgc3RvcmFnZT86IE9BdXRoU3RvcmFnZTtcbiAgcGx1Z2luczogQXV0aFBsdWdpbkZhY3RvcnlbXTtcbiAgc2hvd1JlZGlyZWN0T3ZlcmxheTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IHsgQXV0aERlZmF1bHRDb25maWcsIEF1dGhDb25maWcsIGluamVjdEF1dGhDb25maWcsIHByb3ZpZGVBdXRoQ29uZmlnIH0gPSBjcmVhdGVDb25maWdUb2tlbnMoJ0F1dGgnLCAnQG9keC9hdXRoJywge1xuICBlbnZpcm9ubWVudDogJ3Byb2QnLFxuICByZWRpcmVjdFBhdGg6ICdsb2dpbi9jYWxsYmFjaycsXG4gIGFsbG93ZWRVcmxzOiBbXSxcbiAgdGltZW91dEZhY3RvcjogMC43NSxcbiAgbWF4T2ZmbGluZVRpbWU6IDI0ICogNjAgKiA2MCwgLy8gMSBkYXlcbiAgbG9hZFVzZXJQcm9maWxlOiBmYWxzZSxcbiAgZXJyb3JIYW5kbGVyOiAoZXJyb3IpID0+IHtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfSxcbiAgY3JlYXRlSW5pdGlhbHMsXG4gIHJlc29sdmVFbWFpbCxcbiAgcmVzb2x2ZVVzZXJuYW1lLFxuICBzaG93UmVkaXJlY3RPdmVybGF5OiBmYWxzZSxcbiAgcGx1Z2luczogW10sXG59IGFzIEF1dGhDb25maWcpO1xuIl19
@@ -16,7 +16,7 @@ export class AuthDirective {
16
16
  this.ngIfDirective.ngIfElse = value;
17
17
  }
18
18
  ngAfterViewInit() {
19
- this.authService.isAuthenticated$.pipe(this.takeUntilDestroyed()).subscribe(() => {
19
+ this.authService.identityClaims$.pipe(this.takeUntilDestroyed()).subscribe(() => {
20
20
  const handler = isString(this.authorizationHandler) ? null : this.authorizationHandler;
21
21
  this.ngIfDirective.ngIf = this.authService.isAuthorized(handler);
22
22
  });
@@ -38,4 +38,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
38
38
  type: Input,
39
39
  args: ['odxAuthElse']
40
40
  }] } });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvYXV0aC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBZSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBaUIsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFRN0MsTUFBTSxPQUFPLGFBQWE7SUFMMUI7UUFNbUIsZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEMsa0JBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDN0MsdUJBQWtCLEdBQUcsY0FBYyxFQUFFLENBQUM7UUFHaEQseUJBQW9CLEdBQXVDLElBQUksQ0FBQztLQWN4RTtJQVpDLDJEQUEyRDtJQUMzRCxJQUNXLFlBQVksQ0FBQyxLQUF3QztRQUM5RCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDdEMsQ0FBQztJQUVNLGVBQWU7UUFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQy9FLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUM7WUFDdkYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzswR0FuQlUsYUFBYTs4RkFBYixhQUFhOzJGQUFiLGFBQWE7a0JBTHpCLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQztpQkFDdkI7OEJBT1Esb0JBQW9CO3NCQUQxQixLQUFLO3VCQUFDLFNBQVM7Z0JBS0wsWUFBWTtzQkFEdEIsS0FBSzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiwgTmdJZkNvbnRleHQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBpbmplY3QsIElucHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNTdHJpbmcsIHVudGlsRGVzdHJveWVkIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aG9yaXplZEhhbmRsZXIgfSBmcm9tICcuL21vZGVscyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ25nLXRlbXBsYXRlW29keEF1dGhdJyxcbiAgaG9zdERpcmVjdGl2ZXM6IFtOZ0lmXSxcbn0pXG5leHBvcnQgY2xhc3MgQXV0aERpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBwcml2YXRlIHJlYWRvbmx5IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBuZ0lmRGlyZWN0aXZlID0gaW5qZWN0KE5nSWYsIHsgaG9zdDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSB0YWtlVW50aWxEZXN0cm95ZWQgPSB1bnRpbERlc3Ryb3llZCgpO1xuXG4gIEBJbnB1dCgnb2R4QXV0aCcpXG4gIHB1YmxpYyBhdXRob3JpemF0aW9uSGFuZGxlcj86IEF1dGhvcml6ZWRIYW5kbGVyIHwgbnVsbCB8IHN0cmluZyA9IG51bGw7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgQElucHV0KCdvZHhBdXRoRWxzZScpXG4gIHB1YmxpYyBzZXQgZWxzZVRlbXBsYXRlKHZhbHVlOiBUZW1wbGF0ZVJlZjxOZ0lmQ29udGV4dDx1bmtub3duPj4pIHtcbiAgICB0aGlzLm5nSWZEaXJlY3RpdmUubmdJZkVsc2UgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hdXRoU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQkLnBpcGUodGhpcy50YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGNvbnN0IGhhbmRsZXIgPSBpc1N0cmluZyh0aGlzLmF1dGhvcml6YXRpb25IYW5kbGVyKSA/IG51bGwgOiB0aGlzLmF1dGhvcml6YXRpb25IYW5kbGVyO1xuICAgICAgdGhpcy5uZ0lmRGlyZWN0aXZlLm5nSWYgPSB0aGlzLmF1dGhTZXJ2aWNlLmlzQXV0aG9yaXplZChoYW5kbGVyKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvYXV0aC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBZSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBaUIsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFRN0MsTUFBTSxPQUFPLGFBQWE7SUFMMUI7UUFNbUIsZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEMsa0JBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDN0MsdUJBQWtCLEdBQUcsY0FBYyxFQUFFLENBQUM7UUFHaEQseUJBQW9CLEdBQXVDLElBQUksQ0FBQztLQWN4RTtJQVpDLDJEQUEyRDtJQUMzRCxJQUNXLFlBQVksQ0FBQyxLQUF3QztRQUM5RCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDdEMsQ0FBQztJQUVNLGVBQWU7UUFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM5RSxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1lBQ3ZGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25FLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7MEdBbkJVLGFBQWE7OEZBQWIsYUFBYTsyRkFBYixhQUFhO2tCQUx6QixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQUM7aUJBQ3ZCOzhCQU9RLG9CQUFvQjtzQkFEMUIsS0FBSzt1QkFBQyxTQUFTO2dCQUtMLFlBQVk7c0JBRHRCLEtBQUs7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nSWYsIE5nSWZDb250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgaW5qZWN0LCBJbnB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzU3RyaW5nLCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhvcml6ZWRIYW5kbGVyIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtvZHhBdXRoXScsXG4gIGhvc3REaXJlY3RpdmVzOiBbTmdJZl0sXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbmdJZkRpcmVjdGl2ZSA9IGluamVjdChOZ0lmLCB7IGhvc3Q6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGFrZVVudGlsRGVzdHJveWVkID0gdW50aWxEZXN0cm95ZWQoKTtcblxuICBASW5wdXQoJ29keEF1dGgnKVxuICBwdWJsaWMgYXV0aG9yaXphdGlvbkhhbmRsZXI/OiBBdXRob3JpemVkSGFuZGxlciB8IG51bGwgfCBzdHJpbmcgPSBudWxsO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gIEBJbnB1dCgnb2R4QXV0aEVsc2UnKVxuICBwdWJsaWMgc2V0IGVsc2VUZW1wbGF0ZSh2YWx1ZTogVGVtcGxhdGVSZWY8TmdJZkNvbnRleHQ8dW5rbm93bj4+KSB7XG4gICAgdGhpcy5uZ0lmRGlyZWN0aXZlLm5nSWZFbHNlID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYXV0aFNlcnZpY2UuaWRlbnRpdHlDbGFpbXMkLnBpcGUodGhpcy50YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGNvbnN0IGhhbmRsZXIgPSBpc1N0cmluZyh0aGlzLmF1dGhvcml6YXRpb25IYW5kbGVyKSA/IG51bGwgOiB0aGlzLmF1dGhvcml6YXRpb25IYW5kbGVyO1xuICAgICAgdGhpcy5uZ0lmRGlyZWN0aXZlLm5nSWYgPSB0aGlzLmF1dGhTZXJ2aWNlLmlzQXV0aG9yaXplZChoYW5kbGVyKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,18 +1,29 @@
1
1
  import { inject } from '@angular/core';
2
2
  import { Router } from '@angular/router';
3
- import { map, take } from 'rxjs';
3
+ import { isString } from '@odx/angular/utils';
4
+ import { map, take, tap } from 'rxjs';
4
5
  import { AuthService } from './auth.service';
5
- export function authGuard(authorizedHandler) {
6
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
+ export function authGuard(authorizedHandler, redirectTo) {
6
8
  return (_, state) => {
7
9
  const authService = inject(AuthService);
8
- const router = inject(Router);
9
- const isAuthorized = () => authorizedHandler?.(authService.getIdentityClaims(), router, authService);
10
+ const router = inject(Router, { optional: true });
10
11
  return authService.isAuthenticated$.pipe(map((isAuthenticated) => {
11
12
  if (!isAuthenticated) {
12
13
  authService.signIn(state.url);
14
+ return false;
15
+ }
16
+ return authorizedHandler?.(authService.getIdentityClaims(), authService, router) ?? isAuthenticated;
17
+ }), tap((isAuthorized) => {
18
+ if (isAuthorized || !router)
19
+ return;
20
+ if (isString(redirectTo)) {
21
+ router.navigateByUrl(redirectTo);
22
+ }
23
+ else if (Array.isArray(redirectTo)) {
24
+ router.navigate(redirectTo);
13
25
  }
14
- return isAuthorized() ?? isAuthenticated;
15
26
  }), take(1));
16
27
  };
17
28
  }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2F1dGgvc3JjL2xpYi9hdXRoLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFpQixNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHN0MsTUFBTSxVQUFVLFNBQVMsQ0FBQyxpQkFBK0M7SUFDdkUsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUNsQixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlCLE1BQU0sWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUMsV0FBVyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRXJHLE9BQU8sV0FBVyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FDdEMsR0FBRyxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUU7WUFDdEIsSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDcEIsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDL0I7WUFDRCxPQUFPLFlBQVksRUFBRSxJQUFJLGVBQWUsQ0FBQztRQUMzQyxDQUFDLENBQUMsRUFDRixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ1IsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbkFjdGl2YXRlRm4sIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBtYXAsIHRha2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aG9yaXplZEhhbmRsZXJXaXRoUm91dGVyIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gYXV0aEd1YXJkKGF1dGhvcml6ZWRIYW5kbGVyPzogQXV0aG9yaXplZEhhbmRsZXJXaXRoUm91dGVyKTogQ2FuQWN0aXZhdGVGbiB7XG4gIHJldHVybiAoXywgc3RhdGUpID0+IHtcbiAgICBjb25zdCBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gICAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gICAgY29uc3QgaXNBdXRob3JpemVkID0gKCkgPT4gYXV0aG9yaXplZEhhbmRsZXI/LihhdXRoU2VydmljZS5nZXRJZGVudGl0eUNsYWltcygpLCByb3V0ZXIsIGF1dGhTZXJ2aWNlKTtcblxuICAgIHJldHVybiBhdXRoU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQkLnBpcGUoXG4gICAgICBtYXAoKGlzQXV0aGVudGljYXRlZCkgPT4ge1xuICAgICAgICBpZiAoIWlzQXV0aGVudGljYXRlZCkge1xuICAgICAgICAgIGF1dGhTZXJ2aWNlLnNpZ25JbihzdGF0ZS51cmwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0F1dGhvcml6ZWQoKSA/PyBpc0F1dGhlbnRpY2F0ZWQ7XG4gICAgICB9KSxcbiAgICAgIHRha2UoMSlcbiAgICApO1xuICB9O1xufVxuIl19
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2F1dGgvc3JjL2xpYi9hdXRoLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFpQixNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc3Qyw4REFBOEQ7QUFDOUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxpQkFBcUMsRUFBRSxVQUEyQjtJQUMxRixPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQ2xCLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFbEQsT0FBTyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUN0QyxHQUFHLENBQUMsQ0FBQyxlQUFlLEVBQUUsRUFBRTtZQUN0QixJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUNwQixXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFFOUIsT0FBTyxLQUFLLENBQUM7YUFDZDtZQUNELE9BQU8saUJBQWlCLEVBQUUsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLElBQUksZUFBZSxDQUFDO1FBQ3RHLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQ25CLElBQUksWUFBWSxJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPO1lBQ3BDLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUN4QixNQUFNLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ2xDO2lCQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDcEMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUM3QjtRQUNILENBQUMsQ0FBQyxFQUNGLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDUixDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FuQWN0aXZhdGVGbiwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGlzU3RyaW5nIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IG1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhvcml6ZWRIYW5kbGVyIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGZ1bmN0aW9uIGF1dGhHdWFyZChhdXRob3JpemVkSGFuZGxlcj86IEF1dGhvcml6ZWRIYW5kbGVyLCByZWRpcmVjdFRvPzogYW55W10gfCBzdHJpbmcpOiBDYW5BY3RpdmF0ZUZuIHtcbiAgcmV0dXJuIChfLCBzdGF0ZSkgPT4ge1xuICAgIGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gICAgcmV0dXJuIGF1dGhTZXJ2aWNlLmlzQXV0aGVudGljYXRlZCQucGlwZShcbiAgICAgIG1hcCgoaXNBdXRoZW50aWNhdGVkKSA9PiB7XG4gICAgICAgIGlmICghaXNBdXRoZW50aWNhdGVkKSB7XG4gICAgICAgICAgYXV0aFNlcnZpY2Uuc2lnbkluKHN0YXRlLnVybCk7XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF1dGhvcml6ZWRIYW5kbGVyPy4oYXV0aFNlcnZpY2UuZ2V0SWRlbnRpdHlDbGFpbXMoKSwgYXV0aFNlcnZpY2UsIHJvdXRlcikgPz8gaXNBdXRoZW50aWNhdGVkO1xuICAgICAgfSksXG4gICAgICB0YXAoKGlzQXV0aG9yaXplZCkgPT4ge1xuICAgICAgICBpZiAoaXNBdXRob3JpemVkIHx8ICFyb3V0ZXIpIHJldHVybjtcbiAgICAgICAgaWYgKGlzU3RyaW5nKHJlZGlyZWN0VG8pKSB7XG4gICAgICAgICAgcm91dGVyLm5hdmlnYXRlQnlVcmwocmVkaXJlY3RUbyk7XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyZWRpcmVjdFRvKSkge1xuICAgICAgICAgIHJvdXRlci5uYXZpZ2F0ZShyZWRpcmVjdFRvKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0YWtlKDEpLFxuICAgICk7XG4gIH07XG59XG4iXX0=
@@ -3,8 +3,9 @@ import { WindowRef } from '@odx/angular';
3
3
  import { buildUrl, isString } from '@odx/angular/utils';
4
4
  import { OAuthModuleConfig, OAuthStorage, provideOAuthClient } from 'angular-oauth2-oidc';
5
5
  import { tap } from 'rxjs';
6
- import { AuthConfig, DEFAULT_AUTH_SCOPES, DEFAULT_ISSUERS, injectAuthConfig, provideAuthConfig } from './auth.config';
6
+ import { AuthConfig, DEFAULT_AUTH_SCOPES, DEFAULT_ISSUERS, injectAuthConfig, ODX_AUTH_CORE_PLUGINS, provideAuthConfig } from './auth.config';
7
7
  import { AuthService } from './auth.service';
8
+ import { coreIdentityPlugin } from './plugins';
8
9
  export function configureInterceptor() {
9
10
  const { allowedUrls } = injectAuthConfig();
10
11
  return {
@@ -60,6 +61,10 @@ export function provideAuth(config) {
60
61
  provide: OAuthStorage,
61
62
  useFactory: () => inject(AuthConfig).storage ?? inject(WindowRef).nativeWindow.localStorage,
62
63
  },
64
+ {
65
+ provide: ODX_AUTH_CORE_PLUGINS,
66
+ useValue: [coreIdentityPlugin],
67
+ },
63
68
  ]);
64
69
  }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5wcm92aWRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvYXV0aC5wcm92aWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBd0IsdUJBQXVCLEVBQUUsTUFBTSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RKLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBc0MsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE1BQU0sVUFBVSxvQkFBb0I7SUFDbEMsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFDM0MsT0FBTztRQUNMLGNBQWMsRUFBRTtZQUNkLG1CQUFtQixFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUM3SSxlQUFlLEVBQUUsSUFBSTtTQUN0QjtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQjtJQUN4QyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDeEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDN0MsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFFNUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUN6RyxDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQjtJQUNqQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztJQUN2SSxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDeEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzdDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXRGLE9BQU8sR0FBRyxFQUFFLENBQ1YsV0FBVyxDQUFDLFVBQVUsQ0FBQztRQUNyQixRQUFRO1FBQ1IsTUFBTSxFQUFFLE1BQU0sSUFBSSxlQUFlLENBQUMsV0FBVyxDQUFDO1FBQzlDLEtBQUs7UUFDTCxXQUFXLEVBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUM7UUFDM0MscUJBQXFCLEVBQUUscUJBQXFCO1FBQzVDLHNCQUFzQixFQUFFLElBQUk7UUFDNUIsaUNBQWlDLEVBQUUsQ0FBQyxZQUFZO1FBQ2hELFlBQVksRUFBRSxNQUFNO1FBQ3BCLG9CQUFvQixFQUFFLFdBQVcsS0FBSyxLQUFLO1FBQzNDLGFBQWE7S0FDZCxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBK0IsTUFBOEM7SUFDdEcsT0FBTyx3QkFBd0IsQ0FBQztRQUM5QixpQkFBaUIsQ0FBQyxNQUFNLENBQUM7UUFDekIsa0JBQWtCLEVBQUU7UUFDcEI7WUFDRSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFVBQVUsRUFBRSxvQkFBb0I7U0FDakM7UUFDRDtZQUNFLE9BQU8sRUFBRSx1QkFBdUI7WUFDaEMsUUFBUSxFQUFFLDBCQUEwQjtZQUNwQyxLQUFLLEVBQUUsSUFBSTtTQUNaO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsZUFBZTtZQUN4QixVQUFVLEVBQUUsbUJBQW1CO1lBQy9CLEtBQUssRUFBRSxJQUFJO1NBQ1o7UUFDRDtZQUNFLE9BQU8sRUFBRSxZQUFZO1lBQ3JCLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUMsWUFBWTtTQUM1RjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUFBfSU5JVElBTElaRVIsIEVudmlyb25tZW50SW5qZWN0b3IsIEVudmlyb25tZW50UHJvdmlkZXJzLCBFTlZJUk9OTUVOVF9JTklUSUFMSVpFUiwgaW5qZWN0LCBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFdpbmRvd1JlZiB9IGZyb20gJ0BvZHgvYW5ndWxhcic7XG5pbXBvcnQgeyBidWlsZFVybCwgQ29uZmlnRGVwZW5kZW5jaWVzLCBDb25maWdQcm92aWRlciwgaXNTdHJpbmcgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgT0F1dGhNb2R1bGVDb25maWcsIE9BdXRoU3RvcmFnZSwgcHJvdmlkZU9BdXRoQ2xpZW50IH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEF1dGhDb25maWcsIERFRkFVTFRfQVVUSF9TQ09QRVMsIERFRkFVTFRfSVNTVUVSUywgaW5qZWN0QXV0aENvbmZpZywgcHJvdmlkZUF1dGhDb25maWcgfSBmcm9tICcuL2F1dGguY29uZmlnJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuXG5leHBvcnQgZnVuY3Rpb24gY29uZmlndXJlSW50ZXJjZXB0b3IoKTogT0F1dGhNb2R1bGVDb25maWcge1xuICBjb25zdCB7IGFsbG93ZWRVcmxzIH0gPSBpbmplY3RBdXRoQ29uZmlnKCk7XG4gIHJldHVybiB7XG4gICAgcmVzb3VyY2VTZXJ2ZXI6IHtcbiAgICAgIGN1c3RvbVVybFZhbGlkYXRpb246ICh1cmwpID0+IGFsbG93ZWRVcmxzLnNvbWUoKGFsbG93ZWRVcmwpID0+IChpc1N0cmluZyhhbGxvd2VkVXJsKSA/IHVybC5zdGFydHNXaXRoKGFsbG93ZWRVcmwpIDogISF1cmwubWF0Y2goYWxsb3dlZFVybCkpKSxcbiAgICAgIHNlbmRBY2Nlc3NUb2tlbjogdHJ1ZSxcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGl6ZUF1dGhFcnJvckhhbmRsZXIoKTogdm9pZCB7XG4gIGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgY29uc3QgaW5qZWN0b3IgPSBpbmplY3QoRW52aXJvbm1lbnRJbmplY3Rvcik7XG4gIGNvbnN0IHsgZXJyb3JIYW5kbGVyIH0gPSBpbmplY3RBdXRoQ29uZmlnKCk7XG5cbiAgYXV0aFNlcnZpY2UuZXJyb3JzJC5waXBlKHRhcCgoZXJyb3IpID0+IGluamVjdG9yLnJ1bkluQ29udGV4dCgoKSA9PiBlcnJvckhhbmRsZXIoZXJyb3IpKSkpLnN1YnNjcmliZSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdGFsaXplQXV0aENvbmZpZygpOiAoKSA9PiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBjbGllbnRJZCwgc2NvcGVzLCByZWRpcmVjdFBhdGgsIGVudmlyb25tZW50LCBwb3N0TG9nb3V0UmVkaXJlY3RVcmwsIGlzc3VlciwgdGltZW91dEZhY3RvciwgZGlzY292ZXJ5VXJsIH0gPSBpbmplY3RBdXRoQ29uZmlnKCk7XG4gIGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgY29uc3Qgb3JpZ2luID0gaW5qZWN0KFdpbmRvd1JlZikuZ2V0T3JpZ2luKCk7XG4gIGNvbnN0IHNjb3BlID0gQXJyYXkuZnJvbShuZXcgU2V0KERFRkFVTFRfQVVUSF9TQ09QRVMuY29uY2F0KHNjb3BlcyA/PyBbXSkpKS5qb2luKCcgJyk7XG5cbiAgcmV0dXJuICgpID0+XG4gICAgYXV0aFNlcnZpY2UuaW5pdGlhbGl6ZSh7XG4gICAgICBjbGllbnRJZCxcbiAgICAgIGlzc3VlcjogaXNzdWVyID8/IERFRkFVTFRfSVNTVUVSU1tlbnZpcm9ubWVudF0sXG4gICAgICBzY29wZSxcbiAgICAgIHJlZGlyZWN0VXJpOiBidWlsZFVybChvcmlnaW4sIHJlZGlyZWN0UGF0aCksXG4gICAgICBwb3N0TG9nb3V0UmVkaXJlY3RVcmk6IHBvc3RMb2dvdXRSZWRpcmVjdFVybCxcbiAgICAgIHByZXNlcnZlUmVxdWVzdGVkUm91dGU6IHRydWUsXG4gICAgICBzdHJpY3REaXNjb3ZlcnlEb2N1bWVudFZhbGlkYXRpb246ICFkaXNjb3ZlcnlVcmwsXG4gICAgICByZXNwb25zZVR5cGU6ICdjb2RlJyxcbiAgICAgIHNob3dEZWJ1Z0luZm9ybWF0aW9uOiBlbnZpcm9ubWVudCA9PT0gJ2RldicsXG4gICAgICB0aW1lb3V0RmFjdG9yLFxuICAgIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUF1dGg8RCBleHRlbmRzIENvbmZpZ0RlcGVuZGVuY2llcz4oY29uZmlnOiBDb25maWdQcm92aWRlcjxQYXJ0aWFsPEF1dGhDb25maWc+LCBEPik6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcbiAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhbXG4gICAgcHJvdmlkZUF1dGhDb25maWcoY29uZmlnKSxcbiAgICBwcm92aWRlT0F1dGhDbGllbnQoKSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBPQXV0aE1vZHVsZUNvbmZpZyxcbiAgICAgIHVzZUZhY3Rvcnk6IGNvbmZpZ3VyZUludGVyY2VwdG9yLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogRU5WSVJPTk1FTlRfSU5JVElBTElaRVIsXG4gICAgICB1c2VWYWx1ZTogaW5pdGlhbGl6ZUF1dGhFcnJvckhhbmRsZXIsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAgICAgIHVzZUZhY3Rvcnk6IGluaXRhbGl6ZUF1dGhDb25maWcsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE9BdXRoU3RvcmFnZSxcbiAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IGluamVjdChBdXRoQ29uZmlnKS5zdG9yYWdlID8/IGluamVjdChXaW5kb3dSZWYpLm5hdGl2ZVdpbmRvdy5sb2NhbFN0b3JhZ2UsXG4gICAgfSxcbiAgXSk7XG59XG4iXX0=
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5wcm92aWRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvYXV0aC5wcm92aWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBd0IsdUJBQXVCLEVBQUUsTUFBTSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RKLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBc0MsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0ksT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUUvQyxNQUFNLFVBQVUsb0JBQW9CO0lBQ2xDLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzNDLE9BQU87UUFDTCxjQUFjLEVBQUU7WUFDZCxtQkFBbUIsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDN0ksZUFBZSxFQUFFLElBQUk7U0FDdEI7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSwwQkFBMEI7SUFDeEMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO0lBRTVDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDekcsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUI7SUFDakMsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxHQUFHLGdCQUFnQixFQUFFLENBQUM7SUFDdkksTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM3QyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUV0RixPQUFPLEdBQUcsRUFBRSxDQUNWLFdBQVcsQ0FBQyxVQUFVLENBQUM7UUFDckIsUUFBUTtRQUNSLE1BQU0sRUFBRSxNQUFNLElBQUksZUFBZSxDQUFDLFdBQVcsQ0FBQztRQUM5QyxLQUFLO1FBQ0wsV0FBVyxFQUFFLFFBQVEsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDO1FBQzNDLHFCQUFxQixFQUFFLHFCQUFxQjtRQUM1QyxzQkFBc0IsRUFBRSxJQUFJO1FBQzVCLGlDQUFpQyxFQUFFLENBQUMsWUFBWTtRQUNoRCxZQUFZLEVBQUUsTUFBTTtRQUNwQixvQkFBb0IsRUFBRSxXQUFXLEtBQUssS0FBSztRQUMzQyxhQUFhO0tBQ2QsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQStCLE1BQThDO0lBQ3RHLE9BQU8sd0JBQXdCLENBQUM7UUFDOUIsaUJBQWlCLENBQUMsTUFBTSxDQUFDO1FBQ3pCLGtCQUFrQixFQUFFO1FBQ3BCO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixVQUFVLEVBQUUsb0JBQW9CO1NBQ2pDO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsdUJBQXVCO1lBQ2hDLFFBQVEsRUFBRSwwQkFBMEI7WUFDcEMsS0FBSyxFQUFFLElBQUk7U0FDWjtRQUNEO1lBQ0UsT0FBTyxFQUFFLGVBQWU7WUFDeEIsVUFBVSxFQUFFLG1CQUFtQjtZQUMvQixLQUFLLEVBQUUsSUFBSTtTQUNaO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsWUFBWTtZQUNyQixVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLFlBQVk7U0FDNUY7UUFDRDtZQUNFLE9BQU8sRUFBRSxxQkFBcUI7WUFDOUIsUUFBUSxFQUFFLENBQUMsa0JBQWtCLENBQUM7U0FDL0I7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVBQX0lOSVRJQUxJWkVSLCBFbnZpcm9ubWVudEluamVjdG9yLCBFbnZpcm9ubWVudFByb3ZpZGVycywgRU5WSVJPTk1FTlRfSU5JVElBTElaRVIsIGluamVjdCwgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBXaW5kb3dSZWYgfSBmcm9tICdAb2R4L2FuZ3VsYXInO1xuaW1wb3J0IHsgYnVpbGRVcmwsIENvbmZpZ0RlcGVuZGVuY2llcywgQ29uZmlnUHJvdmlkZXIsIGlzU3RyaW5nIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IE9BdXRoTW9kdWxlQ29uZmlnLCBPQXV0aFN0b3JhZ2UsIHByb3ZpZGVPQXV0aENsaWVudCB9IGZyb20gJ2FuZ3VsYXItb2F1dGgyLW9pZGMnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRoQ29uZmlnLCBERUZBVUxUX0FVVEhfU0NPUEVTLCBERUZBVUxUX0lTU1VFUlMsIGluamVjdEF1dGhDb25maWcsIE9EWF9BVVRIX0NPUkVfUExVR0lOUywgcHJvdmlkZUF1dGhDb25maWcgfSBmcm9tICcuL2F1dGguY29uZmlnJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgY29yZUlkZW50aXR5UGx1Z2luIH0gZnJvbSAnLi9wbHVnaW5zJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmZpZ3VyZUludGVyY2VwdG9yKCk6IE9BdXRoTW9kdWxlQ29uZmlnIHtcbiAgY29uc3QgeyBhbGxvd2VkVXJscyB9ID0gaW5qZWN0QXV0aENvbmZpZygpO1xuICByZXR1cm4ge1xuICAgIHJlc291cmNlU2VydmVyOiB7XG4gICAgICBjdXN0b21VcmxWYWxpZGF0aW9uOiAodXJsKSA9PiBhbGxvd2VkVXJscy5zb21lKChhbGxvd2VkVXJsKSA9PiAoaXNTdHJpbmcoYWxsb3dlZFVybCkgPyB1cmwuc3RhcnRzV2l0aChhbGxvd2VkVXJsKSA6ICEhdXJsLm1hdGNoKGFsbG93ZWRVcmwpKSksXG4gICAgICBzZW5kQWNjZXNzVG9rZW46IHRydWUsXG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVBdXRoRXJyb3JIYW5kbGVyKCk6IHZvaWQge1xuICBjb25zdCBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIGNvbnN0IGluamVjdG9yID0gaW5qZWN0KEVudmlyb25tZW50SW5qZWN0b3IpO1xuICBjb25zdCB7IGVycm9ySGFuZGxlciB9ID0gaW5qZWN0QXV0aENvbmZpZygpO1xuXG4gIGF1dGhTZXJ2aWNlLmVycm9ycyQucGlwZSh0YXAoKGVycm9yKSA9PiBpbmplY3Rvci5ydW5JbkNvbnRleHQoKCkgPT4gZXJyb3JIYW5kbGVyKGVycm9yKSkpKS5zdWJzY3JpYmUoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRhbGl6ZUF1dGhDb25maWcoKTogKCkgPT4gUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgY2xpZW50SWQsIHNjb3BlcywgcmVkaXJlY3RQYXRoLCBlbnZpcm9ubWVudCwgcG9zdExvZ291dFJlZGlyZWN0VXJsLCBpc3N1ZXIsIHRpbWVvdXRGYWN0b3IsIGRpc2NvdmVyeVVybCB9ID0gaW5qZWN0QXV0aENvbmZpZygpO1xuICBjb25zdCBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIGNvbnN0IG9yaWdpbiA9IGluamVjdChXaW5kb3dSZWYpLmdldE9yaWdpbigpO1xuICBjb25zdCBzY29wZSA9IEFycmF5LmZyb20obmV3IFNldChERUZBVUxUX0FVVEhfU0NPUEVTLmNvbmNhdChzY29wZXMgPz8gW10pKSkuam9pbignICcpO1xuXG4gIHJldHVybiAoKSA9PlxuICAgIGF1dGhTZXJ2aWNlLmluaXRpYWxpemUoe1xuICAgICAgY2xpZW50SWQsXG4gICAgICBpc3N1ZXI6IGlzc3VlciA/PyBERUZBVUxUX0lTU1VFUlNbZW52aXJvbm1lbnRdLFxuICAgICAgc2NvcGUsXG4gICAgICByZWRpcmVjdFVyaTogYnVpbGRVcmwob3JpZ2luLCByZWRpcmVjdFBhdGgpLFxuICAgICAgcG9zdExvZ291dFJlZGlyZWN0VXJpOiBwb3N0TG9nb3V0UmVkaXJlY3RVcmwsXG4gICAgICBwcmVzZXJ2ZVJlcXVlc3RlZFJvdXRlOiB0cnVlLFxuICAgICAgc3RyaWN0RGlzY292ZXJ5RG9jdW1lbnRWYWxpZGF0aW9uOiAhZGlzY292ZXJ5VXJsLFxuICAgICAgcmVzcG9uc2VUeXBlOiAnY29kZScsXG4gICAgICBzaG93RGVidWdJbmZvcm1hdGlvbjogZW52aXJvbm1lbnQgPT09ICdkZXYnLFxuICAgICAgdGltZW91dEZhY3RvcixcbiAgICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVBdXRoPEQgZXh0ZW5kcyBDb25maWdEZXBlbmRlbmNpZXM+KGNvbmZpZzogQ29uZmlnUHJvdmlkZXI8UGFydGlhbDxBdXRoQ29uZmlnPiwgRD4pOiBFbnZpcm9ubWVudFByb3ZpZGVycyB7XG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW1xuICAgIHByb3ZpZGVBdXRoQ29uZmlnKGNvbmZpZyksXG4gICAgcHJvdmlkZU9BdXRoQ2xpZW50KCksXG4gICAge1xuICAgICAgcHJvdmlkZTogT0F1dGhNb2R1bGVDb25maWcsXG4gICAgICB1c2VGYWN0b3J5OiBjb25maWd1cmVJbnRlcmNlcHRvcixcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEVOVklST05NRU5UX0lOSVRJQUxJWkVSLFxuICAgICAgdXNlVmFsdWU6IGluaXRpYWxpemVBdXRoRXJyb3JIYW5kbGVyLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgICB1c2VGYWN0b3J5OiBpbml0YWxpemVBdXRoQ29uZmlnLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBPQXV0aFN0b3JhZ2UsXG4gICAgICB1c2VGYWN0b3J5OiAoKSA9PiBpbmplY3QoQXV0aENvbmZpZykuc3RvcmFnZSA/PyBpbmplY3QoV2luZG93UmVmKS5uYXRpdmVXaW5kb3cubG9jYWxTdG9yYWdlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogT0RYX0FVVEhfQ09SRV9QTFVHSU5TLFxuICAgICAgdXNlVmFsdWU6IFtjb3JlSWRlbnRpdHlQbHVnaW5dLFxuICAgIH0sXG4gIF0pO1xufVxuIl19
@@ -2,36 +2,39 @@ import { HttpErrorResponse } from '@angular/common/http';
2
2
  import { inject, Injectable } from '@angular/core';
3
3
  import { Router } from '@angular/router';
4
4
  import { WindowRef } from '@odx/angular';
5
+ import { fromEvents } from '@odx/angular/rxjs';
5
6
  import { OAuthErrorEvent, OAuthService } from 'angular-oauth2-oidc';
6
- import { BehaviorSubject, combineLatest, filter, fromEvent, map, share, shareReplay, startWith, switchMap, tap } from 'rxjs';
7
+ import { deepmerge } from 'deepmerge-ts';
8
+ import jwtDecode from 'jwt-decode';
9
+ import { BehaviorSubject, combineLatest, distinctUntilChanged, filter, fromEvent, map, merge, share, shareReplay, startWith, switchMap } from 'rxjs';
7
10
  import { injectAuthConfig } from './auth.config';
8
- import { parseIdentityClaims } from './helpers/parse-identity-claims';
11
+ import { AuthPluginManager } from './models';
9
12
  import * as i0 from "@angular/core";
10
13
  export class AuthService {
11
14
  constructor() {
12
15
  this.authConfig = injectAuthConfig();
16
+ this.authPluginManager = inject(AuthPluginManager);
13
17
  this.oauthService = inject(OAuthService);
14
18
  this.router = inject(Router);
15
19
  this.windowRef = inject(WindowRef);
16
20
  this.isInitialized$$ = new BehaviorSubject(false);
17
21
  this.onAccessTokenUpdate$ = fromEvent(this.windowRef.nativeWindow, 'storage').pipe(filter(({ key }) => key === 'access_token' || key === null), startWith(null), share());
18
22
  this.onAuthStateChange$ = combineLatest([this.oauthService.events.pipe(startWith(null)), this.windowRef.isOnline$, this.onAccessTokenUpdate$]);
19
- this.isAuthenticated$ = this.isInitialized$$.pipe(filter(Boolean), switchMap(() => this.onAuthStateChange$), map(() => this.isAuthenticated()), shareReplay({ refCount: true }));
23
+ this.isInitialized$ = this.isInitialized$$.pipe(filter(Boolean), distinctUntilChanged());
24
+ this.isAuthenticated$ = this.isInitialized$.pipe(switchMap(() => this.authPluginManager.pluginsReady$), switchMap(() => this.onAuthStateChange$), map(() => this.isAuthenticated()), shareReplay({ refCount: true }));
20
25
  this.identityClaims$ = this.isAuthenticated$.pipe(map(() => this.getIdentityClaims()), shareReplay({ refCount: true }));
21
26
  this.errors$ = this.oauthService.events.pipe(filter((event) => event instanceof OAuthErrorEvent), share());
22
- this.subscription = this.windowRef.isOnline$
23
- .pipe(tap((isOnline) => {
27
+ this.isRedirecting$ = fromEvents(this.windowRef.nativeWindow, 'beforeunload').pipe(map(Boolean), distinctUntilChanged(), share());
28
+ this.isLoading$ = merge(this.isRedirecting$, this.authPluginManager.pluginsLoading$).pipe(distinctUntilChanged());
29
+ this.windowRef.isOnline$.subscribe((isOnline) => {
24
30
  if (isOnline) {
25
31
  this.oauthService.setupAutomaticSilentRefresh();
26
32
  }
27
33
  else {
28
34
  this.oauthService.stopAutomaticRefresh();
29
35
  }
30
- }))
31
- .subscribe();
32
- }
33
- ngOnDestroy() {
34
- this.subscription.unsubscribe();
36
+ });
37
+ this.authPluginManager.runPlugins(this).subscribe();
35
38
  }
36
39
  async initialize(config) {
37
40
  this.oauthService.configure(config);
@@ -83,6 +86,10 @@ export class AuthService {
83
86
  getAccessToken() {
84
87
  return this.oauthService.getAccessToken() ?? null;
85
88
  }
89
+ getAccessTokenPayload() {
90
+ const token = this.getAccessToken();
91
+ return token ? jwtDecode(token) : null;
92
+ }
86
93
  getRefreshToken() {
87
94
  return this.oauthService.getRefreshToken() ?? null;
88
95
  }
@@ -90,7 +97,14 @@ export class AuthService {
90
97
  return this.oauthService.getIdToken() ?? null;
91
98
  }
92
99
  getIdentityClaims() {
93
- return this.getIdToken() ? parseIdentityClaims(this.oauthService.getIdentityClaims(), this.authConfig.resolveUsername) : null;
100
+ if (!this.getIdToken())
101
+ return null;
102
+ return deepmerge(this.oauthService.getIdentityClaims(), this.authPluginManager.getResult());
103
+ }
104
+ getRawIdentityClaims() {
105
+ if (!this.getIdToken())
106
+ return null;
107
+ return this.oauthService.getIdentityClaims();
94
108
  }
95
109
  isAuthenticated() {
96
110
  if (this.windowRef.isOnline()) {
@@ -102,9 +116,9 @@ export class AuthService {
102
116
  return this.isAuthenticated() && (authorizedHandler?.(this.getIdentityClaims(), this) ?? true);
103
117
  }
104
118
  async routeToRequestedUrl() {
105
- if (this.oauthService.state) {
106
- await this.router.navigateByUrl(decodeURIComponent(this.oauthService.state));
107
- }
119
+ if (!this.oauthService.state)
120
+ return;
121
+ await this.router.navigateByUrl(decodeURIComponent(this.oauthService.state));
108
122
  }
109
123
  hasValidOfflineToken() {
110
124
  const issuedAt = this.getIdentityClaims()?.iat ?? 0;
@@ -117,4 +131,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
117
131
  type: Injectable,
118
132
  args: [{ providedIn: 'root' }]
119
133
  }], ctorParameters: function () { return []; } });
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXV0aC9zcmMvbGliL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQWMsZUFBZSxFQUFFLFlBQVksRUFBaUIsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRixPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBYyxLQUFLLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBZ0IsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2SixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7O0FBSXRFLE1BQU0sT0FBTyxXQUFXO0lBOEJ0QjtRQTVCaUIsZUFBVSxHQUFHLGdCQUFnQixFQUFFLENBQUM7UUFDaEMsaUJBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixjQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTlCLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDdEQseUJBQW9CLEdBQUcsU0FBUyxDQUFlLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxD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QUFHLFFBQVEsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO0lBQy9FLENBQUM7O3dHQXZJVSxXQUFXOzRHQUFYLFdBQVcsY0FERSxNQUFNOzJGQUNuQixXQUFXO2tCQUR2QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBXaW5kb3dSZWYgfSBmcm9tICdAb2R4L2FuZ3VsYXInO1xuaW1wb3J0IHsgQXV0aENvbmZpZywgT0F1dGhFcnJvckV2ZW50LCBPQXV0aFNlcnZpY2UsIFRva2VuUmVzcG9uc2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZmlsdGVyLCBmcm9tRXZlbnQsIG1hcCwgT2JzZXJ2YWJsZSwgc2hhcmUsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIFN1YnNjcmlwdGlvbiwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGluamVjdEF1dGhDb25maWcgfSBmcm9tICcuL2F1dGguY29uZmlnJztcbmltcG9ydCB7IHBhcnNlSWRlbnRpdHlDbGFpbXMgfSBmcm9tICcuL2hlbHBlcnMvcGFyc2UtaWRlbnRpdHktY2xhaW1zJztcbmltcG9ydCB7IEF1dGhvcml6ZWRIYW5kbGVyIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEF1dGhTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBhdXRoQ29uZmlnID0gaW5qZWN0QXV0aENvbmZpZygpO1xuICBwcml2YXRlIHJlYWRvbmx5IG9hdXRoU2VydmljZSA9IGluamVjdChPQXV0aFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IHdpbmRvd1JlZiA9IGluamVjdChXaW5kb3dSZWYpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaXNJbml0aWFsaXplZCQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb25BY2Nlc3NUb2tlblVwZGF0ZSQgPSBmcm9tRXZlbnQ8U3RvcmFnZUV2ZW50Pih0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3csICdzdG9yYWdlJykucGlwZShcbiAgICBmaWx0ZXIoKHsga2V5IH0pID0+IGtleSA9PT0gJ2FjY2Vzc190b2tlbicgfHwga2V5ID09PSBudWxsKSxcbiAgICBzdGFydFdpdGgobnVsbCksXG4gICAgc2hhcmUoKVxuICApO1xuICBwcml2YXRlIHJlYWRvbmx5IG9uQXV0aFN0YXRlQ2hhbmdlJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMub2F1dGhTZXJ2aWNlLmV2ZW50cy5waXBlKHN0YXJ0V2l0aChudWxsKSksIHRoaXMud2luZG93UmVmLmlzT25saW5lJCwgdGhpcy5vbkFjY2Vzc1Rva2VuVXBkYXRlJF0pO1xuXG4gIHB1YmxpYyByZWFkb25seSBpc0F1dGhlbnRpY2F0ZWQkID0gdGhpcy5pc0luaXRpYWxpemVkJCQucGlwZShcbiAgICBmaWx0ZXIoQm9vbGVhbiksXG4gICAgc3dpdGNoTWFwKCgpID0+IHRoaXMub25BdXRoU3RhdGVDaGFuZ2UkKSxcbiAgICBtYXAoKCkgPT4gdGhpcy5pc0F1dGhlbnRpY2F0ZWQoKSksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSB9KVxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkgaWRlbnRpdHlDbGFpbXMkOiBPYnNlcnZhYmxlPE9keEF1dGguSWRlbnRpeUNsYWltcyB8IG51bGw+ID0gdGhpcy5pc0F1dGhlbnRpY2F0ZWQkLnBpcGUoXG4gICAgbWFwKCgpID0+IHRoaXMuZ2V0SWRlbnRpdHlDbGFpbXMoKSksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSB9KVxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkgZXJyb3JzJCA9IHRoaXMub2F1dGhTZXJ2aWNlLmV2ZW50cy5waXBlKFxuICAgIGZpbHRlcigoZXZlbnQpOiBldmVudCBpcyBPQXV0aEVycm9yRXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBPQXV0aEVycm9yRXZlbnQpLFxuICAgIHNoYXJlKClcbiAgKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMud2luZG93UmVmLmlzT25saW5lJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoaXNPbmxpbmUpID0+IHtcbiAgICAgICAgICBpZiAoaXNPbmxpbmUpIHtcbiAgICAgICAgICAgIHRoaXMub2F1dGhTZXJ2aWNlLnNldHVwQXV0b21hdGljU2lsZW50UmVmcmVzaCgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9hdXRoU2VydmljZS5zdG9wQXV0b21hdGljUmVmcmVzaCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGluaXRpYWxpemUoY29uZmlnOiBBdXRoQ29uZmlnKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5vYXV0aFNlcnZpY2UuY29uZmlndXJlKGNvbmZpZyk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMub2F1dGhTZXJ2aWNlLmxvYWREaXNjb3ZlcnlEb2N1bWVudCh0aGlzLmF1dGhDb25maWcuZGlzY292ZXJ5VXJsKTtcbiAgICAgIGF3YWl0IHRoaXMub2F1dGhTZXJ2aWNlLnRyeUxvZ2luQ29kZUZsb3coKTtcbiAgICAgIGlmICh0aGlzLmdldFJlZnJlc2hUb2tlbigpICYmICF0aGlzLmlzQXV0aGVudGljYXRlZCgpKSB7XG4gICAgICAgIGF3YWl0IHRoaXMub2F1dGhTZXJ2aWNlLnJlZnJlc2hUb2tlbigpO1xuICAgICAgfVxuICAgICAgdGhpcy5pc0luaXRpYWxpemVkJCQubmV4dCh0cnVlKTtcbiAgICAgIGlmICh0aGlzLmF1dGhDb25maWcubG9hZFVzZXJQcm9maWxlICYmIHRoaXMub2F1dGhTZXJ2aWNlLmhhc1ZhbGlkQWNjZXNzVG9rZW4oKSkge1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWRVc2VyUHJvZmlsZSgpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICB0aGlzLmlzSW5pdGlhbGl6ZWQkJC5uZXh0KHRydWUpO1xuICAgICAgfSBlbHNlIGlmIChlcnJvciBpbnN0YW5jZW9mIE9BdXRoRXJyb3JFdmVudCkge1xuICAgICAgICBpZiAoZXJyb3IudHlwZSA9PT0gJ3Rva2VuX3JlZnJlc2hfZXJyb3InKSB7XG4gICAgICAgICAgdGhpcy5zaWduSW4odGhpcy53aW5kb3dSZWYubG9jYXRpb24ucGF0aG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNJbml0aWFsaXplZCQkLm5leHQodHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMub2F1dGhTZXJ2aWNlLmhhc1ZhbGlkQWNjZXNzVG9rZW4oKSkge1xuICAgICAgYXdhaXQgdGhpcy5yb3V0ZVRvUmVxdWVzdGVkVXJsKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldElzc3VlcigpOiBVUkwge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgcmV0dXJuIG5ldyBVUkwodGhpcy5vYXV0aFNlcnZpY2UuaXNzdWVyISk7XG4gIH1cblxuICBwdWJsaWMgc2lnbkluKHVybD86IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMub2F1dGhTZXJ2aWNlLmluaXRDb2RlRmxvdyh1cmwpO1xuICB9XG5cbiAgcHVibGljIHNpZ25PdXQoKTogdm9pZCB7XG4gICAgdGhpcy5vYXV0aFNlcnZpY2UubG9nT3V0KCF0aGlzLmdldEFjY2Vzc1Rva2VuKCkpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxvYWRVc2VyUHJvZmlsZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLm9hdXRoU2VydmljZS5sb2FkVXNlclByb2ZpbGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZWZyZXNoVG9rZW5zKCk6IFByb21pc2U8VG9rZW5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLm9hdXRoU2VydmljZS5yZWZyZXNoVG9rZW4oKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBY2Nlc3NUb2tlbigpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5vYXV0aFNlcnZpY2UuZ2V0QWNjZXNzVG9rZW4oKSA/PyBudWxsO1xuICB9XG5cbiAgcHVibGljIGdldFJlZnJlc2hUb2tlbigpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5vYXV0aFNlcnZpY2UuZ2V0UmVmcmVzaFRva2VuKCkgPz8gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRJZFRva2VuKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLm9hdXRoU2VydmljZS5nZXRJZFRva2VuKCkgPz8gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRJZGVudGl0eUNsYWltcygpOiBPZHhBdXRoLklkZW50aXlDbGFpbXMgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5nZXRJZFRva2VuKCkgPyBwYXJzZUlkZW50aXR5Q2xhaW1zKHRoaXMub2F1dGhTZXJ2aWNlLmdldElkZW50aXR5Q2xhaW1zKCksIHRoaXMuYXV0aENvbmZpZy5yZXNvbHZlVXNlcm5hbWUpIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBpc0F1dGhlbnRpY2F0ZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMud2luZG93UmVmLmlzT25saW5lKCkpIHtcbiAgICAgIHJldHVybiB0aGlzLm9hdXRoU2VydmljZS5oYXNWYWxpZEFjY2Vzc1Rva2VuKCkgJiYgdGhpcy5vYXV0aFNlcnZpY2UuaGFzVmFsaWRJZFRva2VuKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmhhc1ZhbGlkT2ZmbGluZVRva2VuKCk7XG4gIH1cblxuICBwdWJsaWMgaXNBdXRob3JpemVkKGF1dGhvcml6ZWRIYW5kbGVyPzogQXV0aG9yaXplZEhhbmRsZXIgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNBdXRoZW50aWNhdGVkKCkgJiYgKGF1dGhvcml6ZWRIYW5kbGVyPy4odGhpcy5nZXRJZGVudGl0eUNsYWltcygpLCB0aGlzKSA/PyB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcm91dGVUb1JlcXVlc3RlZFVybCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5vYXV0aFNlcnZpY2Uuc3RhdGUpIHtcbiAgICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoZGVjb2RlVVJJQ29tcG9uZW50KHRoaXMub2F1dGhTZXJ2aWNlLnN0YXRlKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYXNWYWxpZE9mZmxpbmVUb2tlbigpOiBib29sZWFuIHtcbiAgICBjb25zdCBpc3N1ZWRBdCA9IHRoaXMuZ2V0SWRlbnRpdHlDbGFpbXMoKT8uaWF0ID8/IDA7XG5cbiAgICByZXR1cm4gRGF0ZS5ub3coKSAtIGlzc3VlZEF0ICogMTAwMCA8PSB0aGlzLmF1dGhDb25maWcubWF4T2ZmbGluZVRpbWUgKiAxMDAwO1xuICB9XG59XG4iXX0=
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXV0aC9zcmMvbGliL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFjLGVBQWUsRUFBRSxZQUFZLEVBQWlCLE1BQU0scUJBQXFCLENBQUM7QUFDL0YsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLFNBQXlCLE1BQU0sWUFBWSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckosT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBcUIsaUJBQWlCLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBR2hFLE1BQU0sT0FBTyxXQUFXO0lBaUN0QjtRQWhDaUIsZUFBVSxHQUFHLGdCQUFnQixFQUFFLENBQUM7UUFDaEMsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDOUMsaUJBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixjQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTlCLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0MseUJBQW9CLEdBQUcsU0FBUyxDQUFlLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FDMUcsTUFBTSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLGNBQWMsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLEVBQzNELFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFDZixLQUFLLEVBQUUsQ0FDUixDQUFDO1FBQ2UsdUJBQWtCLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7UUFFM0ksbUJBQWMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBQ3BGLHFCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUN6RCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxFQUNyRCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQ3hDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsRUFDakMsV0FBVyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQ2hDLENBQUM7UUFDYyxvQkFBZSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQzFELEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxFQUNuQyxXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FDaEMsQ0FBQztRQUNjLFlBQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3JELE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBNEIsRUFBRSxDQUFDLEtBQUssWUFBWSxlQUFlLENBQUMsRUFDN0UsS0FBSyxFQUFFLENBQ1IsQ0FBQztRQUNjLG1CQUFjLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzdILGVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztRQUczSCxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUM5QyxJQUFJLFFBQVEsRUFBRTtnQkFDWixJQUFJLENBQUMsWUFBWSxDQUFDLDJCQUEyQixFQUFFLENBQUM7YUFDakQ7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2FBQzFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFTSxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQWtCO1FBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BDLElBQUk7WUFDRixNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUM1RSxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMzQyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRTtnQkFDckQsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO2FBQ3hDO1lBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixFQUFFLEVBQUU7Z0JBQzlFLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2FBQzlCO1NBQ0Y7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLElBQUksS0FBSyxZQUFZLGlCQUFpQixFQUFFO2dCQUN0QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNqQztpQkFBTSxJQUFJLEtBQUssWUFBWSxlQUFlLEVBQUU7Z0JBQzNDLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxxQkFBcUIsRUFBRTtvQkFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDL0M7Z0JBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDakM7aUJBQU07Z0JBQ0wsTUFBTSxLQUFLLENBQUM7YUFDYjtTQUNGO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixFQUFFLEVBQUU7WUFDM0MsTUFBTSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztTQUNsQztJQUNILENBQUM7SUFFTSxTQUFTO1FBQ2Qsb0VBQW9FO1FBQ3BFLE9BQU8sSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFPLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU0sTUFBTSxDQUFDLEdBQVk7UUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVNLE9BQU87UUFDWixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTSxLQUFLLENBQUMsZUFBZTtRQUMxQixNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVNLEtBQUssQ0FBQyxhQUFhO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRU0sY0FBYztRQUNuQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLElBQUksSUFBSSxDQUFDO0lBQ3BELENBQUM7SUFFTSxxQkFBcUI7UUFDMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXBDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN6QyxDQUFDO0lBRU0sZUFBZTtRQUNwQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxFQUFFLElBQUksSUFBSSxDQUFDO0lBQ3JELENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxJQUFJLElBQUksQ0FBQztJQUNoRCxDQUFDO0lBRU0saUJBQWlCO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDcEMsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsQ0FBMEIsQ0FBQztJQUN2SCxDQUFDO0lBRU0sb0JBQW9CO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDcEMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVNLGVBQWU7UUFDcEIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQzdCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDdkY7UUFDRCxPQUFPLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFTSxZQUFZLENBQUMsaUJBQTRDO1FBQzlELE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRU8sS0FBSyxDQUFDLG1CQUFtQjtRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLO1lBQUUsT0FBTztRQUNyQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFFcEQsT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsUUFBUSxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDL0UsQ0FBQzs7d0dBOUlVLFdBQVc7NEdBQVgsV0FBVyxjQURFLE1BQU07MkZBQ25CLFdBQVc7a0JBRHZCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBXaW5kb3dSZWYgfSBmcm9tICdAb2R4L2FuZ3VsYXInO1xuaW1wb3J0IHsgZnJvbUV2ZW50cyB9IGZyb20gJ0BvZHgvYW5ndWxhci9yeGpzJztcbmltcG9ydCB7IEF1dGhDb25maWcsIE9BdXRoRXJyb3JFdmVudCwgT0F1dGhTZXJ2aWNlLCBUb2tlblJlc3BvbnNlIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XG5pbXBvcnQgeyBkZWVwbWVyZ2UgfSBmcm9tICdkZWVwbWVyZ2UtdHMnO1xuaW1wb3J0IGp3dERlY29kZSwgeyBKd3RQYXlsb2FkIH0gZnJvbSAnand0LWRlY29kZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIGZyb21FdmVudCwgbWFwLCBtZXJnZSwgc2hhcmUsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgaW5qZWN0QXV0aENvbmZpZyB9IGZyb20gJy4vYXV0aC5jb25maWcnO1xuaW1wb3J0IHsgQXV0aG9yaXplZEhhbmRsZXIsIEF1dGhQbHVnaW5NYW5hZ2VyIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEF1dGhTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhdXRoQ29uZmlnID0gaW5qZWN0QXV0aENvbmZpZygpO1xuICBwcml2YXRlIHJlYWRvbmx5IGF1dGhQbHVnaW5NYW5hZ2VyID0gaW5qZWN0KEF1dGhQbHVnaW5NYW5hZ2VyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBvYXV0aFNlcnZpY2UgPSBpbmplY3QoT0F1dGhTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSB3aW5kb3dSZWYgPSBpbmplY3QoV2luZG93UmVmKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGlzSW5pdGlhbGl6ZWQkJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IG9uQWNjZXNzVG9rZW5VcGRhdGUkID0gZnJvbUV2ZW50PFN0b3JhZ2VFdmVudD4odGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LCAnc3RvcmFnZScpLnBpcGUoXG4gICAgZmlsdGVyKCh7IGtleSB9KSA9PiBrZXkgPT09ICdhY2Nlc3NfdG9rZW4nIHx8IGtleSA9PT0gbnVsbCksXG4gICAgc3RhcnRXaXRoKG51bGwpLFxuICAgIHNoYXJlKCksXG4gICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb25BdXRoU3RhdGVDaGFuZ2UkID0gY29tYmluZUxhdGVzdChbdGhpcy5vYXV0aFNlcnZpY2UuZXZlbnRzLnBpcGUoc3RhcnRXaXRoKG51bGwpKSwgdGhpcy53aW5kb3dSZWYuaXNPbmxpbmUkLCB0aGlzLm9uQWNjZXNzVG9rZW5VcGRhdGUkXSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGlzSW5pdGlhbGl6ZWQkID0gdGhpcy5pc0luaXRpYWxpemVkJCQucGlwZShmaWx0ZXIoQm9vbGVhbiksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNBdXRoZW50aWNhdGVkJCA9IHRoaXMuaXNJbml0aWFsaXplZCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5hdXRoUGx1Z2luTWFuYWdlci5wbHVnaW5zUmVhZHkkKSxcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5vbkF1dGhTdGF0ZUNoYW5nZSQpLFxuICAgIG1hcCgoKSA9PiB0aGlzLmlzQXV0aGVudGljYXRlZCgpKSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlIH0pLFxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkgaWRlbnRpdHlDbGFpbXMkID0gdGhpcy5pc0F1dGhlbnRpY2F0ZWQkLnBpcGUoXG4gICAgbWFwKCgpID0+IHRoaXMuZ2V0SWRlbnRpdHlDbGFpbXMoKSksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSB9KSxcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IGVycm9ycyQgPSB0aGlzLm9hdXRoU2VydmljZS5ldmVudHMucGlwZShcbiAgICBmaWx0ZXIoKGV2ZW50KTogZXZlbnQgaXMgT0F1dGhFcnJvckV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgT0F1dGhFcnJvckV2ZW50KSxcbiAgICBzaGFyZSgpLFxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNSZWRpcmVjdGluZyQgPSBmcm9tRXZlbnRzKHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdywgJ2JlZm9yZXVubG9hZCcpLnBpcGUobWFwKEJvb2xlYW4pLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZSgpKTtcbiAgcHVibGljIHJlYWRvbmx5IGlzTG9hZGluZyQgPSBtZXJnZSh0aGlzLmlzUmVkaXJlY3RpbmckLCB0aGlzLmF1dGhQbHVnaW5NYW5hZ2VyLnBsdWdpbnNMb2FkaW5nJCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLndpbmRvd1JlZi5pc09ubGluZSQuc3Vic2NyaWJlKChpc09ubGluZSkgPT4ge1xuICAgICAgaWYgKGlzT25saW5lKSB7XG4gICAgICAgIHRoaXMub2F1dGhTZXJ2aWNlLnNldHVwQXV0b21hdGljU2lsZW50UmVmcmVzaCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vYXV0aFNlcnZpY2Uuc3RvcEF1dG9tYXRpY1JlZnJlc2goKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmF1dGhQbHVnaW5NYW5hZ2VyLnJ1blBsdWdpbnModGhpcykuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaW5pdGlhbGl6ZShjb25maWc6IEF1dGhDb25maWcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLm9hdXRoU2VydmljZS5jb25maWd1cmUoY29uZmlnKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5vYXV0aFNlcnZpY2UubG9hZERpc2NvdmVyeURvY3VtZW50KHRoaXMuYXV0aENvbmZpZy5kaXNjb3ZlcnlVcmwpO1xuICAgICAgYXdhaXQgdGhpcy5vYXV0aFNlcnZpY2UudHJ5TG9naW5Db2RlRmxvdygpO1xuICAgICAgaWYgKHRoaXMuZ2V0UmVmcmVzaFRva2VuKCkgJiYgIXRoaXMuaXNBdXRoZW50aWNhdGVkKCkpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5vYXV0aFNlcnZpY2UucmVmcmVzaFRva2VuKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmlzSW5pdGlhbGl6ZWQkJC5uZXh0KHRydWUpO1xuICAgICAgaWYgKHRoaXMuYXV0aENvbmZpZy5sb2FkVXNlclByb2ZpbGUgJiYgdGhpcy5vYXV0aFNlcnZpY2UuaGFzVmFsaWRBY2Nlc3NUb2tlbigpKSB7XG4gICAgICAgIGF3YWl0IHRoaXMubG9hZFVzZXJQcm9maWxlKCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgIHRoaXMuaXNJbml0aWFsaXplZCQkLm5leHQodHJ1ZSk7XG4gICAgICB9IGVsc2UgaWYgKGVycm9yIGluc3RhbmNlb2YgT0F1dGhFcnJvckV2ZW50KSB7XG4gICAgICAgIGlmIChlcnJvci50eXBlID09PSAndG9rZW5fcmVmcmVzaF9lcnJvcicpIHtcbiAgICAgICAgICB0aGlzLnNpZ25Jbih0aGlzLndpbmRvd1JlZi5sb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0luaXRpYWxpemVkJCQubmV4dCh0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5vYXV0aFNlcnZpY2UuaGFzVmFsaWRBY2Nlc3NUb2tlbigpKSB7XG4gICAgICBhd2FpdCB0aGlzLnJvdXRlVG9SZXF1ZXN0ZWRVcmwoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0SXNzdWVyKCk6IFVSTCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICByZXR1cm4gbmV3IFVSTCh0aGlzLm9hdXRoU2VydmljZS5pc3N1ZXIhKTtcbiAgfVxuXG4gIHB1YmxpYyBzaWduSW4odXJsPzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5vYXV0aFNlcnZpY2UuaW5pdENvZGVGbG93KHVybCk7XG4gIH1cblxuICBwdWJsaWMgc2lnbk91dCgpOiB2b2lkIHtcbiAgICB0aGlzLm9hdXRoU2VydmljZS5sb2dPdXQoIXRoaXMuZ2V0QWNjZXNzVG9rZW4oKSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9hZFVzZXJQcm9maWxlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMub2F1dGhTZXJ2aWNlLmxvYWRVc2VyUHJvZmlsZSgpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlZnJlc2hUb2tlbnMoKTogUHJvbWlzZTxUb2tlblJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMub2F1dGhTZXJ2aWNlLnJlZnJlc2hUb2tlbigpO1xuICB9XG5cbiAgcHVibGljIGdldEFjY2Vzc1Rva2VuKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLm9hdXRoU2VydmljZS5nZXRBY2Nlc3NUb2tlbigpID8/IG51bGw7XG4gIH1cblxuICBwdWJsaWMgZ2V0QWNjZXNzVG9rZW5QYXlsb2FkKCk6IChPZHhBdXRoLkFjY2Vzc1Rva2VuUGF5bG9hZCAmIFJlcXVpcmVkPEp3dFBheWxvYWQ+KSB8IG51bGwge1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy5nZXRBY2Nlc3NUb2tlbigpO1xuXG4gICAgcmV0dXJuIHRva2VuID8gand0RGVjb2RlKHRva2VuKSA6IG51bGw7XG4gIH1cblxuICBwdWJsaWMgZ2V0UmVmcmVzaFRva2VuKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLm9hdXRoU2VydmljZS5nZXRSZWZyZXNoVG9rZW4oKSA/PyBudWxsO1xuICB9XG5cbiAgcHVibGljIGdldElkVG9rZW4oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMub2F1dGhTZXJ2aWNlLmdldElkVG9rZW4oKSA/PyBudWxsO1xuICB9XG5cbiAgcHVibGljIGdldElkZW50aXR5Q2xhaW1zKCk6IE9keEF1dGguSWRlbnRpeUNsYWltcyB8IG51bGwge1xuICAgIGlmICghdGhpcy5nZXRJZFRva2VuKCkpIHJldHVybiBudWxsO1xuICAgIHJldHVybiBkZWVwbWVyZ2UodGhpcy5vYXV0aFNlcnZpY2UuZ2V0SWRlbnRpdHlDbGFpbXMoKSwgdGhpcy5hdXRoUGx1Z2luTWFuYWdlci5nZXRSZXN1bHQoKSkgYXMgT2R4QXV0aC5JZGVudGl5Q2xhaW1zO1xuICB9XG5cbiAgcHVibGljIGdldFJhd0lkZW50aXR5Q2xhaW1zKCk6IE9keEF1dGguUmF3SWRlbnRpdHlDbGFpbXMgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuZ2V0SWRUb2tlbigpKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gdGhpcy5vYXV0aFNlcnZpY2UuZ2V0SWRlbnRpdHlDbGFpbXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0F1dGhlbnRpY2F0ZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMud2luZG93UmVmLmlzT25saW5lKCkpIHtcbiAgICAgIHJldHVybiB0aGlzLm9hdXRoU2VydmljZS5oYXNWYWxpZEFjY2Vzc1Rva2VuKCkgJiYgdGhpcy5vYXV0aFNlcnZpY2UuaGFzVmFsaWRJZFRva2VuKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmhhc1ZhbGlkT2ZmbGluZVRva2VuKCk7XG4gIH1cblxuICBwdWJsaWMgaXNBdXRob3JpemVkKGF1dGhvcml6ZWRIYW5kbGVyPzogQXV0aG9yaXplZEhhbmRsZXIgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNBdXRoZW50aWNhdGVkKCkgJiYgKGF1dGhvcml6ZWRIYW5kbGVyPy4odGhpcy5nZXRJZGVudGl0eUNsYWltcygpLCB0aGlzKSA/PyB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcm91dGVUb1JlcXVlc3RlZFVybCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMub2F1dGhTZXJ2aWNlLnN0YXRlKSByZXR1cm47XG4gICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChkZWNvZGVVUklDb21wb25lbnQodGhpcy5vYXV0aFNlcnZpY2Uuc3RhdGUpKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzVmFsaWRPZmZsaW5lVG9rZW4oKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaXNzdWVkQXQgPSB0aGlzLmdldElkZW50aXR5Q2xhaW1zKCk/LmlhdCA/PyAwO1xuXG4gICAgcmV0dXJuIERhdGUubm93KCkgLSBpc3N1ZWRBdCAqIDEwMDAgPD0gdGhpcy5hdXRoQ29uZmlnLm1heE9mZmxpbmVUaW1lICogMTAwMDtcbiAgfVxufVxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC50eXBpbmdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXV0aC9zcmMvbGliL2F1dGgudHlwaW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZGVjbGFyZSBnbG9iYWwge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5hbWVzcGFjZVxuICBuYW1lc3BhY2UgT2R4QXV0aCB7XG4gICAgaW50ZXJmYWNlIElkZW50aXlDbGFpbXMge1xuICAgICAgc3ViOiBzdHJpbmc7XG4gICAgICBva3RhaWQ6IHN0cmluZztcbiAgICAgIGlhdDogbnVtYmVyO1xuXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICBmaXJzdG5hbWU6IHN0cmluZztcbiAgICAgIGxhc3RuYW1lOiBzdHJpbmc7XG4gICAgICBkaXNwbGF5bmFtZTogc3RyaW5nO1xuICAgICAgcHJlZmVycmVkX3VzZXJuYW1lOiBzdHJpbmc7XG4gICAgICBlbWFpbDogc3RyaW5nO1xuICAgICAgaW5pdGlhbHM6IHN0cmluZztcblxuICAgICAgbG9jYWxlPzogc3RyaW5nO1xuICAgICAgem9uZWluZm8/OiBzdHJpbmc7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB7fTtcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC50eXBpbmdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXV0aC9zcmMvbGliL2F1dGgudHlwaW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZGVjbGFyZSBnbG9iYWwge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5hbWVzcGFjZVxuICBuYW1lc3BhY2UgT2R4QXV0aCB7XG4gICAgdHlwZSBSYXdJZGVudGl0eUNsYWltcyA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gICAgaW50ZXJmYWNlIEF1dGhQbHVnaW5SZXN1bHQge1xuICAgICAgb2R4QXV0aFBsdWdpblByb3BlcnRpZXM/OiBzdHJpbmdbXTtcbiAgICB9XG5cbiAgICBpbnRlcmZhY2UgSWRlbnRpeUNsYWltcyBleHRlbmRzIEF1dGhQbHVnaW5SZXN1bHQge1xuICAgICAgc3ViOiBzdHJpbmc7XG4gICAgICBva3RhaWQ6IHN0cmluZztcbiAgICAgIGlhdDogbnVtYmVyO1xuXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICBmaXJzdG5hbWU6IHN0cmluZztcbiAgICAgIGxhc3RuYW1lOiBzdHJpbmc7XG4gICAgICBkaXNwbGF5bmFtZTogc3RyaW5nO1xuICAgICAgcHJlZmVycmVkX3VzZXJuYW1lOiBzdHJpbmc7XG4gICAgICBlbWFpbDogc3RyaW5nO1xuICAgICAgaW5pdGlhbHM6IHN0cmluZztcblxuICAgICAgbG9jYWxlPzogc3RyaW5nO1xuICAgICAgem9uZWluZm8/OiBzdHJpbmc7XG4gICAgfVxuXG4gICAgaW50ZXJmYWNlIEFjY2Vzc1Rva2VuUGF5bG9hZCB7XG4gICAgICBjb3VudHJ5OiBzdHJpbmc7XG4gICAgICBlbWFpbF9hZGRyZXNzOiBzdHJpbmc7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB7fTtcbiJdfQ==
@@ -0,0 +1,24 @@
1
+ import { Directive, inject } from '@angular/core';
2
+ import { LoadingSpinnerDirective } from '@odx/angular/components/loading-spinner';
3
+ import { untilDestroyed } from '@odx/angular/utils';
4
+ import { AuthService } from '../auth.service';
5
+ import * as i0 from "@angular/core";
6
+ export class AuthActionDirective {
7
+ constructor() {
8
+ this.takeUntilDestroyed = untilDestroyed();
9
+ this.loadingSpinnerDirective = inject(LoadingSpinnerDirective, { self: true });
10
+ this.authService = inject(AuthService);
11
+ }
12
+ ngAfterViewInit() {
13
+ this.loadingSpinnerDirective.autoColor = true;
14
+ this.authService.isRedirecting$.pipe(this.takeUntilDestroyed()).subscribe(() => {
15
+ this.loadingSpinnerDirective.isLoading = true;
16
+ });
17
+ }
18
+ }
19
+ AuthActionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AuthActionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
20
+ AuthActionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: AuthActionDirective, ngImport: i0 });
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AuthActionDirective, decorators: [{
22
+ type: Directive
23
+ }] });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1hY3Rpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXV0aC9zcmMvbGliL2RpcmVjdGl2ZXMvYXV0aC1hY3Rpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNsRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUc5QyxNQUFNLE9BQWdCLG1CQUFtQjtJQUR6QztRQUVtQix1QkFBa0IsR0FBRyxjQUFjLEVBQUUsQ0FBQztRQUN0Qyw0QkFBdUIsR0FBRyxNQUFNLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN4RSxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztLQVV0RDtJQVJRLGVBQWU7UUFDcEIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDOUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM3RSxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O2dIQVZtQixtQkFBbUI7b0dBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUR4QyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvYWRpbmdTcGlubmVyRGlyZWN0aXZlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvbG9hZGluZy1zcGlubmVyJztcbmltcG9ydCB7IHVudGlsRGVzdHJveWVkIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vYXV0aC5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXV0aEFjdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBwcml2YXRlIHJlYWRvbmx5IHRha2VVbnRpbERlc3Ryb3llZCA9IHVudGlsRGVzdHJveWVkKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9hZGluZ1NwaW5uZXJEaXJlY3RpdmUgPSBpbmplY3QoTG9hZGluZ1NwaW5uZXJEaXJlY3RpdmUsIHsgc2VsZjogdHJ1ZSB9KTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMubG9hZGluZ1NwaW5uZXJEaXJlY3RpdmUuYXV0b0NvbG9yID0gdHJ1ZTtcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmlzUmVkaXJlY3RpbmckLnBpcGUodGhpcy50YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMubG9hZGluZ1NwaW5uZXJEaXJlY3RpdmUuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBoYW5kbGVDbGljaygpOiB2b2lkO1xufVxuIl19
@@ -1,3 +1,4 @@
1
+ export * from './auth-action.directive';
1
2
  export * from './sign-in.directive';
2
3
  export * from './sign-out.directive';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvZGlyZWN0aXZlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NpZ24taW4uZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc2lnbi1vdXQuZGlyZWN0aXZlJztcbiJdfQ==
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvZGlyZWN0aXZlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXV0aC1hY3Rpb24uZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc2lnbi1pbi5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9zaWduLW91dC5kaXJlY3RpdmUnO1xuIl19