@dereekb/dbx-firebase 8.12.4 → 8.12.5

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.
@@ -2,7 +2,7 @@ import { filterMaybe, isNot, timeoutStartWith } from '@dereekb/rxjs';
2
2
  import { Injectable, Optional } from '@angular/core';
3
3
  import { loggedOutObsFromIsLoggedIn, loggedInObsFromIsLoggedIn, authUserIdentifier } from '@dereekb/dbx-core';
4
4
  import { Auth, authState, GoogleAuthProvider, signInWithPopup, signInAnonymously, signInWithEmailAndPassword, FacebookAuthProvider, GithubAuthProvider, TwitterAuthProvider, createUserWithEmailAndPassword } from '@angular/fire/auth';
5
- import { distinctUntilChanged, shareReplay, map, switchMap, firstValueFrom } from 'rxjs';
5
+ import { of, distinctUntilChanged, shareReplay, map, switchMap, firstValueFrom } from 'rxjs';
6
6
  import { AUTH_ADMIN_ROLE, cachedGetter } from '@dereekb/util';
7
7
  import { authUserInfoFromAuthUser, firebaseAuthTokenFromUser } from '../auth';
8
8
  import { sendPasswordResetEmail } from 'firebase/auth';
@@ -11,6 +11,9 @@ import * as i0 from "@angular/core";
11
11
  import * as i1 from "@angular/fire/auth";
12
12
  // MARK: Delegate
13
13
  export class DbxFirebaseAuthServiceDelegate {
14
+ constructor() {
15
+ this.fullControlOfAuthUserState = false;
16
+ }
14
17
  }
15
18
  export const DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE = {
16
19
  authUserStateObs(dbxFirebaseAuthService) {
@@ -49,7 +52,20 @@ export class DbxFirebaseAuthService {
49
52
  this.currentAuthContextInfo$ = this.currentAuthUser$.pipe(switchMap((x) => this.loadAuthContextInfoForUser(x)), shareReplay(1));
50
53
  this.authContextInfo$ = this.currentAuthContextInfo$.pipe(filterMaybe());
51
54
  delegate = delegate ?? DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE;
52
- this.authUserState$ = delegate.authUserStateObs(this).pipe(distinctUntilChanged(), shareReplay(1));
55
+ const delegateAuthUserStateObs = delegate.authUserStateObs(this).pipe(distinctUntilChanged(), shareReplay(1));
56
+ if (delegate.fullControlOfAuthUserState) {
57
+ this.authUserState$ = delegateAuthUserStateObs;
58
+ }
59
+ else {
60
+ this.authUserState$ = this._authState$.pipe(map((x) => Boolean(x)), distinctUntilChanged((x, y) => x === y), switchMap((x) => {
61
+ if (x) {
62
+ return delegateAuthUserStateObs;
63
+ }
64
+ else {
65
+ return of('none');
66
+ }
67
+ }));
68
+ }
53
69
  this.authRoles$ = delegate.authRolesObs(this);
54
70
  this.isOnboarded$ = delegate.isOnboarded(this);
55
71
  this._authRoleClaimsService = delegate.authRoleClaimsService;
@@ -161,4 +177,4 @@ export class DbxFirebaseAuthContextInfo {
161
177
  return this._token();
162
178
  }
163
179
  }
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZWJhc2UuYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvYXV0aC9zZXJ2aWNlL2ZpcmViYXNlLmF1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQWlDLDBCQUEwQixFQUFFLHlCQUF5QixFQUFzQixrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pLLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFvQyxrQkFBa0IsRUFBRSxlQUFlLEVBQXVDLGlCQUFpQixFQUFFLDBCQUEwQixFQUFrQixvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9ULE9BQU8sRUFBYyxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckcsT0FBTyxFQUFvRSxlQUFlLEVBQUUsWUFBWSxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3ZJLE9BQU8sRUFBZ0Isd0JBQXdCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDNUYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7QUFHNUUsaUJBQWlCO0FBQ2pCLE1BQU0sT0FBZ0IsOEJBQThCO0NBU25EO0FBRUQsTUFBTSxDQUFDLE1BQU0sMENBQTBDLEdBQW1DO0lBQ3hGLGdCQUFnQixDQUFDLHNC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QyxNQUF1QixDQUFDO0lBQy9DLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3ZCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpbHRlck1heWJlLCBpc05vdCwgdGltZW91dFN0YXJ0V2l0aCB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEF1dGhVc2VyU3RhdGUsIERieEF1dGhTZXJ2aWNlLCBsb2dnZWRPdXRPYnNGcm9tSXNMb2dnZWRJbiwgbG9nZ2VkSW5PYnNGcm9tSXNMb2dnZWRJbiwgQXV0aFVzZXJJZGVudGlmaWVyLCBhdXRoVXNlcklkZW50aWZpZXIgfSBmcm9tICdAZGVyZWVrYi9kYngtY29yZSc7XG5pbXBvcnQgeyBBdXRoLCBhdXRoU3RhdGUsIFVzZXIsIElkVG9rZW5SZXN1bHQsIFBhcnNlZFRva2VuLCBHb29nbGVBdXRoUHJvdmlkZXIsIHNpZ25JbldpdGhQb3B1cCwgQXV0aFByb3ZpZGVyLCBQb3B1cFJlZGlyZWN0UmVzb2x2ZXIsIHNpZ25JbkFub255bW91c2x5LCBzaWduSW5XaXRoRW1haWxBbmRQYXNzd29yZCwgVXNlckNyZWRlbnRpYWwsIEZhY2Vib29rQXV0aFByb3ZpZGVyLCBHaXRodWJBdXRoUHJvdmlkZXIsIFR3aXR0ZXJBdXRoUHJvdmlkZXIsIGNyZWF0ZVVzZXJXaXRoRW1haWxBbmRQYXNzd29yZCB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvYXV0aCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc2hhcmVSZXBsYXksIG1hcCwgc3dpdGNoTWFwLCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXV0aENsYWltcywgQXV0aENsYWltc09iamVjdCwgQXV0aFJvbGVDbGFpbXNTZXJ2aWNlLCBBdXRoUm9sZVNldCwgQVVUSF9BRE1JTl9ST0xFLCBjYWNoZWRHZXR0ZXIsIE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBBdXRoVXNlckluZm8sIGF1dGhVc2VySW5mb0Zyb21BdXRoVXNlciwgZmlyZWJhc2VBdXRoVG9rZW5Gcm9tVXNlciB9IGZyb20gJy4uL2F1dGgnO1xuaW1wb3J0IHsgc2VuZFBhc3N3b3JkUmVzZXRFbWFpbCB9IGZyb20gJ2ZpcmViYXNlL2F1dGgnO1xuaW1wb3J0IHsgYXV0aFVzZXJTdGF0ZUZyb21GaXJlYmFzZUF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9maXJlYmFzZS5hdXRoLnJ4anMnO1xuaW1wb3J0IHsgRmlyZWJhc2VBdXRoQ29udGV4dEluZm8sIEZpcmViYXNlQXV0aFRva2VuIH0gZnJvbSAnQGRlcmVla2IvZmlyZWJhc2UnO1xuXG4vLyBNQVJLOiBEZWxlZ2F0ZVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERieEZpcmViYXNlQXV0aFNlcnZpY2VEZWxlZ2F0ZSB7XG4gIGFic3RyYWN0IGF1dGhVc2VyU3RhdGVPYnMoZGJ4RmlyZWJhc2VBdXRoU2VydmljZTogRGJ4RmlyZWJhc2VBdXRoU2VydmljZSk6IE9ic2VydmFibGU8QXV0aFVzZXJTdGF0ZT47XG4gIGFic3RyYWN0IGF1dGhSb2xlc09icyhkYnhGaXJlYmFzZUF1dGhTZXJ2aWNlOiBEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlKTogT2JzZXJ2YWJsZTxBdXRoUm9sZVNldD47XG4gIGFic3RyYWN0IGlzT25ib2FyZGVkKGRieEZpcmViYXNlQXV0aFNlcnZpY2U6IERieEZpcmViYXNlQXV0aFNlcnZpY2UpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhlIGlucHV0IHJvbGVzIGltcGx5IHRoZSBhZG1pbiBwcml2aWxlZGdlcy5cbiAgICovXG4gIGFic3RyYWN0IGlzQWRtaW5JbkF1dGhSb2xlU2V0KGF1dGhSb2xlU2V0OiBBdXRoUm9sZVNldCk6IGJvb2xlYW47XG4gIGFic3RyYWN0IGF1dGhSb2xlQ2xhaW1zU2VydmljZT86IE1heWJlPEF1dGhSb2xlQ2xhaW1zU2VydmljZTxBdXRoQ2xhaW1zT2JqZWN0Pj47XG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0RCWF9GSVJFQkFTRV9BVVRIX1NFUlZJQ0VfREVMRUdBVEU6IERieEZpcmViYXNlQXV0aFNlcnZpY2VEZWxlZ2F0ZSA9IHtcbiAgYXV0aFVzZXJTdGF0ZU9icyhkYnhGaXJlYmFzZUF1dGhTZXJ2aWNlOiBEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlKTogT2JzZXJ2YWJsZTxBdXRoVXNlclN0YXRlPiB7XG4gICAgcmV0dXJuIGF1dGhVc2VyU3RhdGVGcm9tRmlyZWJhc2VBdXRoU2VydmljZShkYnhGaXJlYmFzZUF1dGhTZXJ2aWNlKTtcbiAgfSxcbiAgYXV0aFJvbGVzT2JzKGRieEZpcmViYXNlQXV0aFNlcnZpY2U6IERieEZpcmViYXNlQXV0aFNlcnZpY2UpOiBPYnNlcnZhYmxlPEF1dGhSb2xlU2V0PiB7XG4gICAgcmV0dXJuIGRieEZpcmViYXNlQXV0aFNlcnZpY2UuYXV0aFVzZXJTdGF0ZSQucGlwZShtYXAoKHgpID0+ICh4ID09PSAndXNlcicgPyBuZXcgU2V0KFsndXNlciddKSA6IG5ldyBTZXQoKSkpKTtcbiAgfSxcbiAgaXNPbmJvYXJkZWQoZGJ4RmlyZWJhc2VBdXRoU2VydmljZTogRGJ4RmlyZWJhc2VBdXRoU2VydmljZSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBkYnhGaXJlYmFzZUF1dGhTZXJ2aWNlLmF1dGhVc2VyU3RhdGUkLnBpcGUobWFwKCh4KSA9PiB4ID09PSAndXNlcicpKTtcbiAgfSxcbiAgaXNBZG1pbkluQXV0aFJvbGVTZXQoYXV0aFJvbGVTZXQ6IEF1dGhSb2xlU2V0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGF1dGhSb2xlU2V0LmhhcyhBVVRIX0FETUlOX1JPTEUpO1xuICB9XG59O1xuXG4vLyBNQVJLOiBTZXJ2aWNlXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGJ4RmlyZWJhc2VBdXRoU2VydmljZSBpbXBsZW1lbnRzIERieEF1dGhTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXV0aFN0YXRlJDogT2JzZXJ2YWJsZTxNYXliZTxVc2VyPj4gPSBhdXRoU3RhdGUodGhpcy5maXJlYmFzZUF1dGgpO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRBdXRoVXNlciQ6IE9ic2VydmFibGU8TWF5YmU8VXNlcj4+ID0gdGhpcy5fYXV0aFN0YXRlJC5waXBlKHRpbWVvdXRTdGFydFdpdGgobnVsbCBhcyBNYXliZTxVc2VyPiwgMTAwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBjdXJyZW50QXV0aFVzZXJJbmZvJDogT2JzZXJ2YWJsZTxNYXliZTxBdXRoVXNlckluZm8+PiA9IHRoaXMuY3VycmVudEF1dGhVc2VyJC5waXBlKG1hcCgoeCkgPT4gKHggPyBhdXRoVXNlckluZm9Gcm9tQXV0aFVzZXIoeCkgOiB1bmRlZmluZWQpKSk7XG5cbiAgcmVhZG9ubHkgYXV0aFVzZXIkOiBPYnNlcnZhYmxlPFVzZXI+ID0gdGhpcy5jdXJyZW50QXV0aFVzZXIkLnBpcGUoZmlsdGVyTWF5YmUoKSk7XG4gIHJlYWRvbmx5IGF1dGhVc2VySW5mbyQ6IE9ic2VydmFibGU8QXV0aFVzZXJJbmZvPiA9IHRoaXMuYXV0aFVzZXIkLnBpcGUobWFwKGF1dGhVc2VySW5mb0Zyb21BdXRoVXNlcikpO1xuXG4gIHJlYWRvbmx5IGhhc0F1dGhVc2VyJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuY3VycmVudEF1dGhVc2VyJC5waXBlKFxuICAgIG1hcCgoeCkgPT4gQm9vbGVhbih4KSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuICByZWFkb25seSBpc0Fub255bW91c1VzZXIkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5hdXRoVXNlciQucGlwZShcbiAgICBtYXAoKHgpID0+IHguaXNBbm9ueW1vdXMpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcbiAgcmVhZG9ubHkgaXNOb3RBbm9ueW1vdXNVc2VyJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuaXNBbm9ueW1vdXNVc2VyJC5waXBlKGlzTm90KCkpO1xuXG4gIHJlYWRvbmx5IGlzTG9nZ2VkSW4kOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5oYXNBdXRoVXNlciQ7XG5cbiAgcmVhZG9ubHkgaXNOb3RMb2dnZWRJbiQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmlzTG9nZ2VkSW4kLnBpcGUoaXNOb3QoKSk7XG4gIHJlYWRvbmx5IG9uTG9nSW4kOiBPYnNlcnZhYmxlPHZvaWQ+ID0gbG9nZ2VkSW5PYnNGcm9tSXNMb2dnZWRJbih0aGlzLmlzTG9nZ2VkSW4kKTtcbiAgcmVhZG9ubHkgb25Mb2dPdXQkOiBPYnNlcnZhYmxlPHZvaWQ+ID0gbG9nZ2VkT3V0T2JzRnJvbUlzTG9nZ2VkSW4odGhpcy5pc0xvZ2dlZEluJCk7XG4gIHJlYWRvbmx5IHVzZXJJZGVudGlmaWVyJDogT2JzZXJ2YWJsZTxBdXRoVXNlcklkZW50aWZpZXI+ID0gdGhpcy5jdXJyZW50QXV0aFVzZXIkLnBpcGUobWFwKCh4KSA9PiBhdXRoVXNlcklkZW50aWZpZXIoeD8udWlkKSkpO1xuICByZWFkb25seSB1aWQkOiBPYnNlcnZhYmxlPEF1dGhVc2VySWRlbnRpZmllcj4gPSB0aGlzLnVzZXJJZGVudGlmaWVyJDtcblxuICByZWFkb25seSBpZFRva2VuUmVzdWx0JDogT2JzZXJ2YWJsZTxJZFRva2VuUmVzdWx0PiA9IHRoaXMuYXV0aFVzZXIkLnBpcGUoc3dpdGNoTWFwKCh4KSA9PiB4LmdldElkVG9rZW5SZXN1bHQoKSkpO1xuXG4gIHJlYWRvbmx5IGNsYWltcyQ6IE9ic2VydmFibGU8UGFyc2VkVG9rZW4+ID0gdGhpcy5pZFRva2VuUmVzdWx0JC5waXBlKG1hcCgoeCkgPT4geC5jbGFpbXMpKTtcbiAgcmVhZG9ubHkgY3VycmVudEF1dGhDb250ZXh0SW5mbyQ6IE9ic2VydmFibGU8TWF5YmU8RGJ4RmlyZWJhc2VBdXRoQ29udGV4dEluZm8+PiA9IHRoaXMuY3VycmVudEF1dGhVc2VyJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoeCkgPT4gdGhpcy5sb2FkQXV0aENvbnRleHRJbmZvRm9yVXNlcih4KSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcbiAgcmVhZG9ubHkgYXV0aENvbnRleHRJbmZvJDogT2JzZXJ2YWJsZTxNYXliZTxEYnhGaXJlYmFzZUF1dGhDb250ZXh0SW5mbz4+ID0gdGhpcy5jdXJyZW50QXV0aENvbnRleHRJbmZvJC5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIHJlYWRvbmx5IGF1dGhVc2VyU3RhdGUkOiBPYnNlcnZhYmxlPEF1dGhVc2VyU3RhdGU+O1xuICByZWFkb25seSBhdXRoUm9sZXMkOiBPYnNlcnZhYmxlPEF1dGhSb2xlU2V0PjtcbiAgcmVhZG9ubHkgaXNPbmJvYXJkZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIHByaXZhdGUgX2F1dGhSb2xlQ2xhaW1zU2VydmljZT86IE1heWJlPEF1dGhSb2xlQ2xhaW1zU2VydmljZTxBdXRoQ2xhaW1zT2JqZWN0Pj47XG4gIHJlYWRvbmx5IGlzQWRtaW5JbkF1dGhSb2xlU2V0OiAoYXV0aFJvbGVTZXQ6IEF1dGhSb2xlU2V0KSA9PiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGZpcmViYXNlQXV0aDogQXV0aCwgQE9wdGlvbmFsKCkgZGVsZWdhdGU6IERieEZpcmViYXNlQXV0aFNlcnZpY2VEZWxlZ2F0ZSkge1xuICAgIGRlbGVnYXRlID0gZGVsZWdhdGUgPz8gREVGQVVMVF9EQlhfRklSRUJBU0VfQVVUSF9TRVJWSUNFX0RFTEVHQVRFO1xuICAgIHRoaXMuYXV0aFVzZXJTdGF0ZSQgPSBkZWxlZ2F0ZS5hdXRoVXNlclN0YXRlT2JzKHRoaXMpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgc2hhcmVSZXBsYXkoMSkpO1xuICAgIHRoaXMuYXV0aFJvbGVzJCA9IGRlbGVnYXRlLmF1dGhSb2xlc09icyh0aGlzKTtcbiAgICB0aGlzLmlzT25ib2FyZGVkJCA9IGRlbGVnYXRlLmlzT25ib2FyZGVkKHRoaXMpO1xuICAgIHRoaXMuX2F1dGhSb2xlQ2xhaW1zU2VydmljZSA9IGRlbGVnYXRlLmF1dGhSb2xlQ2xhaW1zU2VydmljZTtcbiAgICB0aGlzLmlzQWRtaW5JbkF1dGhSb2xlU2V0ID0gZGVsZWdhdGUuaXNBZG1pbkluQXV0aFJvbGVTZXQ7XG4gIH1cblxuICBhc3luYyByZWZyZXNoVG9rZW4oKTogUHJvbWlzZTxJZFRva2VuUmVzdWx0PiB7XG4gICAgY29uc3QgdXNlciA9IHRoaXMuZmlyZWJhc2VBdXRoLmN1cnJlbnRVc2VyO1xuXG4gICAgaWYgKCF1c2VyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vIHVzZXIgdG8gcmVmcmVzaCB0aGUgdG9rZW4gZm9yLicpO1xuICAgIH1cblxuICAgIHJldHVybiB1c2VyLmdldElkVG9rZW5SZXN1bHQodHJ1ZSk7XG4gIH1cblxuICByb2xlc0ZvckNsYWltczxUIGV4dGVuZHMgQXV0aENsYWltc09iamVjdCA9IEF1dGhDbGFpbXNPYmplY3Q+KGNsYWltczogQXV0aENsYWltczxUPik6IEF1dGhSb2xlU2V0IHtcbiAgICBsZXQgcmVzdWx0OiBBdXRoUm9sZVNldDtcblxuICAgIGlmICh0aGlzLl9hdXRoUm9sZUNsYWltc1NlcnZpY2UpIHtcbiAgICAgIHJldHVybiB0aGlzLl9hdXRoUm9sZUNsYWltc1NlcnZpY2UudG9Sb2xlcyhjbGFpbXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0RieEZpcmViYXNlQXV0aFNlcnZpY2U6IHJvbGVzRm9yQ2xhaW1zIGNhbGxlZCB3aXRoIG5vIGF1dGhSb2xlQ2xhaW1zU2VydmljZSBwcm92aWRlZC4gQW4gZW1wdHkgc2V0IGlzIHJldHVybmVkLicpO1xuICAgICAgcmVzdWx0ID0gbmV3IFNldCgpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXRBdXRoQ29udGV4dEluZm8oKTogUHJvbWlzZTxNYXliZTxEYnhGaXJlYmFzZUF1dGhDb250ZXh0SW5mbz4+IHtcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5hdXRoVXNlciQpLnRoZW4oKHVzZXIpID0+IHRoaXMubG9hZEF1dGhDb250ZXh0SW5mb0ZvclVzZXIodXNlcikpO1xuICB9XG5cbiAgYXN5bmMgbG9hZEF1dGhDb250ZXh0SW5mb0ZvclVzZXIodXNlcjogTWF5YmU8VXNlcj4pOiBQcm9taXNlPE1heWJlPERieEZpcmViYXNlQXV0aENvbnRleHRJbmZvPj4ge1xuICAgIGxldCByZXN1bHQ6IE1heWJlPERieEZpcmViYXNlQXV0aENvbnRleHRJbmZvPjtcblxuICAgIGlmICh1c2VyKSB7XG4gICAgICBjb25zdCBqd3RUb2tlbjogSWRUb2tlblJlc3VsdCA9IGF3YWl0IHVzZXIuZ2V0SWRUb2tlblJlc3VsdCgpO1xuICAgICAgcmVzdWx0ID0gbmV3IERieEZpcmViYXNlQXV0aENvbnRleHRJbmZvKHRoaXMsIHVzZXIsIGp3dFRva2VuKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgbG9nSW5XaXRoR29vZ2xlKCk6IFByb21pc2U8VXNlckNyZWRlbnRpYWw+IHtcbiAgICByZXR1cm4gdGhpcy5sb2dJbldpdGhQb3B1cChuZXcgR29vZ2xlQXV0aFByb3ZpZGVyKCkpO1xuICB9XG5cbiAgbG9nSW5XaXRoRmFjZWJvb2soKTogUHJvbWlzZTxVc2VyQ3JlZGVudGlhbD4ge1xuICAgIHJldHVybiB0aGlzLmxvZ0luV2l0aFBvcHVwKG5ldyBGYWNlYm9va0F1dGhQcm92aWRlcigpKTtcbiAgfVxuXG4gIGxvZ0luV2l0aFR3aXR0ZXIoKTogUHJvbWlzZTxVc2VyQ3JlZGVudGlhbD4ge1xuICAgIHJldHVybiB0aGlzLmxvZ0luV2l0aFBvcHVwKG5ldyBUd2l0dGVyQXV0aFByb3ZpZGVyKCkpO1xuICB9XG5cbiAgbG9nSW5XaXRoR2l0aHViKCk6IFByb21pc2U8VXNlckNyZWRlbnRpYWw+IHtcbiAgICByZXR1cm4gdGhpcy5sb2dJbldpdGhQb3B1cChuZXcgR2l0aHViQXV0aFByb3ZpZGVyKCkpO1xuICB9XG5cbiAgbG9nSW5XaXRoQXBwbGUoKTogUHJvbWlzZTxVc2VyQ3JlZGVudGlhbD4ge1xuICAgIHRocm93IG5ldyBFcnJvcigndG9kbycpO1xuICB9XG5cbiAgbG9nSW5XaXRoTWljcm9zb2Z0KCk6IFByb21pc2U8VXNlckNyZWRlbnRpYWw+IHtcbiAgICAvLyByZXR1cm4gdGhpcy5sb2dJbldpdGhQb3B1cChuZXcgTWljcm9zb2Z0QXV0aFByb3ZpZGVyKCkpO1xuICAgIHRocm93IG5ldyBFcnJvcigndG9kbycpO1xuICB9XG5cbiAgbG9nSW5XaXRoUGhvbmUoKTogUHJvbWlzZTxVc2VyQ3JlZGVudGlhbD4ge1xuICAgIHRocm93IG5ldyBFcnJvcigndG9kbycpO1xuICAgIC8vIHJldHVybiBzaWduSW5XaXRoUGhvbmVOdW1iZXIodGhpcy5maXJlYmFzZUF1dGgsIClcbiAgfVxuXG4gIGxvZ0luV2l0aFBvcHVwKHByb3ZpZGVyOiBBdXRoUHJvdmlkZXIsIHJlc29sdmVyPzogUG9wdXBSZWRpcmVjdFJlc29sdmVyKTogUHJvbWlzZTxVc2VyQ3JlZGVudGlhbD4ge1xuICAgIHJldHVybiBzaWduSW5XaXRoUG9wdXAodGhpcy5maXJlYmFzZUF1dGgsIHByb3ZpZGVyLCByZXNvbHZlcik7XG4gIH1cblxuICByZWdpc3RlcldpdGhFbWFpbEFuZFBhc3N3b3JkKGVtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBQcm9taXNlPFVzZXJDcmVkZW50aWFsPiB7XG4gICAgcmV0dXJuIGNyZWF0ZVVzZXJXaXRoRW1haWxBbmRQYXNzd29yZCh0aGlzLmZpcmViYXNlQXV0aCwgZW1haWwsIHBhc3N3b3JkKTtcbiAgfVxuXG4gIHNlbmRQYXNzd29yZFJlc2V0RW1haWwoZW1haWw6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBzZW5kUGFzc3dvcmRSZXNldEVtYWlsKHRoaXMuZmlyZWJhc2VBdXRoLCBlbWFpbCk7XG4gIH1cblxuICBsb2dJbldpdGhFbWFpbEFuZFBhc3N3b3JkKGVtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBQcm9taXNlPFVzZXJDcmVkZW50aWFsPiB7XG4gICAgcmV0dXJuIHNpZ25JbldpdGhFbWFpbEFuZFBhc3N3b3JkKHRoaXMuZmlyZWJhc2VBdXRoLCBlbWFpbCwgcGFzc3dvcmQpO1xuICB9XG5cbiAgbG9nSW5Bc0Fub255bW91cygpOiBQcm9taXNlPFVzZXJDcmVkZW50aWFsPiB7XG4gICAgcmV0dXJuIHNpZ25JbkFub255bW91c2x5KHRoaXMuZmlyZWJhc2VBdXRoKTtcbiAgfVxuXG4gIGxvZ091dCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5maXJlYmFzZUF1dGguc2lnbk91dCgpO1xuICB9XG59XG5cbi8qKlxuICogRmlyZWJhc2VBdXRoQ29udGV4dEluZm8gaW1wbGVtZW50YXRpb24gZnJvbSBEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlLlxuICovXG5leHBvcnQgY2xhc3MgRGJ4RmlyZWJhc2VBdXRoQ29udGV4dEluZm8gaW1wbGVtZW50cyBGaXJlYmFzZUF1dGhDb250ZXh0SW5mbyB7XG4gIHByaXZhdGUgX3Rva2VuID0gY2FjaGVkR2V0dGVyKCgpID0+IGZpcmViYXNlQXV0aFRva2VuRnJvbVVzZXIodGhpcy51c2VyKSk7XG4gIHByaXZhdGUgX3JvbGVzID0gY2FjaGVkR2V0dGVyKCgpID0+IHRoaXMuc2VydmljZS5yb2xlc0ZvckNsYWltcyh0aGlzLmdldENsYWltcygpKSk7XG4gIHByaXZhdGUgX2lzQWRtaW4gPSBjYWNoZWRHZXR0ZXIoKCkgPT4gdGhpcy5zZXJ2aWNlLmlzQWRtaW5JbkF1dGhSb2xlU2V0KHRoaXMuX3JvbGVzKCkpKTtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBzZXJ2aWNlOiBEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlLCByZWFkb25seSB1c2VyOiBVc2VyLCByZWFkb25seSBqd3RUb2tlbjogSWRUb2tlblJlc3VsdCkge31cblxuICBnZXQgdWlkKCkge1xuICAgIHJldHVybiB0aGlzLnVzZXIudWlkO1xuICB9XG5cbiAgaXNBZG1pbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNBZG1pbigpO1xuICB9XG5cbiAgZ2V0Q2xhaW1zPFQgZXh0ZW5kcyBBdXRoQ2xhaW1zT2JqZWN0ID0gQXV0aENsYWltc09iamVjdD4oKTogQXV0aENsYWltczxUPiB7XG4gICAgcmV0dXJuIHRoaXMuand0VG9rZW4uY2xhaW1zIGFzIEF1dGhDbGFpbXM8VD47XG4gIH1cblxuICBnZXRBdXRoUm9sZXMoKTogQXV0aFJvbGVTZXQge1xuICAgIHJldHVybiB0aGlzLl9yb2xlcygpO1xuICB9XG5cbiAgZ2V0IHRva2VuKCk6IEZpcmViYXNlQXV0aFRva2VuIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW4oKTtcbiAgfVxufVxuIl19
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZWJhc2UuYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvYXV0aC9zZXJ2aWNlL2ZpcmViYXNlLmF1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQWlDLDBCQUEwQixFQUFFLHlCQUF5QixFQUFzQixrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pLLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFvQyxrQkFBa0IsRUFBRSxlQUFlLEVBQXVDLGlCQUFpQixFQUFFLDBCQUEwQixFQUFrQixvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9ULE9BQU8sRUFBRSxFQUFFLEVBQWMsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pHLE9BQU8sRUFBb0UsZUFBZSxFQUFFLFlBQVksRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUN2SSxPQUFPLEVBQWdCLHdCQUF3QixFQUFFLHlCQUF5QixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBRzVFLGlCQUFpQjtBQUNqQixNQUFNLE9BQWdCLDhCQUE4QjtJQUFwRDtRQUNFLCtCQUEwQixHQUFhLEtBQUssQ0FBQztJQVMvQyxDQUFDO0NBQUE7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QUFRLEdBQVIsUUFBUSxDQUFlO1FBSm5HLFdBQU0sR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDbEUsV0FBTSxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNFLGFBQVEsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXNCLENBQUM7SUFFL0csSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUN2QixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQXVCLENBQUM7SUFDL0MsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDdkIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmlsdGVyTWF5YmUsIGlzTm90LCB0aW1lb3V0U3RhcnRXaXRoIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aFVzZXJTdGF0ZSwgRGJ4QXV0aFNlcnZpY2UsIGxvZ2dlZE91dE9ic0Zyb21Jc0xvZ2dlZEluLCBsb2dnZWRJbk9ic0Zyb21Jc0xvZ2dlZEluLCBBdXRoVXNlcklkZW50aWZpZXIsIGF1dGhVc2VySWRlbnRpZmllciB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IEF1dGgsIGF1dGhTdGF0ZSwgVXNlciwgSWRUb2tlblJlc3VsdCwgUGFyc2VkVG9rZW4sIEdvb2dsZUF1dGhQcm92aWRlciwgc2lnbkluV2l0aFBvcHVwLCBBdXRoUHJvdmlkZXIsIFBvcHVwUmVkaXJlY3RSZXNvbHZlciwgc2lnbkluQW5vbnltb3VzbHksIHNpZ25JbldpdGhFbWFpbEFuZFBhc3N3b3JkLCBVc2VyQ3JlZGVudGlhbCwgRmFjZWJvb2tBdXRoUHJvdmlkZXIsIEdpdGh1YkF1dGhQcm92aWRlciwgVHdpdHRlckF1dGhQcm92aWRlciwgY3JlYXRlVXNlcldpdGhFbWFpbEFuZFBhc3N3b3JkIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9hdXRoJztcbmltcG9ydCB7IG9mLCBPYnNlcnZhYmxlLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc2hhcmVSZXBsYXksIG1hcCwgc3dpdGNoTWFwLCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXV0aENsYWltcywgQXV0aENsYWltc09iamVjdCwgQXV0aFJvbGVDbGFpbXNTZXJ2aWNlLCBBdXRoUm9sZVNldCwgQVVUSF9BRE1JTl9ST0xFLCBjYWNoZWRHZXR0ZXIsIE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBBdXRoVXNlckluZm8sIGF1dGhVc2VySW5mb0Zyb21BdXRoVXNlciwgZmlyZWJhc2VBdXRoVG9rZW5Gcm9tVXNlciB9IGZyb20gJy4uL2F1dGgnO1xuaW1wb3J0IHsgc2VuZFBhc3N3b3JkUmVzZXRFbWFpbCB9IGZyb20gJ2ZpcmViYXNlL2F1dGgnO1xuaW1wb3J0IHsgYXV0aFVzZXJTdGF0ZUZyb21GaXJlYmFzZUF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9maXJlYmFzZS5hdXRoLnJ4anMnO1xuaW1wb3J0IHsgRmlyZWJhc2VBdXRoQ29udGV4dEluZm8sIEZpcmViYXNlQXV0aFRva2VuIH0gZnJvbSAnQGRlcmVla2IvZmlyZWJhc2UnO1xuXG4vLyBNQVJLOiBEZWxlZ2F0ZVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERieEZpcmViYXNlQXV0aFNlcnZpY2VEZWxlZ2F0ZSB7XG4gIGZ1bGxDb250cm9sT2ZBdXRoVXNlclN0YXRlPzogYm9vbGVhbiA9IGZhbHNlO1xuICBhYnN0cmFjdCBhdXRoVXNlclN0YXRlT2JzKGRieEZpcmViYXNlQXV0aFNlcnZpY2U6IERieEZpcmViYXNlQXV0aFNlcnZpY2UpOiBPYnNlcnZhYmxlPEF1dGhVc2VyU3RhdGU+O1xuICBhYnN0cmFjdCBhdXRoUm9sZXNPYnMoZGJ4RmlyZWJhc2VBdXRoU2VydmljZTogRGJ4RmlyZWJhc2VBdXRoU2VydmljZSk6IE9ic2VydmFibGU8QXV0aFJvbGVTZXQ+O1xuICBhYnN0cmFjdCBpc09uYm9hcmRlZChkYnhGaXJlYmFzZUF1dGhTZXJ2aWNlOiBEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlKTogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoZSBpbnB1dCByb2xlcyBpbXBseSB0aGUgYWRtaW4gcHJpdmlsZWRnZXMuXG4gICAqL1xuICBhYnN0cmFjdCBpc0FkbWluSW5BdXRoUm9sZVNldChhdXRoUm9sZVNldDogQXV0aFJvbGVTZXQpOiBib29sZWFuO1xuICBhYnN0cmFjdCBhdXRoUm9sZUNsYWltc1NlcnZpY2U/OiBNYXliZTxBdXRoUm9sZUNsYWltc1NlcnZpY2U8QXV0aENsYWltc09iamVjdD4+O1xufVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9EQlhfRklSRUJBU0VfQVVUSF9TRVJWSUNFX0RFTEVHQVRFOiBEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlRGVsZWdhdGUgPSB7XG4gIGF1dGhVc2VyU3RhdGVPYnMoZGJ4RmlyZWJhc2VBdXRoU2VydmljZTogRGJ4RmlyZWJhc2VBdXRoU2VydmljZSk6IE9ic2VydmFibGU8QXV0aFVzZXJTdGF0ZT4ge1xuICAgIHJldHVybiBhdXRoVXNlclN0YXRlRnJvbUZpcmViYXNlQXV0aFNlcnZpY2UoZGJ4RmlyZWJhc2VBdXRoU2VydmljZSk7XG4gIH0sXG4gIGF1dGhSb2xlc09icyhkYnhGaXJlYmFzZUF1dGhTZXJ2aWNlOiBEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlKTogT2JzZXJ2YWJsZTxBdXRoUm9sZVNldD4ge1xuICAgIHJldHVybiBkYnhGaXJlYmFzZUF1dGhTZXJ2aWNlLmF1dGhVc2VyU3RhdGUkLnBpcGUobWFwKCh4KSA9PiAoeCA9PT0gJ3VzZXInID8gbmV3IFNldChbJ3VzZXInXSkgOiBuZXcgU2V0KCkpKSk7XG4gIH0sXG4gIGlzT25ib2FyZGVkKGRieEZpcmViYXNlQXV0aFNlcnZpY2U6IERieEZpcmViYXNlQXV0aFNlcnZpY2UpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gZGJ4RmlyZWJhc2VBdXRoU2VydmljZS5hdXRoVXNlclN0YXRlJC5waXBlKG1hcCgoeCkgPT4geCA9PT0gJ3VzZXInKSk7XG4gIH0sXG4gIGlzQWRtaW5JbkF1dGhSb2xlU2V0KGF1dGhSb2xlU2V0OiBBdXRoUm9sZVNldCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBhdXRoUm9sZVNldC5oYXMoQVVUSF9BRE1JTl9ST0xFKTtcbiAgfVxufTtcblxuLy8gTUFSSzogU2VydmljZVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERieEZpcmViYXNlQXV0aFNlcnZpY2UgaW1wbGVtZW50cyBEYnhBdXRoU2VydmljZSB7XG4gIHJlYWRvbmx5IF9hdXRoU3RhdGUkOiBPYnNlcnZhYmxlPE1heWJlPFVzZXI+PiA9IGF1dGhTdGF0ZSh0aGlzLmZpcmViYXNlQXV0aCk7XG5cbiAgcmVhZG9ubHkgY3VycmVudEF1dGhVc2VyJDogT2JzZXJ2YWJsZTxNYXliZTxVc2VyPj4gPSB0aGlzLl9hdXRoU3RhdGUkLnBpcGUodGltZW91dFN0YXJ0V2l0aChudWxsIGFzIE1heWJlPFVzZXI+LCAxMDAwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRBdXRoVXNlckluZm8kOiBPYnNlcnZhYmxlPE1heWJlPEF1dGhVc2VySW5mbz4+ID0gdGhpcy5jdXJyZW50QXV0aFVzZXIkLnBpcGUobWFwKCh4KSA9PiAoeCA/IGF1dGhVc2VySW5mb0Zyb21BdXRoVXNlcih4KSA6IHVuZGVmaW5lZCkpKTtcblxuICByZWFkb25seSBhdXRoVXNlciQ6IE9ic2VydmFibGU8VXNlcj4gPSB0aGlzLmN1cnJlbnRBdXRoVXNlciQucGlwZShmaWx0ZXJNYXliZSgpKTtcbiAgcmVhZG9ubHkgYXV0aFVzZXJJbmZvJDogT2JzZXJ2YWJsZTxBdXRoVXNlckluZm8+ID0gdGhpcy5hdXRoVXNlciQucGlwZShtYXAoYXV0aFVzZXJJbmZvRnJvbUF1dGhVc2VyKSk7XG5cbiAgcmVhZG9ubHkgaGFzQXV0aFVzZXIkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5jdXJyZW50QXV0aFVzZXIkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiBCb29sZWFuKHgpKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG4gIHJlYWRvbmx5IGlzQW5vbnltb3VzVXNlciQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmF1dGhVc2VyJC5waXBlKFxuICAgIG1hcCgoeCkgPT4geC5pc0Fub255bW91cyksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuICByZWFkb25seSBpc05vdEFub255bW91c1VzZXIkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5pc0Fub255bW91c1VzZXIkLnBpcGUoaXNOb3QoKSk7XG5cbiAgcmVhZG9ubHkgaXNMb2dnZWRJbiQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmhhc0F1dGhVc2VyJDtcblxuICByZWFkb25seSBpc05vdExvZ2dlZEluJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuaXNMb2dnZWRJbiQucGlwZShpc05vdCgpKTtcbiAgcmVhZG9ubHkgb25Mb2dJbiQ6IE9ic2VydmFibGU8dm9pZD4gPSBsb2dnZWRJbk9ic0Zyb21Jc0xvZ2dlZEluKHRoaXMuaXNMb2dnZWRJbiQpO1xuICByZWFkb25seSBvbkxvZ091dCQ6IE9ic2VydmFibGU8dm9pZD4gPSBsb2dnZWRPdXRPYnNGcm9tSXNMb2dnZWRJbih0aGlzLmlzTG9nZ2VkSW4kKTtcbiAgcmVhZG9ubHkgdXNlcklkZW50aWZpZXIkOiBPYnNlcnZhYmxlPEF1dGhVc2VySWRlbnRpZmllcj4gPSB0aGlzLmN1cnJlbnRBdXRoVXNlciQucGlwZShtYXAoKHgpID0+IGF1dGhVc2VySWRlbnRpZmllcih4Py51aWQpKSk7XG4gIHJlYWRvbmx5IHVpZCQ6IE9ic2VydmFibGU8QXV0aFVzZXJJZGVudGlmaWVyPiA9IHRoaXMudXNlcklkZW50aWZpZXIkO1xuXG4gIHJlYWRvbmx5IGlkVG9rZW5SZXN1bHQkOiBPYnNlcnZhYmxlPElkVG9rZW5SZXN1bHQ+ID0gdGhpcy5hdXRoVXNlciQucGlwZShzd2l0Y2hNYXAoKHgpID0+IHguZ2V0SWRUb2tlblJlc3VsdCgpKSk7XG5cbiAgcmVhZG9ubHkgY2xhaW1zJDogT2JzZXJ2YWJsZTxQYXJzZWRUb2tlbj4gPSB0aGlzLmlkVG9rZW5SZXN1bHQkLnBpcGUobWFwKCh4KSA9PiB4LmNsYWltcykpO1xuICByZWFkb25seSBjdXJyZW50QXV0aENvbnRleHRJbmZvJDogT2JzZXJ2YWJsZTxNYXliZTxEYnhGaXJlYmFzZUF1dGhDb250ZXh0SW5mbz4+ID0gdGhpcy5jdXJyZW50QXV0aFVzZXIkLnBpcGUoXG4gICAgc3dpdGNoTWFwKCh4KSA9PiB0aGlzLmxvYWRBdXRoQ29udGV4dEluZm9Gb3JVc2VyKHgpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuICByZWFkb25seSBhdXRoQ29udGV4dEluZm8kOiBPYnNlcnZhYmxlPE1heWJlPERieEZpcmViYXNlQXV0aENvbnRleHRJbmZvPj4gPSB0aGlzLmN1cnJlbnRBdXRoQ29udGV4dEluZm8kLnBpcGUoZmlsdGVyTWF5YmUoKSk7XG5cbiAgcmVhZG9ubHkgYXV0aFVzZXJTdGF0ZSQ6IE9ic2VydmFibGU8QXV0aFVzZXJTdGF0ZT47XG4gIHJlYWRvbmx5IGF1dGhSb2xlcyQ6IE9ic2VydmFibGU8QXV0aFJvbGVTZXQ+O1xuICByZWFkb25seSBpc09uYm9hcmRlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgcHJpdmF0ZSBfYXV0aFJvbGVDbGFpbXNTZXJ2aWNlPzogTWF5YmU8QXV0aFJvbGVDbGFpbXNTZXJ2aWNlPEF1dGhDbGFpbXNPYmplY3Q+PjtcbiAgcmVhZG9ubHkgaXNBZG1pbkluQXV0aFJvbGVTZXQ6IChhdXRoUm9sZVNldDogQXV0aFJvbGVTZXQpID0+IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgZmlyZWJhc2VBdXRoOiBBdXRoLCBAT3B0aW9uYWwoKSBkZWxlZ2F0ZTogRGJ4RmlyZWJhc2VBdXRoU2VydmljZURlbGVnYXRlKSB7XG4gICAgZGVsZWdhdGUgPSBkZWxlZ2F0ZSA/PyBERUZBVUxUX0RCWF9GSVJFQkFTRV9BVVRIX1NFUlZJQ0VfREVMRUdBVEU7XG5cbiAgICBjb25zdCBkZWxlZ2F0ZUF1dGhVc2VyU3RhdGVPYnMgPSBkZWxlZ2F0ZS5hdXRoVXNlclN0YXRlT2JzKHRoaXMpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gICAgaWYgKGRlbGVnYXRlLmZ1bGxDb250cm9sT2ZBdXRoVXNlclN0YXRlKSB7XG4gICAgICB0aGlzLmF1dGhVc2VyU3RhdGUkID0gZGVsZWdhdGVBdXRoVXNlclN0YXRlT2JzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmF1dGhVc2VyU3RhdGUkID0gdGhpcy5fYXV0aFN0YXRlJC5waXBlKFxuICAgICAgICBtYXAoKHgpID0+IEJvb2xlYW4oeCkpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoeCwgeSkgPT4geCA9PT0geSksXG4gICAgICAgIHN3aXRjaE1hcCgoeDogYm9vbGVhbikgPT4ge1xuICAgICAgICAgIGlmICh4KSB7XG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGVBdXRoVXNlclN0YXRlT2JzO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoJ25vbmUnIGFzIEF1dGhVc2VyU3RhdGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5hdXRoUm9sZXMkID0gZGVsZWdhdGUuYXV0aFJvbGVzT2JzKHRoaXMpO1xuICAgIHRoaXMuaXNPbmJvYXJkZWQkID0gZGVsZWdhdGUuaXNPbmJvYXJkZWQodGhpcyk7XG4gICAgdGhpcy5fYXV0aFJvbGVDbGFpbXNTZXJ2aWNlID0gZGVsZWdhdGUuYXV0aFJvbGVDbGFpbXNTZXJ2aWNlO1xuICAgIHRoaXMuaXNBZG1pbkluQXV0aFJvbGVTZXQgPSBkZWxlZ2F0ZS5pc0FkbWluSW5BdXRoUm9sZVNldDtcbiAgfVxuXG4gIGFzeW5jIHJlZnJlc2hUb2tlbigpOiBQcm9taXNlPElkVG9rZW5SZXN1bHQ+IHtcbiAgICBjb25zdCB1c2VyID0gdGhpcy5maXJlYmFzZUF1dGguY3VycmVudFVzZXI7XG5cbiAgICBpZiAoIXVzZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbm8gdXNlciB0byByZWZyZXNoIHRoZSB0b2tlbiBmb3IuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVzZXIuZ2V0SWRUb2tlblJlc3VsdCh0cnVlKTtcbiAgfVxuXG4gIHJvbGVzRm9yQ2xhaW1zPFQgZXh0ZW5kcyBBdXRoQ2xhaW1zT2JqZWN0ID0gQXV0aENsYWltc09iamVjdD4oY2xhaW1zOiBBdXRoQ2xhaW1zPFQ+KTogQXV0aFJvbGVTZXQge1xuICAgIGxldCByZXN1bHQ6IEF1dGhSb2xlU2V0O1xuXG4gICAgaWYgKHRoaXMuX2F1dGhSb2xlQ2xhaW1zU2VydmljZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2F1dGhSb2xlQ2xhaW1zU2VydmljZS50b1JvbGVzKGNsYWltcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybignRGJ4RmlyZWJhc2VBdXRoU2VydmljZTogcm9sZXNGb3JDbGFpbXMgY2FsbGVkIHdpdGggbm8gYXV0aFJvbGVDbGFpbXNTZXJ2aWNlIHByb3ZpZGVkLiBBbiBlbXB0eSBzZXQgaXMgcmV0dXJuZWQuJyk7XG4gICAgICByZXN1bHQgPSBuZXcgU2V0KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGdldEF1dGhDb250ZXh0SW5mbygpOiBQcm9taXNlPE1heWJlPERieEZpcmViYXNlQXV0aENvbnRleHRJbmZvPj4ge1xuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLmF1dGhVc2VyJCkudGhlbigodXNlcikgPT4gdGhpcy5sb2FkQXV0aENvbnRleHRJbmZvRm9yVXNlcih1c2VyKSk7XG4gIH1cblxuICBhc3luYyBsb2FkQXV0aENvbnRleHRJbmZvRm9yVXNlcih1c2VyOiBNYXliZTxVc2VyPik6IFByb21pc2U8TWF5YmU8RGJ4RmlyZWJhc2VBdXRoQ29udGV4dEluZm8+PiB7XG4gICAgbGV0IHJlc3VsdDogTWF5YmU8RGJ4RmlyZWJhc2VBdXRoQ29udGV4dEluZm8+O1xuXG4gICAgaWYgKHVzZXIpIHtcbiAgICAgIGNvbnN0IGp3dFRva2VuOiBJZFRva2VuUmVzdWx0ID0gYXdhaXQgdXNlci5nZXRJZFRva2VuUmVzdWx0KCk7XG4gICAgICByZXN1bHQgPSBuZXcgRGJ4RmlyZWJhc2VBdXRoQ29udGV4dEluZm8odGhpcywgdXNlciwgand0VG9rZW4pO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBsb2dJbldpdGhHb29nbGUoKTogUHJvbWlzZTxVc2VyQ3JlZGVudGlhbD4ge1xuICAgIHJldHVybiB0aGlzLmxvZ0luV2l0aFBvcHVwKG5ldyBHb29nbGVBdXRoUHJvdmlkZXIoKSk7XG4gIH1cblxuICBsb2dJbldpdGhGYWNlYm9vaygpOiBQcm9taXNlPFVzZXJDcmVkZW50aWFsPiB7XG4gICAgcmV0dXJuIHRoaXMubG9nSW5XaXRoUG9wdXAobmV3IEZhY2Vib29rQXV0aFByb3ZpZGVyKCkpO1xuICB9XG5cbiAgbG9nSW5XaXRoVHdpdHRlcigpOiBQcm9taXNlPFVzZXJDcmVkZW50aWFsPiB7XG4gICAgcmV0dXJuIHRoaXMubG9nSW5XaXRoUG9wdXAobmV3IFR3aXR0ZXJBdXRoUHJvdmlkZXIoKSk7XG4gIH1cblxuICBsb2dJbldpdGhHaXRodWIoKTogUHJvbWlzZTxVc2VyQ3JlZGVudGlhbD4ge1xuICAgIHJldHVybiB0aGlzLmxvZ0luV2l0aFBvcHVwKG5ldyBHaXRodWJBdXRoUHJvdmlkZXIoKSk7XG4gIH1cblxuICBsb2dJbldpdGhBcHBsZSgpOiBQcm9taXNlPFVzZXJDcmVkZW50aWFsPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd0b2RvJyk7XG4gIH1cblxuICBsb2dJbldpdGhNaWNyb3NvZnQoKTogUHJvbWlzZTxVc2VyQ3JlZGVudGlhbD4ge1xuICAgIC8vIHJldHVybiB0aGlzLmxvZ0luV2l0aFBvcHVwKG5ldyBNaWNyb3NvZnRBdXRoUHJvdmlkZXIoKSk7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd0b2RvJyk7XG4gIH1cblxuICBsb2dJbldpdGhQaG9uZSgpOiBQcm9taXNlPFVzZXJDcmVkZW50aWFsPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd0b2RvJyk7XG4gICAgLy8gcmV0dXJuIHNpZ25JbldpdGhQaG9uZU51bWJlcih0aGlzLmZpcmViYXNlQXV0aCwgKVxuICB9XG5cbiAgbG9nSW5XaXRoUG9wdXAocHJvdmlkZXI6IEF1dGhQcm92aWRlciwgcmVzb2x2ZXI/OiBQb3B1cFJlZGlyZWN0UmVzb2x2ZXIpOiBQcm9taXNlPFVzZXJDcmVkZW50aWFsPiB7XG4gICAgcmV0dXJuIHNpZ25JbldpdGhQb3B1cCh0aGlzLmZpcmViYXNlQXV0aCwgcHJvdmlkZXIsIHJlc29sdmVyKTtcbiAgfVxuXG4gIHJlZ2lzdGVyV2l0aEVtYWlsQW5kUGFzc3dvcmQoZW1haWw6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyk6IFByb21pc2U8VXNlckNyZWRlbnRpYWw+IHtcbiAgICByZXR1cm4gY3JlYXRlVXNlcldpdGhFbWFpbEFuZFBhc3N3b3JkKHRoaXMuZmlyZWJhc2VBdXRoLCBlbWFpbCwgcGFzc3dvcmQpO1xuICB9XG5cbiAgc2VuZFBhc3N3b3JkUmVzZXRFbWFpbChlbWFpbDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHNlbmRQYXNzd29yZFJlc2V0RW1haWwodGhpcy5maXJlYmFzZUF1dGgsIGVtYWlsKTtcbiAgfVxuXG4gIGxvZ0luV2l0aEVtYWlsQW5kUGFzc3dvcmQoZW1haWw6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyk6IFByb21pc2U8VXNlckNyZWRlbnRpYWw+IHtcbiAgICByZXR1cm4gc2lnbkluV2l0aEVtYWlsQW5kUGFzc3dvcmQodGhpcy5maXJlYmFzZUF1dGgsIGVtYWlsLCBwYXNzd29yZCk7XG4gIH1cblxuICBsb2dJbkFzQW5vbnltb3VzKCk6IFByb21pc2U8VXNlckNyZWRlbnRpYWw+IHtcbiAgICByZXR1cm4gc2lnbkluQW5vbnltb3VzbHkodGhpcy5maXJlYmFzZUF1dGgpO1xuICB9XG5cbiAgbG9nT3V0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmZpcmViYXNlQXV0aC5zaWduT3V0KCk7XG4gIH1cbn1cblxuLyoqXG4gKiBGaXJlYmFzZUF1dGhDb250ZXh0SW5mbyBpbXBsZW1lbnRhdGlvbiBmcm9tIERieEZpcmViYXNlQXV0aFNlcnZpY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYnhGaXJlYmFzZUF1dGhDb250ZXh0SW5mbyBpbXBsZW1lbnRzIEZpcmViYXNlQXV0aENvbnRleHRJbmZvIHtcbiAgcHJpdmF0ZSBfdG9rZW4gPSBjYWNoZWRHZXR0ZXIoKCkgPT4gZmlyZWJhc2VBdXRoVG9rZW5Gcm9tVXNlcih0aGlzLnVzZXIpKTtcbiAgcHJpdmF0ZSBfcm9sZXMgPSBjYWNoZWRHZXR0ZXIoKCkgPT4gdGhpcy5zZXJ2aWNlLnJvbGVzRm9yQ2xhaW1zKHRoaXMuZ2V0Q2xhaW1zKCkpKTtcbiAgcHJpdmF0ZSBfaXNBZG1pbiA9IGNhY2hlZEdldHRlcigoKSA9PiB0aGlzLnNlcnZpY2UuaXNBZG1pbkluQXV0aFJvbGVTZXQodGhpcy5fcm9sZXMoKSkpO1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IHNlcnZpY2U6IERieEZpcmViYXNlQXV0aFNlcnZpY2UsIHJlYWRvbmx5IHVzZXI6IFVzZXIsIHJlYWRvbmx5IGp3dFRva2VuOiBJZFRva2VuUmVzdWx0KSB7fVxuXG4gIGdldCB1aWQoKSB7XG4gICAgcmV0dXJuIHRoaXMudXNlci51aWQ7XG4gIH1cblxuICBpc0FkbWluKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0FkbWluKCk7XG4gIH1cblxuICBnZXRDbGFpbXM8VCBleHRlbmRzIEF1dGhDbGFpbXNPYmplY3QgPSBBdXRoQ2xhaW1zT2JqZWN0PigpOiBBdXRoQ2xhaW1zPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5qd3RUb2tlbi5jbGFpbXMgYXMgQXV0aENsYWltczxUPjtcbiAgfVxuXG4gIGdldEF1dGhSb2xlcygpOiBBdXRoUm9sZVNldCB7XG4gICAgcmV0dXJuIHRoaXMuX3JvbGVzKCk7XG4gIH1cblxuICBnZXQgdG9rZW4oKTogRmlyZWJhc2VBdXRoVG9rZW4ge1xuICAgIHJldHVybiB0aGlzLl90b2tlbigpO1xuICB9XG59XG4iXX0=
@@ -179,6 +179,9 @@ function readValueFromIdToken(dbxFirebaseAuthService, readBooleanFromIdToken, de
179
179
 
180
180
  // MARK: Delegate
181
181
  class DbxFirebaseAuthServiceDelegate {
182
+ constructor() {
183
+ this.fullControlOfAuthUserState = false;
184
+ }
182
185
  }
183
186
  const DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE = {
184
187
  authUserStateObs(dbxFirebaseAuthService) {
@@ -217,7 +220,20 @@ class DbxFirebaseAuthService {
217
220
  this.currentAuthContextInfo$ = this.currentAuthUser$.pipe(switchMap((x) => this.loadAuthContextInfoForUser(x)), shareReplay(1));
218
221
  this.authContextInfo$ = this.currentAuthContextInfo$.pipe(filterMaybe());
219
222
  delegate = delegate !== null && delegate !== void 0 ? delegate : DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE;
220
- this.authUserState$ = delegate.authUserStateObs(this).pipe(distinctUntilChanged(), shareReplay(1));
223
+ const delegateAuthUserStateObs = delegate.authUserStateObs(this).pipe(distinctUntilChanged(), shareReplay(1));
224
+ if (delegate.fullControlOfAuthUserState) {
225
+ this.authUserState$ = delegateAuthUserStateObs;
226
+ }
227
+ else {
228
+ this.authUserState$ = this._authState$.pipe(map((x) => Boolean(x)), distinctUntilChanged((x, y) => x === y), switchMap((x) => {
229
+ if (x) {
230
+ return delegateAuthUserStateObs;
231
+ }
232
+ else {
233
+ return of('none');
234
+ }
235
+ }));
236
+ }
221
237
  this.authRoles$ = delegate.authRolesObs(this);
222
238
  this.isOnboarded$ = delegate.isOnboarded(this);
223
239
  this._authRoleClaimsService = delegate.authRoleClaimsService;