@igo2/auth 17.0.0-next.1 → 17.0.0-next.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/environment/environment.interface.d.ts +6 -0
  2. package/environment/index.d.ts +5 -0
  3. package/esm2022/environment/environment.interface.mjs +2 -0
  4. package/esm2022/environment/igo2-auth-environment.mjs +5 -0
  5. package/esm2022/environment/public_api.mjs +2 -0
  6. package/esm2022/facebook/auth-facebook/auth-facebook.component.mjs +65 -0
  7. package/esm2022/facebook/igo2-auth-facebook.mjs +5 -0
  8. package/esm2022/facebook/public_api.mjs +3 -0
  9. package/esm2022/facebook/shared/auth-facebook.interface.mjs +2 -0
  10. package/esm2022/facebook/shared/index.mjs +2 -0
  11. package/esm2022/form/auth-form/auth-form.component.mjs +166 -0
  12. package/esm2022/form/auth-form.module.mjs +73 -0
  13. package/esm2022/form/igo2-auth-form.mjs +5 -0
  14. package/esm2022/form/public_api.mjs +7 -0
  15. package/esm2022/form/shared/auth-form.interface.mjs +2 -0
  16. package/esm2022/form/shared/index.mjs +2 -0
  17. package/esm2022/google/auth-google/auth-google.component.mjs +108 -0
  18. package/esm2022/google/igo2-auth-google.mjs +5 -0
  19. package/esm2022/google/public_api.mjs +3 -0
  20. package/esm2022/google/shared/auth-google.interface.mjs +2 -0
  21. package/esm2022/google/shared/index.mjs +2 -0
  22. package/esm2022/internal/auth-intern/auth-intern.component.mjs +84 -0
  23. package/esm2022/internal/igo2-auth-internal.mjs +5 -0
  24. package/esm2022/internal/public_api.mjs +2 -0
  25. package/esm2022/lib/auth.provider.mjs +22 -0
  26. package/esm2022/lib/shared/admin.guard.mjs +4 -4
  27. package/esm2022/lib/shared/auth-storage.interface.mjs +1 -1
  28. package/esm2022/lib/shared/auth-storage.service.mjs +4 -4
  29. package/esm2022/lib/shared/auth.guard.mjs +4 -4
  30. package/esm2022/lib/shared/auth.interceptor.mjs +4 -4
  31. package/esm2022/lib/shared/auth.interface.mjs +5 -2
  32. package/esm2022/lib/shared/auth.service.mjs +4 -4
  33. package/esm2022/lib/shared/index.mjs +3 -5
  34. package/esm2022/lib/shared/logged.guard.mjs +4 -4
  35. package/esm2022/lib/shared/profils.guard.mjs +4 -4
  36. package/esm2022/lib/shared/token.service.mjs +4 -4
  37. package/esm2022/microsoft/auth-microsoft/auth-microsoft.component.mjs +100 -0
  38. package/esm2022/microsoft/auth-microsoft.provider.mjs +105 -0
  39. package/esm2022/microsoft/auth-microsoftb2c/auth-microsoftb2c.component.mjs +98 -0
  40. package/esm2022/microsoft/auth-microsoftb2c/auth-msalBroadcastServiceb2c.service.mjs +47 -0
  41. package/esm2022/microsoft/auth-microsoftb2c/auth-msalServiceb2c.service.mjs +85 -0
  42. package/esm2022/microsoft/igo2-auth-microsoft.mjs +5 -0
  43. package/esm2022/microsoft/public_api.mjs +5 -0
  44. package/esm2022/microsoft/shared/auth-microsoft.interface.mjs +2 -0
  45. package/esm2022/microsoft/shared/index.mjs +2 -0
  46. package/esm2022/monitoring/auth-monitoring/auth-monitoring.provider.mjs +24 -0
  47. package/esm2022/monitoring/auth-monitoring/auth-monitoring.service.mjs +54 -0
  48. package/esm2022/monitoring/igo2-auth-monitoring.mjs +5 -0
  49. package/esm2022/monitoring/public_api.mjs +3 -0
  50. package/esm2022/public_api.mjs +3 -19
  51. package/{lib/auth-form → facebook/auth-facebook}/auth-facebook.component.d.ts +1 -1
  52. package/facebook/index.d.ts +5 -0
  53. package/facebook/public_api.d.ts +2 -0
  54. package/facebook/shared/auth-facebook.interface.d.ts +4 -0
  55. package/facebook/shared/index.d.ts +1 -0
  56. package/fesm2022/igo2-auth-environment.mjs +4 -0
  57. package/fesm2022/igo2-auth-environment.mjs.map +1 -0
  58. package/fesm2022/igo2-auth-facebook.mjs +70 -0
  59. package/fesm2022/igo2-auth-facebook.mjs.map +1 -0
  60. package/fesm2022/igo2-auth-form.mjs +238 -0
  61. package/fesm2022/igo2-auth-form.mjs.map +1 -0
  62. package/fesm2022/igo2-auth-google.mjs +112 -0
  63. package/fesm2022/igo2-auth-google.mjs.map +1 -0
  64. package/fesm2022/igo2-auth-internal.mjs +89 -0
  65. package/fesm2022/igo2-auth-internal.mjs.map +1 -0
  66. package/fesm2022/igo2-auth-microsoft.mjs +404 -0
  67. package/fesm2022/igo2-auth-microsoft.mjs.map +1 -0
  68. package/fesm2022/igo2-auth-monitoring.mjs +81 -0
  69. package/fesm2022/igo2-auth-monitoring.mjs.map +1 -0
  70. package/fesm2022/igo2-auth.mjs +241 -1145
  71. package/fesm2022/igo2-auth.mjs.map +1 -1
  72. package/{lib → form}/auth-form/auth-form.component.d.ts +3 -4
  73. package/form/auth-form.module.d.ts +20 -0
  74. package/form/index.d.ts +5 -0
  75. package/form/public_api.d.ts +3 -0
  76. package/form/shared/auth-form.interface.d.ts +9 -0
  77. package/form/shared/index.d.ts +1 -0
  78. package/{src/lib → form/src}/auth-form/auth-intern.theme.scss +19 -19
  79. package/form/src/auth-form.theme.scss +9 -0
  80. package/{lib/auth-form → google/auth-google}/auth-google.component.d.ts +1 -1
  81. package/google/index.d.ts +5 -0
  82. package/google/public_api.d.ts +2 -0
  83. package/google/shared/auth-google.interface.d.ts +5 -0
  84. package/google/shared/index.d.ts +1 -0
  85. package/{lib/auth-form → internal/auth-intern}/auth-intern.component.d.ts +1 -1
  86. package/internal/index.d.ts +5 -0
  87. package/internal/public_api.d.ts +1 -0
  88. package/lib/auth.provider.d.ts +3 -0
  89. package/lib/shared/auth.interface.d.ts +20 -69
  90. package/lib/shared/index.d.ts +2 -4
  91. package/locale/en.auth.json +29 -29
  92. package/locale/fr.auth.json +33 -33
  93. package/{lib/auth-form → microsoft/auth-microsoft}/auth-microsoft.component.d.ts +4 -2
  94. package/microsoft/auth-microsoft.provider.d.ts +12 -0
  95. package/{lib/auth-form → microsoft/auth-microsoftb2c}/auth-microsoftb2c.component.d.ts +5 -3
  96. package/{lib/shared → microsoft/auth-microsoftb2c}/auth-msalBroadcastServiceb2c.service.d.ts +1 -1
  97. package/microsoft/index.d.ts +5 -0
  98. package/microsoft/public_api.d.ts +4 -0
  99. package/microsoft/shared/auth-microsoft.interface.d.ts +32 -0
  100. package/microsoft/shared/index.d.ts +1 -0
  101. package/{lib → monitoring}/auth-monitoring/auth-monitoring.service.d.ts +1 -1
  102. package/monitoring/index.d.ts +5 -0
  103. package/monitoring/public_api.d.ts +2 -0
  104. package/package.json +46 -3
  105. package/public_api.d.ts +2 -18
  106. package/src/auth.theme.scss +9 -9
  107. package/esm2022/lib/auth-form/auth-facebook.component.mjs +0 -65
  108. package/esm2022/lib/auth-form/auth-form.component.mjs +0 -170
  109. package/esm2022/lib/auth-form/auth-google.component.mjs +0 -108
  110. package/esm2022/lib/auth-form/auth-intern.component.mjs +0 -84
  111. package/esm2022/lib/auth-form/auth-microsoft.component.mjs +0 -100
  112. package/esm2022/lib/auth-form/auth-microsoftb2c.component.mjs +0 -98
  113. package/esm2022/lib/auth-form/index.mjs +0 -19
  114. package/esm2022/lib/auth-monitoring/auth-monitoring.provider.mjs +0 -24
  115. package/esm2022/lib/auth-monitoring/auth-monitoring.service.mjs +0 -54
  116. package/esm2022/lib/auth.module.mjs +0 -98
  117. package/esm2022/lib/environment/environment.interface.mjs +0 -2
  118. package/esm2022/lib/environment/index.mjs +0 -2
  119. package/esm2022/lib/shared/auth-microsoft.provider.mjs +0 -86
  120. package/esm2022/lib/shared/auth-msalBroadcastServiceb2c.service.mjs +0 -47
  121. package/esm2022/lib/shared/auth-msalServiceb2c.service..mjs +0 -85
  122. package/esm2022/lib/shared/protected.directive.mjs +0 -21
  123. package/lib/auth-form/index.d.ts +0 -11
  124. package/lib/auth.module.d.ts +0 -24
  125. package/lib/environment/environment.interface.d.ts +0 -5
  126. package/lib/shared/auth-microsoft.provider.d.ts +0 -30
  127. package/lib/shared/protected.directive.d.ts +0 -8
  128. /package/{lib/environment/index.d.ts → environment/public_api.d.ts} +0 -0
  129. /package/{lib/shared/auth-msalServiceb2c.service..d.ts → microsoft/auth-microsoftb2c/auth-msalServiceb2c.service.d.ts} +0 -0
  130. /package/{lib → monitoring}/auth-monitoring/auth-monitoring.provider.d.ts +0 -0
@@ -1,62 +1,29 @@
1
+ import { Provider } from '@angular/core';
1
2
  import { BaseUser } from '@igo2/core/user';
2
- import { MsalGuardConfiguration } from '@azure/msal-angular';
3
- import { BrowserAuthOptions } from '@azure/msal-browser';
4
- export interface AuthInternOptions {
5
- enabled?: boolean;
6
- }
7
- export interface AuthFacebookOptions {
8
- enabled?: boolean;
9
- appId: string;
10
- }
11
- export interface AuthGoogleOptions {
12
- enabled?: boolean;
13
- apiKey: string;
14
- clientId: string;
15
- }
16
- export interface AuthMicrosoftOptions extends BrowserAuthOptions {
17
- enabled?: boolean;
18
- }
19
- export interface AuthMicrosoftb2cOptions {
20
- enabled?: boolean;
21
- browserAuthOptions?: BrowserAuthOptions;
22
- options?: AuthMicrosoftb2cOptionsOptions;
23
- scopes?: string[];
24
- }
25
- export interface AuthMicrosoftb2cOptionsOptions {
26
- names: AuthMicrosoftb2cOptionsNames;
27
- authorities: AuthMicrosoftb2cOptionsAuthorities;
28
- authorityDomain: string[];
29
- }
30
- export interface AuthMicrosoftb2cOptionsNames {
31
- signUpSignIn: string;
32
- forgotPassword: string;
33
- editProfile: string;
34
- }
35
- export interface AuthMicrosoftb2cOptionsAuthorities {
36
- signUpSignIn: AuthMicrosoftb2cOptionsAuthority;
37
- forgotPassword: AuthMicrosoftb2cOptionsAuthority;
38
- editProfile: AuthMicrosoftb2cOptionsAuthority;
3
+ export interface User extends BaseUser {
4
+ source?: string;
5
+ sourceId?: string;
6
+ locale?: string;
7
+ isExpired?: boolean;
8
+ isAdmin?: boolean;
9
+ defaultContextId?: string;
39
10
  }
40
- export interface AuthMicrosoftb2cOptionsAuthority {
41
- authority: string;
11
+ export interface IInfosUser {
12
+ tokenId: string;
42
13
  }
43
- export interface AuthOptions {
14
+ export type AuthOptions = {
44
15
  url?: string;
45
16
  tokenKey?: string;
46
17
  allowAnonymous?: boolean;
47
18
  loginRoute?: string;
48
19
  logoutRoute?: string;
49
20
  homeRoute?: string;
50
- intern?: AuthInternOptions;
51
- facebook?: AuthFacebookOptions;
52
- google?: AuthGoogleOptions;
53
- microsoft?: AuthMicrosoftOptions;
54
- microsoftb2c?: AuthMicrosoftb2cOptions;
55
21
  trustHosts?: string[];
56
22
  profilsGuard?: string[];
57
23
  hostsWithCredentials?: WithCredentialsOptions[];
58
24
  hostsByKey?: AuthByKeyOptions[];
59
- }
25
+ intern?: AuthInternOptions;
26
+ };
60
27
  export interface AuthByKeyOptions {
61
28
  domainRegFilters?: string;
62
29
  keyProperty?: string;
@@ -66,29 +33,13 @@ export interface WithCredentialsOptions {
66
33
  withCredentials?: boolean;
67
34
  domainRegFilters?: string;
68
35
  }
69
- export interface MSPMsalGuardConfiguration extends MsalGuardConfiguration {
70
- type: string;
71
- }
72
- export interface MSPMsalGuardConfiguration extends MsalGuardConfiguration {
73
- type: string;
74
- }
75
- export interface MSPMsalGuardConfiguration extends MsalGuardConfiguration {
76
- type: string;
77
- }
78
- export interface MSPMsalGuardConfiguration extends MsalGuardConfiguration {
79
- type: string;
80
- }
81
- export interface MSPMsalGuardConfiguration extends MsalGuardConfiguration {
82
- type: string;
36
+ export interface AuthInternOptions {
37
+ enabled?: boolean;
83
38
  }
84
- export interface User extends BaseUser {
85
- source?: string;
86
- sourceId?: string;
87
- locale?: string;
88
- isExpired?: boolean;
89
- isAdmin?: boolean;
90
- defaultContextId?: string;
39
+ export interface AuthFeature<KindT extends AuthFeatureKind> {
40
+ kind: KindT;
41
+ providers: Provider[];
91
42
  }
92
- export interface IInfosUser {
93
- tokenId: string;
43
+ export declare enum AuthFeatureKind {
44
+ Microsoft = 0
94
45
  }
@@ -1,13 +1,11 @@
1
1
  export * from './token.service';
2
2
  export * from './token.interface';
3
3
  export * from './auth.service';
4
+ export * from './auth-storage.service';
5
+ export * from './auth-storage.interface';
4
6
  export * from './auth.interface';
5
7
  export * from './auth.interceptor';
6
- export * from './auth-microsoft.provider';
7
8
  export * from './logged.guard';
8
9
  export * from './auth.guard';
9
10
  export * from './admin.guard';
10
11
  export * from './profils.guard';
11
- export * from './protected.directive';
12
- export * from './auth-storage.interface';
13
- export * from './auth-storage.service';
@@ -1,29 +1,29 @@
1
- {
2
- "igo": {
3
- "auth": {
4
- "accessAnonymous": "Public access",
5
- "connection": "Connection",
6
- "login": "Login",
7
- "password": "Password",
8
- "signOut": "Sign out",
9
- "user": "User",
10
- "welcome": "Welcome {{name}}!",
11
- "deconnection": "You are logged out.",
12
- "home": "Return to the home page",
13
- "error": {
14
- "Password expired": "Password expired",
15
- "Maximun logins exceeded": "Maximum logins exceeded",
16
- "Login lockout": "Maximum number of attempts exceeded. Your account is locked.",
17
- "Wrong password": "Wrong password",
18
- "Invalid username": "Invalid username",
19
- "Username or password invalid": "Username or password invalid"
20
- },
21
- "microsoft": {
22
- "login": "Sign in with Azure account"
23
- },
24
- "microsoftb2c": {
25
- "login": "Sign in"
26
- }
27
- }
28
- }
29
- }
1
+ {
2
+ "igo": {
3
+ "auth": {
4
+ "accessAnonymous": "Public access",
5
+ "connection": "Connection",
6
+ "login": "Login",
7
+ "password": "Password",
8
+ "signOut": "Sign out",
9
+ "user": "User",
10
+ "welcome": "Welcome {{name}}!",
11
+ "deconnection": "You are logged out.",
12
+ "home": "Return to the home page",
13
+ "error": {
14
+ "Password expired": "Password expired",
15
+ "Maximun logins exceeded": "Maximum logins exceeded",
16
+ "Login lockout": "Maximum number of attempts exceeded. Your account is locked.",
17
+ "Wrong password": "Wrong password",
18
+ "Invalid username": "Invalid username",
19
+ "Username or password invalid": "Username or password invalid"
20
+ },
21
+ "microsoft": {
22
+ "login": "Sign in with Azure account"
23
+ },
24
+ "microsoftb2c": {
25
+ "login": "Sign in"
26
+ }
27
+ }
28
+ }
29
+ }
@@ -1,33 +1,33 @@
1
- {
2
- "igo": {
3
- "auth": {
4
- "accessAnonymous": "Accès public",
5
- "connection": "Connexion",
6
- "login": "Se connecter",
7
- "password": "Mot de passe",
8
- "signOut": "Se déconnecter",
9
- "user": "Utilisateur",
10
- "welcome": "Bienvenue {{name}}!",
11
- "deconnection": "Vous êtes déconnecté",
12
- "home": "Retourner à la page d'accueil",
13
- "error": {
14
- "Password expired": "Votre mot de passe est expiré",
15
- "Maximun logins exceeded": "Nombre maximal de connexions dépassé",
16
- "Login lockout": "Nombre maximal d'essais dépassés. Votre compte est verrouillé.",
17
- "Wrong password": "Mot de passe incorrect",
18
- "Invalid username": "Utilisateur invalide",
19
- "Username or password invalid": "Utilisateur ou mot de passe invalide"
20
- },
21
- "google": {
22
- "login": "Se connecter avec Google",
23
- "logged": "Connecté avec Google"
24
- },
25
- "microsoft": {
26
- "login": "Se connecter avec compte Azure"
27
- },
28
- "microsoftb2c": {
29
- "login": "Se connecter"
30
- }
31
- }
32
- }
33
- }
1
+ {
2
+ "igo": {
3
+ "auth": {
4
+ "accessAnonymous": "Accès public",
5
+ "connection": "Connexion",
6
+ "login": "Se connecter",
7
+ "password": "Mot de passe",
8
+ "signOut": "Se déconnecter",
9
+ "user": "Utilisateur",
10
+ "welcome": "Bienvenue {{name}}!",
11
+ "deconnection": "Vous êtes déconnecté",
12
+ "home": "Retourner à la page d'accueil",
13
+ "error": {
14
+ "Password expired": "Votre mot de passe est expiré",
15
+ "Maximun logins exceeded": "Nombre maximal de connexions dépassé",
16
+ "Login lockout": "Nombre maximal d'essais dépassés. Votre compte est verrouillé.",
17
+ "Wrong password": "Mot de passe incorrect",
18
+ "Invalid username": "Utilisateur invalide",
19
+ "Username or password invalid": "Utilisateur ou mot de passe invalide"
20
+ },
21
+ "google": {
22
+ "login": "Se connecter avec Google",
23
+ "logged": "Connecté avec Google"
24
+ },
25
+ "microsoft": {
26
+ "login": "Se connecter avec compte Azure"
27
+ },
28
+ "microsoftb2c": {
29
+ "login": "Se connecter"
30
+ }
31
+ }
32
+ }
33
+ }
@@ -1,8 +1,9 @@
1
1
  import { ApplicationRef, EventEmitter } from '@angular/core';
2
+ import { AuthService } from '@igo2/auth';
3
+ import { IconSvg } from '@igo2/common/icon';
2
4
  import { ConfigService } from '@igo2/core/config';
3
5
  import { MsalService } from '@azure/msal-angular';
4
- import { MSPMsalGuardConfiguration } from '../shared/auth.interface';
5
- import { AuthService } from '../shared/auth.service';
6
+ import { MSPMsalGuardConfiguration } from '../shared/auth-microsoft.interface';
6
7
  import * as i0 from "@angular/core";
7
8
  export declare class AuthMicrosoftComponent {
8
9
  private authService;
@@ -14,6 +15,7 @@ export declare class AuthMicrosoftComponent {
14
15
  private readonly _destroying$;
15
16
  login: EventEmitter<boolean>;
16
17
  private broadcastService;
18
+ svgIcon: IconSvg;
17
19
  constructor(authService: AuthService, config: ConfigService, appRef: ApplicationRef, msalService: MsalService, msalGuardConfig: MSPMsalGuardConfiguration[]);
18
20
  loginMicrosoft(): void;
19
21
  private checkAccount;
@@ -0,0 +1,12 @@
1
+ import { AuthFeature, AuthFeatureKind } from '@igo2/auth';
2
+ import { ConfigService } from '@igo2/core/config';
3
+ import { PublicClientApplication } from '@azure/msal-browser';
4
+ import { AuthMicrosoftComponent } from './auth-microsoft/auth-microsoft.component';
5
+ import { AuthMicrosoftb2cComponent } from './auth-microsoftb2c/auth-microsoftb2c.component';
6
+ import { MSPMsalGuardConfiguration } from './shared/auth-microsoft.interface';
7
+ export declare const AUTH_MICROSOFT_DIRECTIVES: readonly [typeof AuthMicrosoftComponent, typeof AuthMicrosoftb2cComponent];
8
+ export declare function MSALConfigFactory(config: ConfigService): PublicClientApplication;
9
+ export declare function MSALConfigFactoryb2c(config: ConfigService): PublicClientApplication;
10
+ export declare function MSALAngularConfigFactory(config: ConfigService): MSPMsalGuardConfiguration;
11
+ export declare function MSALAngularConfigFactoryb2c(config: ConfigService): MSPMsalGuardConfiguration;
12
+ export declare function withMicrosoftSupport(type?: string): AuthFeature<AuthFeatureKind.Microsoft>;
@@ -1,8 +1,9 @@
1
1
  import { ApplicationRef, EventEmitter } from '@angular/core';
2
+ import { AuthService } from '@igo2/auth';
3
+ import { IconSvg } from '@igo2/common/icon';
2
4
  import { ConfigService } from '@igo2/core/config';
3
- import { MsalServiceb2c } from '../shared/auth-msalServiceb2c.service.';
4
- import { MSPMsalGuardConfiguration } from '../shared/auth.interface';
5
- import { AuthService } from '../shared/auth.service';
5
+ import { MSPMsalGuardConfiguration } from '../shared/auth-microsoft.interface';
6
+ import { MsalServiceb2c } from './auth-msalServiceb2c.service';
6
7
  import * as i0 from "@angular/core";
7
8
  export declare class AuthMicrosoftb2cComponent {
8
9
  private authService;
@@ -14,6 +15,7 @@ export declare class AuthMicrosoftb2cComponent {
14
15
  private readonly _destroying$;
15
16
  login: EventEmitter<boolean>;
16
17
  private broadcastService;
18
+ svgIcon: IconSvg;
17
19
  constructor(authService: AuthService, config: ConfigService, appRef: ApplicationRef, msalService: MsalServiceb2c, msalGuardConfig: MSPMsalGuardConfiguration[]);
18
20
  loginMicrosoftb2c(): void;
19
21
  private checkAccount;
@@ -1,6 +1,6 @@
1
1
  import { EventMessage, IPublicClientApplication, InteractionStatus } from '@azure/msal-browser';
2
2
  import { Observable } from 'rxjs';
3
- import { MsalServiceb2c } from './auth-msalServiceb2c.service.';
3
+ import { MsalServiceb2c } from './auth-msalServiceb2c.service';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class MsalBroadcastServiceb2c {
6
6
  private msalInstance;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@igo2/auth/microsoft" />
5
+ export * from './public_api';
@@ -0,0 +1,4 @@
1
+ export * from './auth-microsoft.provider';
2
+ export * from './auth-microsoft/auth-microsoft.component';
3
+ export * from './auth-microsoftb2c/auth-microsoftb2c.component';
4
+ export * from './shared';
@@ -0,0 +1,32 @@
1
+ import type { MsalGuardConfiguration } from '@azure/msal-angular';
2
+ import type { BrowserAuthOptions } from '@azure/msal-browser';
3
+ export interface AuthMicrosoftOptions extends BrowserAuthOptions {
4
+ enabled?: boolean;
5
+ }
6
+ export interface AuthMicrosoftb2cOptions {
7
+ enabled?: boolean;
8
+ browserAuthOptions?: BrowserAuthOptions;
9
+ options?: AuthMicrosoftb2cOptionsOptions;
10
+ scopes?: string[];
11
+ }
12
+ export interface AuthMicrosoftb2cOptionsOptions {
13
+ names: AuthMicrosoftb2cOptionsNames;
14
+ authorities: AuthMicrosoftb2cOptionsAuthorities;
15
+ authorityDomain: string[];
16
+ }
17
+ export interface AuthMicrosoftb2cOptionsNames {
18
+ signUpSignIn: string;
19
+ forgotPassword: string;
20
+ editProfile: string;
21
+ }
22
+ export interface AuthMicrosoftb2cOptionsAuthorities {
23
+ signUpSignIn: AuthMicrosoftb2cOptionsAuthority;
24
+ forgotPassword: AuthMicrosoftb2cOptionsAuthority;
25
+ editProfile: AuthMicrosoftb2cOptionsAuthority;
26
+ }
27
+ export interface AuthMicrosoftb2cOptionsAuthority {
28
+ authority: string;
29
+ }
30
+ export interface MSPMsalGuardConfiguration extends MsalGuardConfiguration {
31
+ type: string;
32
+ }
@@ -0,0 +1 @@
1
+ export * from './auth-microsoft.interface';
@@ -1,7 +1,7 @@
1
1
  import { Injector } from '@angular/core';
2
+ import { AuthService } from '@igo2/auth';
2
3
  import { ConfigService } from '@igo2/core/config';
3
4
  import { AnyMonitoringOptions } from '@igo2/core/monitoring';
4
- import { AuthService } from '../shared';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class AuthMonitoringService {
7
7
  private configService;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@igo2/auth/monitoring" />
5
+ export * from './public_api';
@@ -0,0 +1,2 @@
1
+ export * from './auth-monitoring/auth-monitoring.provider';
2
+ export * from './auth-monitoring/auth-monitoring.service';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@igo2/auth",
3
- "version": "17.0.0-next.1",
3
+ "version": "17.0.0-next.11",
4
4
  "description": "IGO Library",
5
5
  "author": "IGO Community",
6
6
  "keywords": [
@@ -22,8 +22,50 @@
22
22
  "esm": "./esm2022/igo2-auth.mjs",
23
23
  "default": "./fesm2022/igo2-auth.mjs"
24
24
  },
25
+ "./environment": {
26
+ "types": "./environment/index.d.ts",
27
+ "esm2022": "./esm2022/environment/igo2-auth-environment.mjs",
28
+ "esm": "./esm2022/environment/igo2-auth-environment.mjs",
29
+ "default": "./fesm2022/igo2-auth-environment.mjs"
30
+ },
31
+ "./facebook": {
32
+ "types": "./facebook/index.d.ts",
33
+ "esm2022": "./esm2022/facebook/igo2-auth-facebook.mjs",
34
+ "esm": "./esm2022/facebook/igo2-auth-facebook.mjs",
35
+ "default": "./fesm2022/igo2-auth-facebook.mjs"
36
+ },
37
+ "./form": {
38
+ "types": "./form/index.d.ts",
39
+ "esm2022": "./esm2022/form/igo2-auth-form.mjs",
40
+ "esm": "./esm2022/form/igo2-auth-form.mjs",
41
+ "default": "./fesm2022/igo2-auth-form.mjs"
42
+ },
43
+ "./google": {
44
+ "types": "./google/index.d.ts",
45
+ "esm2022": "./esm2022/google/igo2-auth-google.mjs",
46
+ "esm": "./esm2022/google/igo2-auth-google.mjs",
47
+ "default": "./fesm2022/igo2-auth-google.mjs"
48
+ },
49
+ "./internal": {
50
+ "types": "./internal/index.d.ts",
51
+ "esm2022": "./esm2022/internal/igo2-auth-internal.mjs",
52
+ "esm": "./esm2022/internal/igo2-auth-internal.mjs",
53
+ "default": "./fesm2022/igo2-auth-internal.mjs"
54
+ },
55
+ "./microsoft": {
56
+ "types": "./microsoft/index.d.ts",
57
+ "esm2022": "./esm2022/microsoft/igo2-auth-microsoft.mjs",
58
+ "esm": "./esm2022/microsoft/igo2-auth-microsoft.mjs",
59
+ "default": "./fesm2022/igo2-auth-microsoft.mjs"
60
+ },
25
61
  "./package.json": {
26
62
  "default": "./package.json"
63
+ },
64
+ "./monitoring": {
65
+ "types": "./monitoring/index.d.ts",
66
+ "esm2022": "./esm2022/monitoring/igo2-auth-monitoring.mjs",
67
+ "esm": "./esm2022/monitoring/igo2-auth-monitoring.mjs",
68
+ "default": "./fesm2022/igo2-auth-monitoring.mjs"
27
69
  }
28
70
  },
29
71
  "dependencies": {
@@ -41,8 +83,9 @@
41
83
  "@angular/router": "^17.0.6",
42
84
  "@azure/msal-angular": "^3.0.4",
43
85
  "@azure/msal-browser": "^3.0.4",
44
- "@igo2/core": "^17.0.0-next.1",
45
- "@igo2/utils": "^17.0.0-next.1",
86
+ "@igo2/common": "^17.0.0-next.11",
87
+ "@igo2/core": "^17.0.0-next.11",
88
+ "@igo2/utils": "^17.0.0-next.11",
46
89
  "rxjs": "^7.8.0"
47
90
  },
48
91
  "engines": {
package/public_api.d.ts CHANGED
@@ -1,18 +1,2 @@
1
- export { AuthFormComponent } from './lib/auth-form';
2
- export * from './lib/environment';
3
- export * from './lib/shared/auth.service';
4
- export * from './lib/shared/logged.guard';
5
- export * from './lib/shared/auth.guard';
6
- export * from './lib/shared/admin.guard';
7
- export * from './lib/shared/profils.guard';
8
- export * from './lib/shared/auth.interceptor';
9
- export * from './lib/shared/auth.interface';
10
- export * from './lib/shared/auth-microsoft.provider';
11
- export * from './lib/shared/protected.directive';
12
- export * from './lib/shared/token.interface';
13
- export * from './lib/shared/token.service';
14
- export * from './lib/shared/auth-storage.interface';
15
- export * from './lib/shared/auth-storage.service';
16
- export * from './lib/auth-monitoring/auth-monitoring.provider';
17
- export * from './lib/auth-monitoring/auth-monitoring.service';
18
- export * from './lib/auth.module';
1
+ export * from './lib/auth.provider';
2
+ export * from './lib/shared';
@@ -1,9 +1,9 @@
1
- @use './lib/auth-form/auth-intern.theme.scss' as auth-intern;
2
-
3
- @mixin themes($theme) {
4
- @include auth-intern.theme($theme);
5
- }
6
-
7
- @mixin colors($theme) {
8
- @include auth-intern.color($theme);
9
- }
1
+ @use '../form/src/auth-form.theme.scss' as auth-form;
2
+
3
+ @mixin themes($theme) {
4
+ @include auth-form.themes($theme);
5
+ }
6
+
7
+ @mixin colors($theme) {
8
+ @include auth-form.colors($theme);
9
+ }
@@ -1,65 +0,0 @@
1
- import { ApplicationRef, ChangeDetectionStrategy, Component, EventEmitter, Output } from '@angular/core';
2
- import { ConfigService } from '@igo2/core/config';
3
- import { AuthService } from '../shared/auth.service';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../shared/auth.service";
6
- import * as i2 from "@igo2/core/config";
7
- export class AuthFacebookComponent {
8
- authService;
9
- config;
10
- appRef;
11
- options;
12
- login = new EventEmitter();
13
- constructor(authService, config, appRef) {
14
- this.authService = authService;
15
- this.config = config;
16
- this.appRef = appRef;
17
- this.options = this.config.getConfig('auth.facebook');
18
- if (this.options?.appId) {
19
- this.loadSDKFacebook();
20
- }
21
- else {
22
- console.warn('Facebook authentification needs "appId" option');
23
- }
24
- }
25
- subscribeEvents() {
26
- window.FB.Event.subscribe('auth.statusChange', (rep) => {
27
- this.statusChangeCallback(rep);
28
- });
29
- }
30
- statusChangeCallback(response) {
31
- if (response.status === 'connected') {
32
- const accessToken = response.authResponse.accessToken;
33
- this.loginFacebook(accessToken);
34
- }
35
- }
36
- loginFacebook(token) {
37
- this.authService.loginWithToken(token, 'facebook').subscribe(() => {
38
- this.appRef.tick();
39
- this.login.emit(true);
40
- });
41
- }
42
- loadSDKFacebook() {
43
- if (document.getElementById('facebook-jssdk')) {
44
- return;
45
- }
46
- const urlSDK = 'https://connect.facebook.net/fr_CA/sdk.js#xfbml=1&version=v2.9';
47
- const fjs = document.getElementsByTagName('script')[0];
48
- const js = document.createElement('script');
49
- js.id = 'facebook-jssdk';
50
- js.src = `${urlSDK}&appId=${this.options?.appId}`;
51
- js.onload = () => {
52
- this.subscribeEvents();
53
- };
54
- fjs.parentNode.insertBefore(js, fjs);
55
- }
56
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AuthFacebookComponent, deps: [{ token: i1.AuthService }, { token: i2.ConfigService }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Component });
57
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: AuthFacebookComponent, isStandalone: true, selector: "igo-auth-facebook", outputs: { login: "login" }, ngImport: i0, template: "<div\r\n scope=\"public_profile,email\"\r\n class=\"fb-login-button\"\r\n data-max-rows=\"1\"\r\n data-size=\"large\"\r\n data-button-type=\"login_with\"\r\n data-show-faces=\"false\"\r\n data-auto-logout-link=\"false\"\r\n data-use-continue-as=\"false\"\r\n></div>\r\n", styles: [":host{padding:10px 10px 10px 0;display:inline-block;position:relative;top:-3px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
58
- }
59
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AuthFacebookComponent, decorators: [{
60
- type: Component,
61
- args: [{ selector: 'igo-auth-facebook', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<div\r\n scope=\"public_profile,email\"\r\n class=\"fb-login-button\"\r\n data-max-rows=\"1\"\r\n data-size=\"large\"\r\n data-button-type=\"login_with\"\r\n data-show-faces=\"false\"\r\n data-auto-logout-link=\"false\"\r\n data-use-continue-as=\"false\"\r\n></div>\r\n", styles: [":host{padding:10px 10px 10px 0;display:inline-block;position:relative;top:-3px}\n"] }]
62
- }], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.ConfigService }, { type: i0.ApplicationRef }], propDecorators: { login: [{
63
- type: Output
64
- }] } });
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1mYWNlYm9vay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hdXRoL3NyYy9saWIvYXV0aC1mb3JtL2F1dGgtZmFjZWJvb2suY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYXV0aC9zcmMvbGliL2F1dGgtZm9ybS9hdXRoLWZhY2Vib29rLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxjQUFjLEVBQ2QsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7QUFTckQsTUFBTSxPQUFPLHFCQUFxQjtJQU10QjtJQUNBO0lBQ0E7SUFQRixPQUFPLENBQXVCO0lBRTVCLEtBQUssR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUVyRSxZQUNVLFdBQXdCLEVBQ3hCLE1BQXFCLEVBQ3JCLE1BQXNCO1FBRnRCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFFOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUV0RCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLElBQUksQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7SUFDSCxDQUFDO0lBRU8sZUFBZTtRQUNwQixNQUFjLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUM5RCxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sb0JBQW9CLENBQUMsUUFBUTtRQUNuQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDcEMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUM7WUFDdEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQztJQUVPLGFBQWEsQ0FBQyxLQUFLO1FBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2hFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLFFBQVEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1lBQzlDLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQ1YsZ0VBQWdFLENBQUM7UUFFbkUsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQztRQUN6QixFQUFFLENBQUMsR0FBRyxHQUFHLEdBQUcsTUFBTSxVQUFVLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDbEQsRUFBRSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7WUFDZixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDekIsQ0FBQyxDQUFDO1FBQ0YsR0FBRyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7dUdBdkRVLHFCQUFxQjsyRkFBckIscUJBQXFCLDBHQ3BCbEMsdVJBVUE7OzJGRFVhLHFCQUFxQjtrQkFQakMsU0FBUzsrQkFDRSxtQkFBbUIsbUJBR1osdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJO3lJQUtOLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQXBwbGljYXRpb25SZWYsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBPdXRwdXRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL2NvbmZpZyc7XHJcblxyXG5pbXBvcnQgeyBBdXRoRmFjZWJvb2tPcHRpb25zIH0gZnJvbSAnLi4vc2hhcmVkL2F1dGguaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvYXV0aC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWdvLWF1dGgtZmFjZWJvb2snLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRoLWZhY2Vib29rLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hdXRoLWZhY2Vib29rLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXV0aEZhY2Vib29rQ29tcG9uZW50IHtcclxuICBwcml2YXRlIG9wdGlvbnM/OiBBdXRoRmFjZWJvb2tPcHRpb25zO1xyXG5cclxuICBAT3V0cHV0KCkgbG9naW46IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgY29uZmlnOiBDb25maWdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmXHJcbiAgKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmNvbmZpZy5nZXRDb25maWcoJ2F1dGguZmFjZWJvb2snKTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zPy5hcHBJZCkge1xyXG4gICAgICB0aGlzLmxvYWRTREtGYWNlYm9vaygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS53YXJuKCdGYWNlYm9vayBhdXRoZW50aWZpY2F0aW9uIG5lZWRzIFwiYXBwSWRcIiBvcHRpb24nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3Vic2NyaWJlRXZlbnRzKCkge1xyXG4gICAgKHdpbmRvdyBhcyBhbnkpLkZCLkV2ZW50LnN1YnNjcmliZSgnYXV0aC5zdGF0dXNDaGFuZ2UnLCAocmVwKSA9PiB7XHJcbiAgICAgIHRoaXMuc3RhdHVzQ2hhbmdlQ2FsbGJhY2socmVwKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0dXNDaGFuZ2VDYWxsYmFjayhyZXNwb25zZSkge1xyXG4gICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gJ2Nvbm5lY3RlZCcpIHtcclxuICAgICAgY29uc3QgYWNjZXNzVG9rZW4gPSByZXNwb25zZS5hdXRoUmVzcG9uc2UuYWNjZXNzVG9rZW47XHJcbiAgICAgIHRoaXMubG9naW5GYWNlYm9vayhhY2Nlc3NUb2tlbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvZ2luRmFjZWJvb2sodG9rZW4pIHtcclxuICAgIHRoaXMuYXV0aFNlcnZpY2UubG9naW5XaXRoVG9rZW4odG9rZW4sICdmYWNlYm9vaycpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuYXBwUmVmLnRpY2soKTtcclxuICAgICAgdGhpcy5sb2dpbi5lbWl0KHRydWUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRTREtGYWNlYm9vaygpIHtcclxuICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmFjZWJvb2stanNzZGsnKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdXJsU0RLID1cclxuICAgICAgJ2h0dHBzOi8vY29ubmVjdC5mYWNlYm9vay5uZXQvZnJfQ0Evc2RrLmpzI3hmYm1sPTEmdmVyc2lvbj12Mi45JztcclxuXHJcbiAgICBjb25zdCBmanMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0JylbMF07XHJcbiAgICBjb25zdCBqcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xyXG4gICAganMuaWQgPSAnZmFjZWJvb2stanNzZGsnO1xyXG4gICAganMuc3JjID0gYCR7dXJsU0RLfSZhcHBJZD0ke3RoaXMub3B0aW9ucz8uYXBwSWR9YDtcclxuICAgIGpzLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgdGhpcy5zdWJzY3JpYmVFdmVudHMoKTtcclxuICAgIH07XHJcbiAgICBmanMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoanMsIGZqcyk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBzY29wZT1cInB1YmxpY19wcm9maWxlLGVtYWlsXCJcclxuICBjbGFzcz1cImZiLWxvZ2luLWJ1dHRvblwiXHJcbiAgZGF0YS1tYXgtcm93cz1cIjFcIlxyXG4gIGRhdGEtc2l6ZT1cImxhcmdlXCJcclxuICBkYXRhLWJ1dHRvbi10eXBlPVwibG9naW5fd2l0aFwiXHJcbiAgZGF0YS1zaG93LWZhY2VzPVwiZmFsc2VcIlxyXG4gIGRhdGEtYXV0by1sb2dvdXQtbGluaz1cImZhbHNlXCJcclxuICBkYXRhLXVzZS1jb250aW51ZS1hcz1cImZhbHNlXCJcclxuPjwvZGl2PlxyXG4iXX0=