@auth0/auth0-angular 2.2.3 → 2.3.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.
package/README.md CHANGED
@@ -22,7 +22,7 @@ A library for integrating [Auth0](https://auth0.com) into an Angular application
22
22
 
23
23
  ### Requirements
24
24
 
25
- This project only supports the [actively supported versions of Angular as stated in the Angular documentation](https://angular.io/guide/releases#actively-supported-versions). Whilst other versions might be compatible they are not actively supported.
25
+ This project only supports the [actively supported versions of Angular as stated in the Angular documentation](https://angular.dev/reference/releases#actively-supported-versions). Whilst other versions might be compatible they are not actively supported.
26
26
 
27
27
  ### Installation
28
28
 
@@ -0,0 +1,35 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Router } from '@angular/router';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ export class AbstractNavigator {
6
+ constructor(location, injector) {
7
+ this.location = location;
8
+ try {
9
+ this.router = injector.get(Router);
10
+ }
11
+ catch { }
12
+ }
13
+ /**
14
+ * Navigates to the specified url. The router will be used if one is available, otherwise it falls back
15
+ * to `window.history.replaceState`.
16
+ *
17
+ * @param url The url to navigate to
18
+ */
19
+ navigateByUrl(url) {
20
+ if (this.router) {
21
+ this.router.navigateByUrl(url);
22
+ return;
23
+ }
24
+ this.location.replaceState(url);
25
+ }
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractNavigator, deps: [{ token: i1.Location }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
27
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractNavigator, providedIn: 'root' }); }
28
+ }
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractNavigator, decorators: [{
30
+ type: Injectable,
31
+ args: [{
32
+ providedIn: 'root',
33
+ }]
34
+ }], ctorParameters: () => [{ type: i1.Location }, { type: i0.Injector }] });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbmF2aWdhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYXV0aDAtYW5ndWxhci9zcmMvbGliL2Fic3RyYWN0LW5hdmlnYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBTXpDLE1BQU0sT0FBTyxpQkFBaUI7SUFHNUIsWUFBb0IsUUFBa0IsRUFBRSxRQUFrQjtRQUF0QyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ3BDLElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQztJQUNaLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGFBQWEsQ0FBQyxHQUFXO1FBQ3ZCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRS9CLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEMsQ0FBQzsrR0F2QlUsaUJBQWlCO21IQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs7NEZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQWJzdHJhY3ROYXZpZ2F0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcj86IFJvdXRlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbiwgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMucm91dGVyID0gaW5qZWN0b3IuZ2V0KFJvdXRlcik7XG4gICAgfSBjYXRjaCB7fVxuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byB0aGUgc3BlY2lmaWVkIHVybC4gVGhlIHJvdXRlciB3aWxsIGJlIHVzZWQgaWYgb25lIGlzIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGl0IGZhbGxzIGJhY2tcbiAgICogdG8gYHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZWAuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgVGhlIHVybCB0byBuYXZpZ2F0ZSB0b1xuICAgKi9cbiAgbmF2aWdhdGVCeVVybCh1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJvdXRlcikge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmwpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUodXJsKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,23 @@
1
+ import { InjectionToken, VERSION } from '@angular/core';
2
+ import { Auth0Client } from '@auth0/auth0-spa-js';
3
+ import useragent from '../useragent';
4
+ export class Auth0ClientFactory {
5
+ static createClient(configFactory) {
6
+ const config = configFactory.get();
7
+ if (!config) {
8
+ throw new Error('Configuration must be specified either through AuthModule.forRoot or through AuthClientConfig.set');
9
+ }
10
+ return new Auth0Client({
11
+ ...config,
12
+ auth0Client: {
13
+ name: useragent.name,
14
+ version: useragent.version,
15
+ env: {
16
+ 'angular/core': VERSION.full,
17
+ },
18
+ },
19
+ });
20
+ }
21
+ }
22
+ export const Auth0ClientService = new InjectionToken('auth0.client');
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hdXRoMC1hbmd1bGFyL3NyYy9saWIvYXV0aC5jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWxELE9BQU8sU0FBUyxNQUFNLGNBQWMsQ0FBQztBQUVyQyxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLE1BQU0sQ0FBQyxZQUFZLENBQUMsYUFBK0I7UUFDakQsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRW5DLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sSUFBSSxLQUFLLENBQ2IsbUdBQW1HLENBQ3BHLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxJQUFJLFdBQVcsQ0FBQztZQUNyQixHQUFHLE1BQU07WUFDVCxXQUFXLEVBQUU7Z0JBQ1gsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJO2dCQUNwQixPQUFPLEVBQUUsU0FBUyxDQUFDLE9BQU87Z0JBQzFCLEdBQUcsRUFBRTtvQkFDSCxjQUFjLEVBQUUsT0FBTyxDQUFDLElBQUk7aUJBQzdCO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGNBQWMsQ0FDbEQsY0FBYyxDQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgVkVSU0lPTiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aDBDbGllbnQgfSBmcm9tICdAYXV0aDAvYXV0aDAtc3BhLWpzJztcbmltcG9ydCB7IEF1dGhDbGllbnRDb25maWcgfSBmcm9tICcuL2F1dGguY29uZmlnJztcbmltcG9ydCB1c2VyYWdlbnQgZnJvbSAnLi4vdXNlcmFnZW50JztcblxuZXhwb3J0IGNsYXNzIEF1dGgwQ2xpZW50RmFjdG9yeSB7XG4gIHN0YXRpYyBjcmVhdGVDbGllbnQoY29uZmlnRmFjdG9yeTogQXV0aENsaWVudENvbmZpZyk6IEF1dGgwQ2xpZW50IHtcbiAgICBjb25zdCBjb25maWcgPSBjb25maWdGYWN0b3J5LmdldCgpO1xuXG4gICAgaWYgKCFjb25maWcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0NvbmZpZ3VyYXRpb24gbXVzdCBiZSBzcGVjaWZpZWQgZWl0aGVyIHRocm91Z2ggQXV0aE1vZHVsZS5mb3JSb290IG9yIHRocm91Z2ggQXV0aENsaWVudENvbmZpZy5zZXQnXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgQXV0aDBDbGllbnQoe1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgYXV0aDBDbGllbnQ6IHtcbiAgICAgICAgbmFtZTogdXNlcmFnZW50Lm5hbWUsXG4gICAgICAgIHZlcnNpb246IHVzZXJhZ2VudC52ZXJzaW9uLFxuICAgICAgICBlbnY6IHtcbiAgICAgICAgICAnYW5ndWxhci9jb3JlJzogVkVSU0lPTi5mdWxsLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgQXV0aDBDbGllbnRTZXJ2aWNlID0gbmV3IEluamVjdGlvblRva2VuPEF1dGgwQ2xpZW50PihcbiAgJ2F1dGgwLmNsaWVudCdcbik7XG4iXX0=
@@ -0,0 +1,97 @@
1
+ import { InjectionToken, Injectable, Optional, Inject } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * A custom type guard to help identify route definitions that are actually HttpInterceptorRouteConfig types.
5
+ *
6
+ * @param def The route definition type
7
+ */
8
+ export function isHttpInterceptorRouteConfig(def) {
9
+ return typeof def !== 'string';
10
+ }
11
+ /**
12
+ * Injection token for accessing configuration.
13
+ *
14
+ * @usageNotes
15
+ *
16
+ * Use the `Inject` decorator to access the configuration from a service or component:
17
+ *
18
+ * ```
19
+ * class MyService(@Inject(AuthConfigService) config: AuthConfig) {}
20
+ * ```
21
+ */
22
+ export const AuthConfigService = new InjectionToken('auth0-angular.config');
23
+ /**
24
+ * Gets and sets configuration for the internal Auth0 client. This can be
25
+ * used to provide configuration outside of using AuthModule.forRoot, i.e. from
26
+ * a factory provided by APP_INITIALIZER.
27
+ *
28
+ * @usage
29
+ *
30
+ * ```js
31
+ * // app.module.ts
32
+ * // ---------------------------
33
+ * import { AuthModule, AuthClientConfig } from '@auth0/auth0-angular';
34
+ *
35
+ * // Provide an initializer function that returns a Promise
36
+ * function configInitializer(
37
+ * http: HttpClient,
38
+ * config: AuthClientConfig
39
+ * ) {
40
+ * return () =>
41
+ * http
42
+ * .get('/config')
43
+ * .toPromise()
44
+ * .then((loadedConfig: any) => config.set(loadedConfig)); // Set the config that was loaded asynchronously here
45
+ * }
46
+ *
47
+ * // Provide APP_INITIALIZER with this function. Note that there is no config passed to AuthModule.forRoot
48
+ * imports: [
49
+ * // other imports..
50
+ *
51
+ * HttpClientModule,
52
+ * AuthModule.forRoot(), //<- don't pass any config here
53
+ * ],
54
+ * providers: [
55
+ * {
56
+ * provide: APP_INITIALIZER,
57
+ * useFactory: configInitializer, // <- pass your initializer function here
58
+ * deps: [HttpClient, AuthClientConfig],
59
+ * multi: true,
60
+ * },
61
+ * ],
62
+ * ```
63
+ *
64
+ */
65
+ export class AuthClientConfig {
66
+ constructor(config) {
67
+ if (config) {
68
+ this.set(config);
69
+ }
70
+ }
71
+ /**
72
+ * Sets configuration to be read by other consumers of the service (see usage notes)
73
+ *
74
+ * @param config The configuration to set
75
+ */
76
+ set(config) {
77
+ this.config = config;
78
+ }
79
+ /**
80
+ * Gets the config that has been set by other consumers of the service
81
+ */
82
+ get() {
83
+ return this.config;
84
+ }
85
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthClientConfig, deps: [{ token: AuthConfigService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
86
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthClientConfig, providedIn: 'root' }); }
87
+ }
88
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthClientConfig, decorators: [{
89
+ type: Injectable,
90
+ args: [{ providedIn: 'root' }]
91
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
92
+ type: Optional
93
+ }, {
94
+ type: Inject,
95
+ args: [AuthConfigService]
96
+ }] }] });
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hdXRoMC1hbmd1bGFyL3NyYy9saWIvYXV0aC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFzQjdFOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsNEJBQTRCLENBQzFDLEdBQXVCO0lBRXZCLE9BQU8sT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDO0FBQ2pDLENBQUM7QUFvSEQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUNqRCxzQkFBc0IsQ0FDdkIsQ0FBQztBQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlDRztBQUVILE1BQU0sT0FBTyxnQkFBZ0I7SUFHM0IsWUFBbUQsTUFBbUI7UUFDcEUsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsR0FBRyxDQUFDLE1BQWtCO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7T0FFRztJQUNILEdBQUc7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFvQixDQUFDO0lBQ25DLENBQUM7K0dBdkJVLGdCQUFnQixrQkFHSyxpQkFBaUI7bUhBSHRDLGdCQUFnQixjQURILE1BQU07OzRGQUNuQixnQkFBZ0I7a0JBRDVCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFJbkIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBdXRoMENsaWVudE9wdGlvbnMsXG4gIENhY2hlTG9jYXRpb24sXG4gIEdldFRva2VuU2lsZW50bHlPcHRpb25zLFxuICBJQ2FjaGUsXG59IGZyb20gJ0BhdXRoMC9hdXRoMC1zcGEtanMnO1xuXG5pbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIERlZmluZXMgYSBjb21tb24gc2V0IG9mIEhUVFAgbWV0aG9kcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gSHR0cE1ldGhvZCB7XG4gIEdldCA9ICdHRVQnLFxuICBQb3N0ID0gJ1BPU1QnLFxuICBQdXQgPSAnUFVUJyxcbiAgUGF0Y2ggPSAnUEFUQ0gnLFxuICBEZWxldGUgPSAnREVMRVRFJyxcbiAgSGVhZCA9ICdIRUFEJyxcbn1cblxuLyoqXG4gKiBEZWZpbmVzIHRoZSB0eXBlIGZvciBhIHJvdXRlIGNvbmZpZyBlbnRyeS4gQ2FuIGVpdGhlciBiZTpcbiAqXG4gKiAtIGFuIG9iamVjdCBvZiB0eXBlIEh0dHBJbnRlcmNlcHRvclJvdXRlQ29uZmlnXG4gKiAtIGEgc3RyaW5nXG4gKi9cbmV4cG9ydCB0eXBlIEFwaVJvdXRlRGVmaW5pdGlvbiA9IEh0dHBJbnRlcmNlcHRvclJvdXRlQ29uZmlnIHwgc3RyaW5nO1xuXG4vKipcbiAqIEEgY3VzdG9tIHR5cGUgZ3VhcmQgdG8gaGVscCBpZGVudGlmeSByb3V0ZSBkZWZpbml0aW9ucyB0aGF0IGFyZSBhY3R1YWxseSBIdHRwSW50ZXJjZXB0b3JSb3V0ZUNvbmZpZyB0eXBlcy5cbiAqXG4gKiBAcGFyYW0gZGVmIFRoZSByb3V0ZSBkZWZpbml0aW9uIHR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSHR0cEludGVyY2VwdG9yUm91dGVDb25maWcoXG4gIGRlZjogQXBpUm91dGVEZWZpbml0aW9uXG4pOiBkZWYgaXMgSHR0cEludGVyY2VwdG9yUm91dGVDb25maWcge1xuICByZXR1cm4gdHlwZW9mIGRlZiAhPT0gJ3N0cmluZyc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIEh0dHBJbnRlcmNlcHRvclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBJbnRlcmNlcHRvckNvbmZpZyB7XG4gIGFsbG93ZWRMaXN0OiBBcGlSb3V0ZURlZmluaXRpb25bXTtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBhIHNpbmdsZSBpbnRlcmNlcHRvciByb3V0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBJbnRlcmNlcHRvclJvdXRlQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBVUkwgdG8gdGVzdCwgYnkgc3VwcGx5aW5nIHRoZSBVUkwgdG8gbWF0Y2guXG4gICAqIElmIGB0ZXN0YCBpcyBhIG1hdGNoIGZvciB0aGUgY3VycmVudCByZXF1ZXN0IHBhdGggZnJvbSB0aGUgSFRUUCBjbGllbnQsIHRoZW5cbiAgICogYW4gYWNjZXNzIHRva2VuIGlzIGF0dGFjaGVkIHRvIHRoZSByZXF1ZXN0IGluIHRoZVxuICAgKiAgW1wiQXV0aG9yaXphdGlvblwiIGhlYWRlcl0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtb2F1dGgtdjItYmVhcmVyLTIwI3NlY3Rpb24tMi4xKS5cbiAgICpcbiAgICogSWYgdGhlIHRlc3QgZG9lcyBub3QgcGFzcywgdGhlIHJlcXVlc3QgcHJvY2VlZHMgd2l0aG91dCB0aGUgYWNjZXNzIHRva2VuIGF0dGFjaGVkLlxuICAgKlxuICAgKiBBIHdpbGRjYXJkIGNoYXJhY3RlciBjYW4gYmUgdXNlZCB0byBtYXRjaCBvbmx5IHRoZSBzdGFydCBvZiB0aGUgVVJMLlxuICAgKlxuICAgKiBAdXNhZ2Vub3Rlc1xuICAgKlxuICAgKiAnL2FwaScgLSBleGFjdGx5IG1hdGNoIHRoZSByb3V0ZSAvYXBpXG4gICAqICcvYXBpLyonIC0gbWF0Y2ggYW55IHJvdXRlIHRoYXQgc3RhcnRzIHdpdGggL2FwaS9cbiAgICovXG4gIHVyaT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIEh0dHBSZXF1ZXN0LnVybCB2YWx1ZSwgYWxsb3dpbmcgeW91IHRvIGRvXG4gICAqIGFueSBraW5kIG9mIGZsZXhpYmxlIG1hdGNoaW5nLlxuICAgKlxuICAgKiBJZiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSwgdGhlblxuICAgKiBhbiBhY2Nlc3MgdG9rZW4gaXMgYXR0YWNoZWQgdG8gdGhlIHJlcXVlc3QgaW4gdGhlXG4gICAqICBbXCJBdXRob3JpemF0aW9uXCIgaGVhZGVyXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1vYXV0aC12Mi1iZWFyZXItMjAjc2VjdGlvbi0yLjEpLlxuICAgKlxuICAgKiBJZiBpdCByZXR1cm5zIGZhbHNlLCB0aGUgcmVxdWVzdCBwcm9jZWVkcyB3aXRob3V0IHRoZSBhY2Nlc3MgdG9rZW4gYXR0YWNoZWQuXG4gICAqL1xuICB1cmlNYXRjaGVyPzogKHVyaTogc3RyaW5nKSA9PiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgb3B0aW9ucyB0aGF0IGFyZSBwYXNzZWQgdG8gdGhlIFNESyB3aGVuIHJldHJpZXZpbmcgdGhlXG4gICAqIGFjY2VzcyB0b2tlbiB0byBhdHRhY2ggdG8gdGhlIG91dGdvaW5nIHJlcXVlc3QuXG4gICAqL1xuICB0b2tlbk9wdGlvbnM/OiBHZXRUb2tlblNpbGVudGx5T3B0aW9ucztcblxuICAvKipcbiAgICogVGhlIEhUVFAgbWV0aG9kIHRvIG1hdGNoIG9uLiBJZiBzcGVjaWZpZWQsIHRoZSBIVFRQIG1ldGhvZCBvZlxuICAgKiB0aGUgb3V0Z29pbmcgcmVxdWVzdCB3aWxsIGJlIGNoZWNrZWQgYWdhaW5zdCB0aGlzLiBJZiB0aGVyZSBpcyBubyBtYXRjaCwgdGhlXG4gICAqIEF1dGhvcml6YXRpb24gaGVhZGVyIGlzIG5vdCBhdHRhY2hlZC5cbiAgICpcbiAgICogVGhlIEhUVFAgbWV0aG9kIG5hbWUgaXMgY2FzZS1zZW5zaXRpdmUuXG4gICAqL1xuICBodHRwTWV0aG9kPzogSHR0cE1ldGhvZCB8IHN0cmluZztcblxuICAvKipcbiAgICogQWxsb3cgdGhlIEhUVFAgY2FsbCB0byBiZSBleGVjdXRlZCBhbm9ueW1vdXNseSwgd2hlbiBubyB0b2tlbiBpcyBhdmFpbGFibGUuXG4gICAqXG4gICAqIFdoZW4gb21pdHRlZCAob3Igc2V0IHRvIGZhbHNlKSwgY2FsbHMgdGhhdCBtYXRjaCB0aGUgY29uZmlndXJhdGlvbiB3aWxsIGZhaWwgd2hlbiBubyB0b2tlbiBpcyBhdmFpbGFibGUuXG4gICAqL1xuICBhbGxvd0Fub255bW91cz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIGF1dGhlbnRpY2F0aW9uIHNlcnZpY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRoQ29uZmlnIGV4dGVuZHMgQXV0aDBDbGllbnRPcHRpb25zIHtcbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQsIGlmIHRoZSBwYWdlIFVSTCBoYXMgY29kZSBhbmQgc3RhdGUgcGFyYW1ldGVycywgdGhlIFNESyB3aWxsIGFzc3VtZSB0aGV5IGFyZSBmb3JcbiAgICogYW4gQXV0aDAgYXBwbGljYXRpb24gYW5kIGF0dGVtcHQgdG8gZXhjaGFuZ2UgdGhlIGNvZGUgZm9yIGEgdG9rZW4uXG4gICAqIEluIHNvbWUgY2FzZXMgdGhlIGNvZGUgbWlnaHQgYmUgZm9yIHNvbWV0aGluZyBlbHNlIChlLmcuIGFub3RoZXIgT0F1dGggU0RLKS4gSW4gdGhlc2VcbiAgICogaW5zdGFuY2VzIHlvdSBjYW4gaW5zdHJ1Y3QgdGhlIGNsaWVudCB0byBpZ25vcmUgdGhlbSBieSBzZXR0aW5nIGBza2lwUmVkaXJlY3RDYWxsYmFja2AuXG4gICAqXG4gICAqIGBgYGpzXG4gICAqIEF1dGhNb2R1bGUuZm9yUm9vdCh7XG4gICAqICAgc2tpcFJlZGlyZWN0Q2FsbGJhY2s6IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSA9PT0gJy9vdGhlci1jYWxsYmFjaydcbiAgICogfSlcbiAgICogYGBgXG4gICAqXG4gICAqICoqTm90ZSoqOiBJbiB0aGUgYWJvdmUgZXhhbXBsZSwgYC9vdGhlci1jYWxsYmFja2AgaXMgYW4gZXhpc3Rpbmcgcm91dGUgdGhhdCB3aWxsIGJlIGNhbGxlZFxuICAgKiBieSBhbnkgb3RoZXIgT0F1dGggcHJvdmlkZXIgd2l0aCBhIGBjb2RlYCAob3IgYGVycm9yYCBpbiBjYXNlIHdoZW4gc29tZXRoaW5nIHdlbnQgd3JvbmcpIGFuZCBgc3RhdGVgLlxuICAgKlxuICAgKi9cbiAgc2tpcFJlZGlyZWN0Q2FsbGJhY2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGZvciB0aGUgYnVpbHQtaW4gSHR0cCBJbnRlcmNlcHRvciwgdXNlZCBmb3JcbiAgICogYXV0b21hdGljYWxseSBhdHRhY2hpbmcgYWNjZXNzIHRva2Vucy5cbiAgICovXG4gIGh0dHBJbnRlcmNlcHRvcj86IEh0dHBJbnRlcmNlcHRvckNvbmZpZztcblxuICAvKipcbiAgICogUGF0aCBpbiB5b3VyIGFwcGxpY2F0aW9uIHRvIHJlZGlyZWN0IHRvIHdoZW4gdGhlIEF1dGhvcml6YXRpb24gc2VydmVyXG4gICAqIHJldHVybnMgYW4gZXJyb3IuIERlZmF1bHRzIHRvIGAvYFxuICAgKi9cbiAgZXJyb3JQYXRoPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFuZ3VsYXIgc3BlY2lmaWMgc3RhdGUgdG8gYmUgc3RvcmVkIGJlZm9yZSByZWRpcmVjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcFN0YXRlIHtcbiAgLyoqXG4gICAqIFRhcmdldCBwYXRoIHRoZSBhcHAgZ2V0cyByb3V0ZWQgdG8gYWZ0ZXJcbiAgICogaGFuZGxpbmcgdGhlIGNhbGxiYWNrIGZyb20gQXV0aDAgKGRlZmF1bHRzIHRvICcvJylcbiAgICovXG4gIHRhcmdldD86IHN0cmluZztcblxuICAvKipcbiAgICogQW55IGN1c3RvbSBwYXJhbWV0ZXIgdG8gYmUgc3RvcmVkIGluIGFwcFN0YXRlXG4gICAqL1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIGZvciBhY2Nlc3NpbmcgY29uZmlndXJhdGlvbi5cbiAqXG4gKiBAdXNhZ2VOb3Rlc1xuICpcbiAqIFVzZSB0aGUgYEluamVjdGAgZGVjb3JhdG9yIHRvIGFjY2VzcyB0aGUgY29uZmlndXJhdGlvbiBmcm9tIGEgc2VydmljZSBvciBjb21wb25lbnQ6XG4gKlxuICogYGBgXG4gKiBjbGFzcyBNeVNlcnZpY2UoQEluamVjdChBdXRoQ29uZmlnU2VydmljZSkgY29uZmlnOiBBdXRoQ29uZmlnKSB7fVxuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBBdXRoQ29uZmlnU2VydmljZSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBdXRoQ29uZmlnPihcbiAgJ2F1dGgwLWFuZ3VsYXIuY29uZmlnJ1xuKTtcblxuLyoqXG4gKiBHZXRzIGFuZCBzZXRzIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBpbnRlcm5hbCBBdXRoMCBjbGllbnQuIFRoaXMgY2FuIGJlXG4gKiB1c2VkIHRvIHByb3ZpZGUgY29uZmlndXJhdGlvbiBvdXRzaWRlIG9mIHVzaW5nIEF1dGhNb2R1bGUuZm9yUm9vdCwgaS5lLiBmcm9tXG4gKiBhIGZhY3RvcnkgcHJvdmlkZWQgYnkgQVBQX0lOSVRJQUxJWkVSLlxuICpcbiAqIEB1c2FnZVxuICpcbiAqIGBgYGpzXG4gKiAvLyBhcHAubW9kdWxlLnRzXG4gKiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIGltcG9ydCB7IEF1dGhNb2R1bGUsIEF1dGhDbGllbnRDb25maWcgfSBmcm9tICdAYXV0aDAvYXV0aDAtYW5ndWxhcic7XG4gKlxuICogLy8gUHJvdmlkZSBhbiBpbml0aWFsaXplciBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBQcm9taXNlXG4gKiBmdW5jdGlvbiBjb25maWdJbml0aWFsaXplcihcbiAqICAgaHR0cDogSHR0cENsaWVudCxcbiAqICAgY29uZmlnOiBBdXRoQ2xpZW50Q29uZmlnXG4gKiApIHtcbiAqICAgcmV0dXJuICgpID0+XG4gKiAgICAgaHR0cFxuICogICAgICAgLmdldCgnL2NvbmZpZycpXG4gKiAgICAgICAudG9Qcm9taXNlKClcbiAqICAgICAgIC50aGVuKChsb2FkZWRDb25maWc6IGFueSkgPT4gY29uZmlnLnNldChsb2FkZWRDb25maWcpKTsgICAvLyBTZXQgdGhlIGNvbmZpZyB0aGF0IHdhcyBsb2FkZWQgYXN5bmNocm9ub3VzbHkgaGVyZVxuICogfVxuICpcbiAqIC8vIFByb3ZpZGUgQVBQX0lOSVRJQUxJWkVSIHdpdGggdGhpcyBmdW5jdGlvbi4gTm90ZSB0aGF0IHRoZXJlIGlzIG5vIGNvbmZpZyBwYXNzZWQgdG8gQXV0aE1vZHVsZS5mb3JSb290XG4gKiBpbXBvcnRzOiBbXG4gKiAgIC8vIG90aGVyIGltcG9ydHMuLlxuICpcbiAqICAgSHR0cENsaWVudE1vZHVsZSxcbiAqICAgQXV0aE1vZHVsZS5mb3JSb290KCksICAgLy88LSBkb24ndCBwYXNzIGFueSBjb25maWcgaGVyZVxuICogXSxcbiAqIHByb3ZpZGVyczogW1xuICogICB7XG4gKiAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICogICAgIHVzZUZhY3Rvcnk6IGNvbmZpZ0luaXRpYWxpemVyLCAgICAvLyA8LSBwYXNzIHlvdXIgaW5pdGlhbGl6ZXIgZnVuY3Rpb24gaGVyZVxuICogICAgIGRlcHM6IFtIdHRwQ2xpZW50LCBBdXRoQ2xpZW50Q29uZmlnXSxcbiAqICAgICBtdWx0aTogdHJ1ZSxcbiAqICAgfSxcbiAqIF0sXG4gKiBgYGBcbiAqXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQXV0aENsaWVudENvbmZpZyB7XG4gIHByaXZhdGUgY29uZmlnPzogQXV0aENvbmZpZztcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KEF1dGhDb25maWdTZXJ2aWNlKSBjb25maWc/OiBBdXRoQ29uZmlnKSB7XG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgdGhpcy5zZXQoY29uZmlnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBjb25maWd1cmF0aW9uIHRvIGJlIHJlYWQgYnkgb3RoZXIgY29uc3VtZXJzIG9mIHRoZSBzZXJ2aWNlIChzZWUgdXNhZ2Ugbm90ZXMpXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWcgVGhlIGNvbmZpZ3VyYXRpb24gdG8gc2V0XG4gICAqL1xuICBzZXQoY29uZmlnOiBBdXRoQ29uZmlnKTogdm9pZCB7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY29uZmlnIHRoYXQgaGFzIGJlZW4gc2V0IGJ5IG90aGVyIGNvbnN1bWVycyBvZiB0aGUgc2VydmljZVxuICAgKi9cbiAgZ2V0KCk6IEF1dGhDb25maWcge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZyBhcyBBdXRoQ29uZmlnO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,40 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { of } from 'rxjs';
3
+ import { take, switchMap, map } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./auth.service";
6
+ export class AuthGuard {
7
+ constructor(auth) {
8
+ this.auth = auth;
9
+ }
10
+ canLoad(route, segments) {
11
+ return this.auth.isAuthenticated$.pipe(take(1));
12
+ }
13
+ canActivate(next, state) {
14
+ return this.redirectIfUnauthenticated(state);
15
+ }
16
+ canActivateChild(childRoute, state) {
17
+ return this.redirectIfUnauthenticated(state);
18
+ }
19
+ redirectIfUnauthenticated(state) {
20
+ return this.auth.isAuthenticated$.pipe(switchMap((loggedIn) => {
21
+ if (!loggedIn) {
22
+ return this.auth
23
+ .loginWithRedirect({
24
+ appState: { target: state.url },
25
+ })
26
+ .pipe(map(() => false));
27
+ }
28
+ return of(true);
29
+ }));
30
+ }
31
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthGuard, deps: [{ token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Injectable }); }
32
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthGuard, providedIn: 'root' }); }
33
+ }
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthGuard, decorators: [{
35
+ type: Injectable,
36
+ args: [{
37
+ providedIn: 'root',
38
+ }]
39
+ }], ctorParameters: () => [{ type: i1.AuthService }] });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2F1dGgwLWFuZ3VsYXIvc3JjL2xpYi9hdXRoLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPM0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBTXRELE1BQU0sT0FBTyxTQUFTO0lBQ3BCLFlBQW9CLElBQWlCO1FBQWpCLFNBQUksR0FBSixJQUFJLENBQWE7SUFBRyxDQUFDO0lBRXpDLE9BQU8sQ0FBQyxLQUFZLEVBQUUsUUFBc0I7UUFDMUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsV0FBVyxDQUNULElBQTRCLEVBQzVCLEtBQTBCO1FBRTFCLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxnQkFBZ0IsQ0FDZCxVQUFrQyxFQUNsQyxLQUEwQjtRQUUxQixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU8seUJBQXlCLENBQy9CLEtBQTBCO1FBRTFCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQ3BDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDZCxPQUFPLElBQUksQ0FBQyxJQUFJO3FCQUNiLGlCQUFpQixDQUFDO29CQUNqQixRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRTtpQkFDaEMsQ0FBQztxQkFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDNUIsQ0FBQztZQUNELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOytHQXBDVSxTQUFTO21IQUFULFNBQVMsY0FGUixNQUFNOzs0RkFFUCxTQUFTO2tCQUhyQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gIFJvdXRlclN0YXRlU25hcHNob3QsXG4gIFJvdXRlLFxuICBVcmxTZWdtZW50LFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UsIHN3aXRjaE1hcCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRoR3VhcmQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF1dGg6IEF1dGhTZXJ2aWNlKSB7fVxuXG4gIGNhbkxvYWQocm91dGU6IFJvdXRlLCBzZWdtZW50czogVXJsU2VnbWVudFtdKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aC5pc0F1dGhlbnRpY2F0ZWQkLnBpcGUodGFrZSgxKSk7XG4gIH1cblxuICBjYW5BY3RpdmF0ZShcbiAgICBuZXh0OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XG4gICk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnJlZGlyZWN0SWZVbmF1dGhlbnRpY2F0ZWQoc3RhdGUpO1xuICB9XG5cbiAgY2FuQWN0aXZhdGVDaGlsZChcbiAgICBjaGlsZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XG4gICk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnJlZGlyZWN0SWZVbmF1dGhlbnRpY2F0ZWQoc3RhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWRpcmVjdElmVW5hdXRoZW50aWNhdGVkKFxuICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XG4gICk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmF1dGguaXNBdXRoZW50aWNhdGVkJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKChsb2dnZWRJbikgPT4ge1xuICAgICAgICBpZiAoIWxvZ2dlZEluKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuYXV0aFxuICAgICAgICAgICAgLmxvZ2luV2l0aFJlZGlyZWN0KHtcbiAgICAgICAgICAgICAgYXBwU3RhdGU6IHsgdGFyZ2V0OiBzdGF0ZS51cmwgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAucGlwZShtYXAoKCkgPT4gZmFsc2UpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,134 @@
1
+ import { from, of, iif, throwError } from 'rxjs';
2
+ import { Inject, Injectable } from '@angular/core';
3
+ import { isHttpInterceptorRouteConfig, } from './auth.config';
4
+ import { switchMap, first, concatMap, catchError, tap, filter, mergeMap, mapTo, pluck, } from 'rxjs/operators';
5
+ import { Auth0ClientService } from './auth.client';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "./auth.config";
8
+ import * as i2 from "./auth.state";
9
+ import * as i3 from "./auth.service";
10
+ import * as i4 from "@auth0/auth0-spa-js";
11
+ const waitUntil = (signal$) => (source$) => source$.pipe(mergeMap((value) => signal$.pipe(first(), mapTo(value))));
12
+ export class AuthHttpInterceptor {
13
+ constructor(configFactory, auth0Client, authState, authService) {
14
+ this.configFactory = configFactory;
15
+ this.auth0Client = auth0Client;
16
+ this.authState = authState;
17
+ this.authService = authService;
18
+ }
19
+ intercept(req, next) {
20
+ const config = this.configFactory.get();
21
+ if (!config.httpInterceptor?.allowedList) {
22
+ return next.handle(req);
23
+ }
24
+ const isLoaded$ = this.authService.isLoading$.pipe(filter((isLoading) => !isLoading));
25
+ return this.findMatchingRoute(req, config.httpInterceptor).pipe(concatMap((route) => iif(
26
+ // Check if a route was matched
27
+ () => route !== null,
28
+ // If we have a matching route, call getTokenSilently and attach the token to the
29
+ // outgoing request
30
+ of(route).pipe(waitUntil(isLoaded$), pluck('tokenOptions'), concatMap((options) => this.getAccessTokenSilently(options).pipe(catchError((err) => {
31
+ if (this.allowAnonymous(route, err)) {
32
+ return of('');
33
+ }
34
+ this.authState.setError(err);
35
+ return throwError(err);
36
+ }))), switchMap((token) => {
37
+ // Clone the request and attach the bearer token
38
+ const clone = token
39
+ ? req.clone({
40
+ headers: req.headers.set('Authorization', `Bearer ${token}`),
41
+ })
42
+ : req;
43
+ return next.handle(clone);
44
+ })),
45
+ // If the URI being called was not found in our httpInterceptor config, simply
46
+ // pass the request through without attaching a token
47
+ next.handle(req))));
48
+ }
49
+ /**
50
+ * Duplicate of AuthService.getAccessTokenSilently, but with a slightly different error handling.
51
+ * Only used internally in the interceptor.
52
+ *
53
+ * @param options The options for configuring the token fetch.
54
+ */
55
+ getAccessTokenSilently(options) {
56
+ return of(this.auth0Client).pipe(concatMap((client) => client.getTokenSilently(options)), tap((token) => this.authState.setAccessToken(token)), catchError((error) => {
57
+ this.authState.refresh();
58
+ return throwError(error);
59
+ }));
60
+ }
61
+ /**
62
+ * Strips the query and fragment from the given uri
63
+ *
64
+ * @param uri The uri to remove the query and fragment from
65
+ */
66
+ stripQueryFrom(uri) {
67
+ if (uri.indexOf('?') > -1) {
68
+ uri = uri.substr(0, uri.indexOf('?'));
69
+ }
70
+ if (uri.indexOf('#') > -1) {
71
+ uri = uri.substr(0, uri.indexOf('#'));
72
+ }
73
+ return uri;
74
+ }
75
+ /**
76
+ * Determines whether the specified route can have an access token attached to it, based on matching the HTTP request against
77
+ * the interceptor route configuration.
78
+ *
79
+ * @param route The route to test
80
+ * @param request The HTTP request
81
+ */
82
+ canAttachToken(route, request) {
83
+ const testPrimitive = (value) => {
84
+ if (!value) {
85
+ return false;
86
+ }
87
+ const requestPath = this.stripQueryFrom(request.url);
88
+ if (value === requestPath) {
89
+ return true;
90
+ }
91
+ // If the URL ends with an asterisk, match using startsWith.
92
+ return (value.indexOf('*') === value.length - 1 &&
93
+ request.url.startsWith(value.substr(0, value.length - 1)));
94
+ };
95
+ if (isHttpInterceptorRouteConfig(route)) {
96
+ if (route.httpMethod && route.httpMethod !== request.method) {
97
+ return false;
98
+ }
99
+ /* istanbul ignore if */
100
+ if (!route.uri && !route.uriMatcher) {
101
+ console.warn('Either a uri or uriMatcher is required when configuring the HTTP interceptor.');
102
+ }
103
+ return route.uriMatcher
104
+ ? route.uriMatcher(request.url)
105
+ : testPrimitive(route.uri);
106
+ }
107
+ return testPrimitive(route);
108
+ }
109
+ /**
110
+ * Tries to match a route from the SDK configuration to the HTTP request.
111
+ * If a match is found, the route configuration is returned.
112
+ *
113
+ * @param request The Http request
114
+ * @param config HttpInterceptorConfig
115
+ */
116
+ findMatchingRoute(request, config) {
117
+ return from(config.allowedList).pipe(first((route) => this.canAttachToken(route, request), null));
118
+ }
119
+ allowAnonymous(route, err) {
120
+ return (!!route &&
121
+ isHttpInterceptorRouteConfig(route) &&
122
+ !!route.allowAnonymous &&
123
+ ['login_required', 'consent_required', 'missing_refresh_token'].includes(err.error));
124
+ }
125
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthHttpInterceptor, deps: [{ token: i1.AuthClientConfig }, { token: Auth0ClientService }, { token: i2.AuthState }, { token: i3.AuthService }], target: i0.ɵɵFactoryTarget.Injectable }); }
126
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthHttpInterceptor }); }
127
+ }
128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthHttpInterceptor, decorators: [{
129
+ type: Injectable
130
+ }], ctorParameters: () => [{ type: i1.AuthClientConfig }, { type: i4.Auth0Client, decorators: [{
131
+ type: Inject,
132
+ args: [Auth0ClientService]
133
+ }] }, { type: i2.AuthState }, { type: i3.AuthService }] });
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2F1dGgwLWFuZ3VsYXIvc3JjL2xpYi9hdXRoLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBYyxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUVMLDRCQUE0QixHQUc3QixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEdBQUcsRUFDSCxNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxLQUFLLEdBQ04sTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQUluRCxNQUFNLFNBQVMsR0FDYixDQUFVLE9BQTRCLEVBQUUsRUFBRSxDQUMxQyxDQUFVLE9BQTRCLEVBQUUsRUFBRSxDQUN4QyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFHM0UsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixZQUNVLGFBQStCLEVBQ0gsV0FBd0IsRUFDcEQsU0FBb0IsRUFDcEIsV0FBd0I7UUFIeEIsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQ0gsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDcEQsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUMvQixDQUFDO0lBRUosU0FBUyxDQUNQLEdBQXFCLEVBQ3JCLElBQWlCO1FBRWpCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsV0FBVyxFQUFFLENBQUM7WUFDekMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ2hELE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FDbEMsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUM3RCxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNsQixHQUFHO1FBQ0QsK0JBQStCO1FBQy9CLEdBQUcsRUFBRSxDQUFDLEtBQUssS0FBSyxJQUFJO1FBQ3BCLGlGQUFpRjtRQUNqRixtQkFBbUI7UUFDbkIsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDWixTQUFTLENBQUMsU0FBUyxDQUFDLEVBQ3BCLEtBQUssQ0FBQyxjQUFjLENBQUMsRUFDckIsU0FBUyxDQUE4QyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ2pFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ3ZDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2pCLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDaEIsQ0FBQztZQUVELElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzdCLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUNILENBQ0YsRUFDRCxTQUFTLENBQUMsQ0FBQyxLQUFhLEVBQUUsRUFBRTtZQUMxQixnREFBZ0Q7WUFDaEQsTUFBTSxLQUFLLEdBQUcsS0FBSztnQkFDakIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7b0JBQ1IsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUN0QixlQUFlLEVBQ2YsVUFBVSxLQUFLLEVBQUUsQ0FDbEI7aUJBQ0YsQ0FBQztnQkFDSixDQUFDLENBQUMsR0FBRyxDQUFDO1lBRVIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUNIO1FBQ0QsOEVBQThFO1FBQzlFLHFEQUFxRDtRQUNyRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUNqQixDQUNGLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLHNCQUFzQixDQUM1QixPQUFpQztRQUVqQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUM5QixTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUN2RCxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQ3BELFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDekIsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssY0FBYyxDQUFDLEdBQVc7UUFDaEMsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDMUIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBRUQsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDMUIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssY0FBYyxDQUNwQixLQUF5QixFQUN6QixPQUF5QjtRQUV6QixNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQXlCLEVBQVcsRUFBRTtZQUMzRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ1gsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFckQsSUFBSSxLQUFLLEtBQUssV0FBVyxFQUFFLENBQUM7Z0JBQzFCLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUVELDREQUE0RDtZQUM1RCxPQUFPLENBQ0wsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7Z0JBQ3ZDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FDMUQsQ0FBQztRQUNKLENBQUMsQ0FBQztRQUVGLElBQUksNEJBQTRCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN4QyxJQUFJLEtBQUssQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLFVBQVUsS0FBSyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzVELE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUVELHdCQUF3QjtZQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDcEMsT0FBTyxDQUFDLElBQUksQ0FDViwrRUFBK0UsQ0FDaEYsQ0FBQztZQUNKLENBQUM7WUFFRCxPQUFPLEtBQUssQ0FBQyxVQUFVO2dCQUNyQixDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO2dCQUMvQixDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBRUQsT0FBTyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLGlCQUFpQixDQUN2QixPQUF5QixFQUN6QixNQUE2QjtRQUU3QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUNsQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUM1RCxDQUFDO0lBQ0osQ0FBQztJQUVPLGNBQWMsQ0FBQyxLQUFnQyxFQUFFLEdBQVE7UUFDL0QsT0FBTyxDQUNMLENBQUMsQ0FBQyxLQUFLO1lBQ1AsNEJBQTRCLENBQUMsS0FBSyxDQUFDO1lBQ25DLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYztZQUN0QixDQUFDLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLHVCQUF1QixDQUFDLENBQUMsUUFBUSxDQUN0RSxHQUFHLENBQUMsS0FBSyxDQUNWLENBQ0YsQ0FBQztJQUNKLENBQUM7K0dBL0tVLG1CQUFtQixrREFHcEIsa0JBQWtCO21IQUhqQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVU7OzBCQUlOLE1BQU07MkJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSHR0cEludGVyY2VwdG9yLFxuICBIdHRwUmVxdWVzdCxcbiAgSHR0cEhhbmRsZXIsXG4gIEh0dHBFdmVudCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmcm9tLCBvZiwgaWlmLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgQXBpUm91dGVEZWZpbml0aW9uLFxuICBpc0h0dHBJbnRlcmNlcHRvclJvdXRlQ29uZmlnLFxuICBBdXRoQ2xpZW50Q29uZmlnLFxuICBIdHRwSW50ZXJjZXB0b3JDb25maWcsXG59IGZyb20gJy4vYXV0aC5jb25maWcnO1xuXG5pbXBvcnQge1xuICBzd2l0Y2hNYXAsXG4gIGZpcnN0LFxuICBjb25jYXRNYXAsXG4gIGNhdGNoRXJyb3IsXG4gIHRhcCxcbiAgZmlsdGVyLFxuICBtZXJnZU1hcCxcbiAgbWFwVG8sXG4gIHBsdWNrLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBdXRoMENsaWVudCwgR2V0VG9rZW5TaWxlbnRseU9wdGlvbnMgfSBmcm9tICdAYXV0aDAvYXV0aDAtc3BhLWpzJztcbmltcG9ydCB7IEF1dGgwQ2xpZW50U2VydmljZSB9IGZyb20gJy4vYXV0aC5jbGllbnQnO1xuaW1wb3J0IHsgQXV0aFN0YXRlIH0gZnJvbSAnLi9hdXRoLnN0YXRlJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuXG5jb25zdCB3YWl0VW50aWwgPVxuICA8VFNpZ25hbD4oc2lnbmFsJDogT2JzZXJ2YWJsZTxUU2lnbmFsPikgPT5cbiAgPFRTb3VyY2U+KHNvdXJjZSQ6IE9ic2VydmFibGU8VFNvdXJjZT4pID0+XG4gICAgc291cmNlJC5waXBlKG1lcmdlTWFwKCh2YWx1ZSkgPT4gc2lnbmFsJC5waXBlKGZpcnN0KCksIG1hcFRvKHZhbHVlKSkpKTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF1dGhIdHRwSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbmZpZ0ZhY3Rvcnk6IEF1dGhDbGllbnRDb25maWcsXG4gICAgQEluamVjdChBdXRoMENsaWVudFNlcnZpY2UpIHByaXZhdGUgYXV0aDBDbGllbnQ6IEF1dGgwQ2xpZW50LFxuICAgIHByaXZhdGUgYXV0aFN0YXRlOiBBdXRoU3RhdGUsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2VcbiAgKSB7fVxuXG4gIGludGVyY2VwdChcbiAgICByZXE6IEh0dHBSZXF1ZXN0PGFueT4sXG4gICAgbmV4dDogSHR0cEhhbmRsZXJcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnRmFjdG9yeS5nZXQoKTtcbiAgICBpZiAoIWNvbmZpZy5odHRwSW50ZXJjZXB0b3I/LmFsbG93ZWRMaXN0KSB7XG4gICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcbiAgICB9XG5cbiAgICBjb25zdCBpc0xvYWRlZCQgPSB0aGlzLmF1dGhTZXJ2aWNlLmlzTG9hZGluZyQucGlwZShcbiAgICAgIGZpbHRlcigoaXNMb2FkaW5nKSA9PiAhaXNMb2FkaW5nKVxuICAgICk7XG5cbiAgICByZXR1cm4gdGhpcy5maW5kTWF0Y2hpbmdSb3V0ZShyZXEsIGNvbmZpZy5odHRwSW50ZXJjZXB0b3IpLnBpcGUoXG4gICAgICBjb25jYXRNYXAoKHJvdXRlKSA9PlxuICAgICAgICBpaWYoXG4gICAgICAgICAgLy8gQ2hlY2sgaWYgYSByb3V0ZSB3YXMgbWF0Y2hlZFxuICAgICAgICAgICgpID0+IHJvdXRlICE9PSBudWxsLFxuICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBtYXRjaGluZyByb3V0ZSwgY2FsbCBnZXRUb2tlblNpbGVudGx5IGFuZCBhdHRhY2ggdGhlIHRva2VuIHRvIHRoZVxuICAgICAgICAgIC8vIG91dGdvaW5nIHJlcXVlc3RcbiAgICAgICAgICBvZihyb3V0ZSkucGlwZShcbiAgICAgICAgICAgIHdhaXRVbnRpbChpc0xvYWRlZCQpLFxuICAgICAgICAgICAgcGx1Y2soJ3Rva2VuT3B0aW9ucycpLFxuICAgICAgICAgICAgY29uY2F0TWFwPEdldFRva2VuU2lsZW50bHlPcHRpb25zLCBPYnNlcnZhYmxlPHN0cmluZz4+KChvcHRpb25zKSA9PlxuICAgICAgICAgICAgICB0aGlzLmdldEFjY2Vzc1Rva2VuU2lsZW50bHkob3B0aW9ucykucGlwZShcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmFsbG93QW5vbnltb3VzKHJvdXRlLCBlcnIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZignJyk7XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMuYXV0aFN0YXRlLnNldEVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHRva2VuOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgLy8gQ2xvbmUgdGhlIHJlcXVlc3QgYW5kIGF0dGFjaCB0aGUgYmVhcmVyIHRva2VuXG4gICAgICAgICAgICAgIGNvbnN0IGNsb25lID0gdG9rZW5cbiAgICAgICAgICAgICAgICA/IHJlcS5jbG9uZSh7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHJlcS5oZWFkZXJzLnNldChcbiAgICAgICAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgYEJlYXJlciAke3Rva2VufWBcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgOiByZXE7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKGNsb25lKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKSxcbiAgICAgICAgICAvLyBJZiB0aGUgVVJJIGJlaW5nIGNhbGxlZCB3YXMgbm90IGZvdW5kIGluIG91ciBodHRwSW50ZXJjZXB0b3IgY29uZmlnLCBzaW1wbHlcbiAgICAgICAgICAvLyBwYXNzIHRoZSByZXF1ZXN0IHRocm91Z2ggd2l0aG91dCBhdHRhY2hpbmcgYSB0b2tlblxuICAgICAgICAgIG5leHQuaGFuZGxlKHJlcSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRHVwbGljYXRlIG9mIEF1dGhTZXJ2aWNlLmdldEFjY2Vzc1Rva2VuU2lsZW50bHksIGJ1dCB3aXRoIGEgc2xpZ2h0bHkgZGlmZmVyZW50IGVycm9yIGhhbmRsaW5nLlxuICAgKiBPbmx5IHVzZWQgaW50ZXJuYWxseSBpbiB0aGUgaW50ZXJjZXB0b3IuXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciBjb25maWd1cmluZyB0aGUgdG9rZW4gZmV0Y2guXG4gICAqL1xuICBwcml2YXRlIGdldEFjY2Vzc1Rva2VuU2lsZW50bHkoXG4gICAgb3B0aW9ucz86IEdldFRva2VuU2lsZW50bHlPcHRpb25zXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG9mKHRoaXMuYXV0aDBDbGllbnQpLnBpcGUoXG4gICAgICBjb25jYXRNYXAoKGNsaWVudCkgPT4gY2xpZW50LmdldFRva2VuU2lsZW50bHkob3B0aW9ucykpLFxuICAgICAgdGFwKCh0b2tlbikgPT4gdGhpcy5hdXRoU3RhdGUuc2V0QWNjZXNzVG9rZW4odG9rZW4pKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMuYXV0aFN0YXRlLnJlZnJlc2goKTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0cmlwcyB0aGUgcXVlcnkgYW5kIGZyYWdtZW50IGZyb20gdGhlIGdpdmVuIHVyaVxuICAgKlxuICAgKiBAcGFyYW0gdXJpIFRoZSB1cmkgdG8gcmVtb3ZlIHRoZSBxdWVyeSBhbmQgZnJhZ21lbnQgZnJvbVxuICAgKi9cbiAgcHJpdmF0ZSBzdHJpcFF1ZXJ5RnJvbSh1cmk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHVyaS5pbmRleE9mKCc/JykgPiAtMSkge1xuICAgICAgdXJpID0gdXJpLnN1YnN0cigwLCB1cmkuaW5kZXhPZignPycpKTtcbiAgICB9XG5cbiAgICBpZiAodXJpLmluZGV4T2YoJyMnKSA+IC0xKSB7XG4gICAgICB1cmkgPSB1cmkuc3Vic3RyKDAsIHVyaS5pbmRleE9mKCcjJykpO1xuICAgIH1cblxuICAgIHJldHVybiB1cmk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgcm91dGUgY2FuIGhhdmUgYW4gYWNjZXNzIHRva2VuIGF0dGFjaGVkIHRvIGl0LCBiYXNlZCBvbiBtYXRjaGluZyB0aGUgSFRUUCByZXF1ZXN0IGFnYWluc3RcbiAgICogdGhlIGludGVyY2VwdG9yIHJvdXRlIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSByb3V0ZSBUaGUgcm91dGUgdG8gdGVzdFxuICAgKiBAcGFyYW0gcmVxdWVzdCBUaGUgSFRUUCByZXF1ZXN0XG4gICAqL1xuICBwcml2YXRlIGNhbkF0dGFjaFRva2VuKFxuICAgIHJvdXRlOiBBcGlSb3V0ZURlZmluaXRpb24sXG4gICAgcmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PlxuICApOiBib29sZWFuIHtcbiAgICBjb25zdCB0ZXN0UHJpbWl0aXZlID0gKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBib29sZWFuID0+IHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXF1ZXN0UGF0aCA9IHRoaXMuc3RyaXBRdWVyeUZyb20ocmVxdWVzdC51cmwpO1xuXG4gICAgICBpZiAodmFsdWUgPT09IHJlcXVlc3RQYXRoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGUgVVJMIGVuZHMgd2l0aCBhbiBhc3RlcmlzaywgbWF0Y2ggdXNpbmcgc3RhcnRzV2l0aC5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIHZhbHVlLmluZGV4T2YoJyonKSA9PT0gdmFsdWUubGVuZ3RoIC0gMSAmJlxuICAgICAgICByZXF1ZXN0LnVybC5zdGFydHNXaXRoKHZhbHVlLnN1YnN0cigwLCB2YWx1ZS5sZW5ndGggLSAxKSlcbiAgICAgICk7XG4gICAgfTtcblxuICAgIGlmIChpc0h0dHBJbnRlcmNlcHRvclJvdXRlQ29uZmlnKHJvdXRlKSkge1xuICAgICAgaWYgKHJvdXRlLmh0dHBNZXRob2QgJiYgcm91dGUuaHR0cE1ldGhvZCAhPT0gcmVxdWVzdC5tZXRob2QpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmICghcm91dGUudXJpICYmICFyb3V0ZS51cmlNYXRjaGVyKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnRWl0aGVyIGEgdXJpIG9yIHVyaU1hdGNoZXIgaXMgcmVxdWlyZWQgd2hlbiBjb25maWd1cmluZyB0aGUgSFRUUCBpbnRlcmNlcHRvci4nXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByb3V0ZS51cmlNYXRjaGVyXG4gICAgICAgID8gcm91dGUudXJpTWF0Y2hlcihyZXF1ZXN0LnVybClcbiAgICAgICAgOiB0ZXN0UHJpbWl0aXZlKHJvdXRlLnVyaSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlc3RQcmltaXRpdmUocm91dGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWVzIHRvIG1hdGNoIGEgcm91dGUgZnJvbSB0aGUgU0RLIGNvbmZpZ3VyYXRpb24gdG8gdGhlIEhUVFAgcmVxdWVzdC5cbiAgICogSWYgYSBtYXRjaCBpcyBmb3VuZCwgdGhlIHJvdXRlIGNvbmZpZ3VyYXRpb24gaXMgcmV0dXJuZWQuXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0IFRoZSBIdHRwIHJlcXVlc3RcbiAgICogQHBhcmFtIGNvbmZpZyBIdHRwSW50ZXJjZXB0b3JDb25maWdcbiAgICovXG4gIHByaXZhdGUgZmluZE1hdGNoaW5nUm91dGUoXG4gICAgcmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PixcbiAgICBjb25maWc6IEh0dHBJbnRlcmNlcHRvckNvbmZpZ1xuICApOiBPYnNlcnZhYmxlPEFwaVJvdXRlRGVmaW5pdGlvbiB8IG51bGw+IHtcbiAgICByZXR1cm4gZnJvbShjb25maWcuYWxsb3dlZExpc3QpLnBpcGUoXG4gICAgICBmaXJzdCgocm91dGUpID0+IHRoaXMuY2FuQXR0YWNoVG9rZW4ocm91dGUsIHJlcXVlc3QpLCBudWxsKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFsbG93QW5vbnltb3VzKHJvdXRlOiBBcGlSb3V0ZURlZmluaXRpb24gfCBudWxsLCBlcnI6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAhIXJvdXRlICYmXG4gICAgICBpc0h0dHBJbnRlcmNlcHRvclJvdXRlQ29uZmlnKHJvdXRlKSAmJlxuICAgICAgISFyb3V0ZS5hbGxvd0Fub255bW91cyAmJlxuICAgICAgWydsb2dpbl9yZXF1aXJlZCcsICdjb25zZW50X3JlcXVpcmVkJywgJ21pc3NpbmdfcmVmcmVzaF90b2tlbiddLmluY2x1ZGVzKFxuICAgICAgICBlcnIuZXJyb3JcbiAgICAgIClcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -29,11 +29,11 @@ export class AuthModule {
29
29
  ],
30
30
  };
31
31
  }
32
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
33
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: AuthModule }); }
34
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthModule }); }
32
35
  }
33
- AuthModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
34
- AuthModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AuthModule });
35
- AuthModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AuthModule });
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AuthModule, decorators: [{
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthModule, decorators: [{
37
37
  type: NgModule
38
38
  }] });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hdXRoMC1hbmd1bGFyL3NyYy9saWIvYXV0aC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBYyxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFHekMsTUFBTSxPQUFPLFVBQVU7SUFDckI7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQW1CO1FBQ2hDLE9BQU87WUFDTCxRQUFRLEVBQUUsVUFBVTtZQUNwQixTQUFTLEVBQUU7Z0JBQ1QsV0FBVztnQkFDWCxTQUFTO2dCQUNUO29CQUNFLE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFFBQVEsRUFBRSxNQUFNO2lCQUNqQjtnQkFDRDtvQkFDRSxPQUFPLEVBQUUsa0JBQWtCO29CQUMzQixVQUFVLEVBQUUsa0JBQWtCLENBQUMsWUFBWTtvQkFDM0MsSUFBSSxFQUFFLENBQUMsZ0JBQWdCLENBQUM7aUJBQ3pCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzs7dUdBeEJVLFVBQVU7d0dBQVYsVUFBVTt3R0FBVixVQUFVOzJGQUFWLFVBQVU7a0JBRHRCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBBdXRoQ29uZmlnLCBBdXRoQ29uZmlnU2VydmljZSwgQXV0aENsaWVudENvbmZpZyB9IGZyb20gJy4vYXV0aC5jb25maWcnO1xuaW1wb3J0IHsgQXV0aDBDbGllbnRTZXJ2aWNlLCBBdXRoMENsaWVudEZhY3RvcnkgfSBmcm9tICcuL2F1dGguY2xpZW50JztcbmltcG9ydCB7IEF1dGhHdWFyZCB9IGZyb20gJy4vYXV0aC5ndWFyZCc7XG5cbkBOZ01vZHVsZSgpXG5leHBvcnQgY2xhc3MgQXV0aE1vZHVsZSB7XG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBhdXRoZW50aWNhdGlvbiBtb2R1bGUgc3lzdGVtLiBDb25maWd1cmF0aW9uIGNhbiBlaXRoZXIgYmUgc3BlY2lmaWVkIGhlcmUsXG4gICAqIG9yIGJ5IGNhbGxpbmcgQXV0aENsaWVudENvbmZpZy5zZXQgKHBlcmhhcHMgZnJvbSBhbiBBUFBfSU5JVElBTElaRVIgZmFjdG9yeSBmdW5jdGlvbikuXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWcgVGhlIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBTREsuXG4gICAqL1xuICBzdGF0aWMgZm9yUm9vdChjb25maWc/OiBBdXRoQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxBdXRoTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBBdXRoTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIEF1dGhTZXJ2aWNlLFxuICAgICAgICBBdXRoR3VhcmQsXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBBdXRoQ29uZmlnU2VydmljZSxcbiAgICAgICAgICB1c2VWYWx1ZTogY29uZmlnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogQXV0aDBDbGllbnRTZXJ2aWNlLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IEF1dGgwQ2xpZW50RmFjdG9yeS5jcmVhdGVDbGllbnQsXG4gICAgICAgICAgZGVwczogW0F1dGhDbGllbnRDb25maWddLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG59XG4iXX0=
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hdXRoMC1hbmd1bGFyL3NyYy9saWIvYXV0aC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBYyxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFHekMsTUFBTSxPQUFPLFVBQVU7SUFDckI7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQW1CO1FBQ2hDLE9BQU87WUFDTCxRQUFRLEVBQUUsVUFBVTtZQUNwQixTQUFTLEVBQUU7Z0JBQ1QsV0FBVztnQkFDWCxTQUFTO2dCQUNUO29CQUNFLE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFFBQVEsRUFBRSxNQUFNO2lCQUNqQjtnQkFDRDtvQkFDRSxPQUFPLEVBQUUsa0JBQWtCO29CQUMzQixVQUFVLEVBQUUsa0JBQWtCLENBQUMsWUFBWTtvQkFDM0MsSUFBSSxFQUFFLENBQUMsZ0JBQWdCLENBQUM7aUJBQ3pCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzsrR0F4QlUsVUFBVTtnSEFBVixVQUFVO2dIQUFWLFVBQVU7OzRGQUFWLFVBQVU7a0JBRHRCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBBdXRoQ29uZmlnLCBBdXRoQ29uZmlnU2VydmljZSwgQXV0aENsaWVudENvbmZpZyB9IGZyb20gJy4vYXV0aC5jb25maWcnO1xuaW1wb3J0IHsgQXV0aDBDbGllbnRTZXJ2aWNlLCBBdXRoMENsaWVudEZhY3RvcnkgfSBmcm9tICcuL2F1dGguY2xpZW50JztcbmltcG9ydCB7IEF1dGhHdWFyZCB9IGZyb20gJy4vYXV0aC5ndWFyZCc7XG5cbkBOZ01vZHVsZSgpXG5leHBvcnQgY2xhc3MgQXV0aE1vZHVsZSB7XG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBhdXRoZW50aWNhdGlvbiBtb2R1bGUgc3lzdGVtLiBDb25maWd1cmF0aW9uIGNhbiBlaXRoZXIgYmUgc3BlY2lmaWVkIGhlcmUsXG4gICAqIG9yIGJ5IGNhbGxpbmcgQXV0aENsaWVudENvbmZpZy5zZXQgKHBlcmhhcHMgZnJvbSBhbiBBUFBfSU5JVElBTElaRVIgZmFjdG9yeSBmdW5jdGlvbikuXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWcgVGhlIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBTREsuXG4gICAqL1xuICBzdGF0aWMgZm9yUm9vdChjb25maWc/OiBBdXRoQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxBdXRoTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBBdXRoTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIEF1dGhTZXJ2aWNlLFxuICAgICAgICBBdXRoR3VhcmQsXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBBdXRoQ29uZmlnU2VydmljZSxcbiAgICAgICAgICB1c2VWYWx1ZTogY29uZmlnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogQXV0aDBDbGllbnRTZXJ2aWNlLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IEF1dGgwQ2xpZW50RmFjdG9yeS5jcmVhdGVDbGllbnQsXG4gICAgICAgICAgZGVwczogW0F1dGhDbGllbnRDb25maWddLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG59XG4iXX0=