@dereekb/dbx-firebase 8.12.4 → 8.12.7

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.
@@ -1,39 +1,46 @@
1
+ import { asObservable } from '@dereekb/rxjs';
1
2
  import { of, shareReplay, switchMap } from 'rxjs';
2
3
  /**
3
- * Derives a user state from the input firebase auth service.
4
+ * Creates a AuthUserStateObsFunction that derives a user state from the input firebase auth service, and the optional stateForLoggedInUser input
4
5
  *
5
- * @param dbxFirebaseAuthService
6
6
  * @param stateForLoggedInUser Optional function that returns an observable for the user's state if they are logged in and not an anonymous user.
7
7
  * @returns
8
8
  */
9
- export function authUserStateFromFirebaseAuthService(dbxFirebaseAuthService, stateForLoggedInUser = () => of('user')) {
10
- return dbxFirebaseAuthService.hasAuthUser$.pipe(switchMap((hasUser) => {
11
- let obs;
12
- if (hasUser) {
13
- obs = dbxFirebaseAuthService.isAnonymousUser$.pipe(switchMap((isAnon) => (isAnon ? of('anon') : stateForLoggedInUser(dbxFirebaseAuthService))));
14
- }
15
- else {
16
- obs = of('none');
17
- }
18
- return obs;
19
- }), shareReplay(1));
9
+ export function authUserStateFromFirebaseAuthServiceFunction(stateForLoggedInUser = () => of('user')) {
10
+ return (dbxFirebaseAuthService) => {
11
+ return dbxFirebaseAuthService.hasAuthUser$.pipe(switchMap((hasUser) => {
12
+ let obs;
13
+ if (hasUser) {
14
+ obs = dbxFirebaseAuthService.isAnonymousUser$.pipe(switchMap((isAnon) => (isAnon ? of('anon') : stateForLoggedInUser(dbxFirebaseAuthService))));
15
+ }
16
+ else {
17
+ obs = of('none');
18
+ }
19
+ return obs;
20
+ }), shareReplay(1));
21
+ };
22
+ }
23
+ export function stateFromTokenForLoggedInUserFunction(stateFromToken, defaultState = 'user') {
24
+ return (dbxFirebaseAuthService) => {
25
+ return readValueFromIdToken(dbxFirebaseAuthService, stateFromToken, defaultState);
26
+ };
20
27
  }
21
28
  /**
22
29
  * Convenience function to read a value from an IdTokenResult off of the current user.
23
30
  *
24
31
  * @param dbxFirebaseAuthService
25
- * @param readBooleanFromIdToken
32
+ * @param readValueFromIdToken
26
33
  * @param defaultValue
27
34
  * @returns
28
35
  */
29
- export function readValueFromIdToken(dbxFirebaseAuthService, readBooleanFromIdToken, defaultValue) {
36
+ export function readValueFromIdToken(dbxFirebaseAuthService, readValueFromIdToken, defaultValue) {
30
37
  return dbxFirebaseAuthService.currentAuthUserInfo$.pipe(switchMap((x) => {
31
38
  if (x) {
32
- return dbxFirebaseAuthService.idTokenResult$.pipe(switchMap((x) => readBooleanFromIdToken(x)));
39
+ return dbxFirebaseAuthService.idTokenResult$.pipe(switchMap((x) => asObservable(readValueFromIdToken(x))));
33
40
  }
34
41
  else {
35
42
  return of(defaultValue);
36
43
  }
37
44
  }));
38
45
  }
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZWJhc2UuYXV0aC5yeGpzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvYXV0aC9zZXJ2aWNlL2ZpcmViYXNlLmF1dGgucnhqcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQWMsRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHOUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLG9DQUFvQyxDQUFDLHNCQUE4QyxFQUFFLHVCQUFzRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDO0lBQ3pOLE9BQU8sc0JBQXNCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDN0MsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDcEIsSUFBSSxHQUE4QixDQUFDO1FBRW5DLElBQUksT0FBTyxFQUFFO1lBQ1gsR0FBRyxHQUFHLHNCQUFzQixDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2xLO2FBQU07WUFDTCxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2xCO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLENBQUMsRUFDRixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFJLHNCQUE4QyxFQUFFLHNCQUFpRSxFQUFFLFlBQWU7SUFDeEssT0FBTyxzQkFBc0IsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQ3JELFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ2QsSUFBSSxDQUFDLEVBQUU7WUFDTCxPQUFPLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDaEc7YUFBTTtZQUNMLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdXRoVXNlclN0YXRlIH0gZnJvbSAnQGRlcmVla2IvZGJ4LWNvcmUnO1xuaW1wb3J0IHsgSWRUb2tlblJlc3VsdCB9IGZyb20gJ2ZpcmViYXNlL2F1dGgnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERieEZpcmViYXNlQXV0aFNlcnZpY2UgfSBmcm9tICcuL2ZpcmViYXNlLmF1dGguc2VydmljZSc7XG5cbi8qKlxuICogRGVyaXZlcyBhIHVzZXIgc3RhdGUgZnJvbSB0aGUgaW5wdXQgZmlyZWJhc2UgYXV0aCBzZXJ2aWNlLlxuICpcbiAqIEBwYXJhbSBkYnhGaXJlYmFzZUF1dGhTZXJ2aWNlXG4gKiBAcGFyYW0gc3RhdGVGb3JMb2dnZWRJblVzZXIgT3B0aW9uYWwgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIG9ic2VydmFibGUgZm9yIHRoZSB1c2VyJ3Mgc3RhdGUgaWYgdGhleSBhcmUgbG9nZ2VkIGluIGFuZCBub3QgYW4gYW5vbnltb3VzIHVzZXIuXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gYXV0aFVzZXJTdGF0ZUZyb21GaXJlYmFzZUF1dGhTZXJ2aWNlKGRieEZpcmViYXNlQXV0aFNlcnZpY2U6IERieEZpcmViYXNlQXV0aFNlcnZpY2UsIHN0YXRlRm9yTG9nZ2VkSW5Vc2VyOiAoZGJ4RmlyZWJhc2VBdXRoU2VydmljZTogRGJ4RmlyZWJhc2VBdXRoU2VydmljZSkgPT4gT2JzZXJ2YWJsZTxBdXRoVXNlclN0YXRlPiA9ICgpID0+IG9mKCd1c2VyJykpOiBPYnNlcnZhYmxlPEF1dGhVc2VyU3RhdGU+IHtcbiAgcmV0dXJuIGRieEZpcmViYXNlQXV0aFNlcnZpY2UuaGFzQXV0aFVzZXIkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChoYXNVc2VyKSA9PiB7XG4gICAgICBsZXQgb2JzOiBPYnNlcnZhYmxlPEF1dGhVc2VyU3RhdGU+O1xuXG4gICAgICBpZiAoaGFzVXNlcikge1xuICAgICAgICBvYnMgPSBkYnhGaXJlYmFzZUF1dGhTZXJ2aWNlLmlzQW5vbnltb3VzVXNlciQucGlwZShzd2l0Y2hNYXAoKGlzQW5vbikgPT4gKGlzQW5vbiA/IG9mKCdhbm9uJyBhcyBBdXRoVXNlclN0YXRlKSA6IHN0YXRlRm9yTG9nZ2VkSW5Vc2VyKGRieEZpcmViYXNlQXV0aFNlcnZpY2UpKSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JzID0gb2YoJ25vbmUnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9icztcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xufVxuXG4vKipcbiAqIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIHJlYWQgYSB2YWx1ZSBmcm9tIGFuIElkVG9rZW5SZXN1bHQgb2ZmIG9mIHRoZSBjdXJyZW50IHVzZXIuXG4gKlxuICogQHBhcmFtIGRieEZpcmViYXNlQXV0aFNlcnZpY2VcbiAqIEBwYXJhbSByZWFkQm9vbGVhbkZyb21JZFRva2VuXG4gKiBAcGFyYW0gZGVmYXVsdFZhbHVlXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZFZhbHVlRnJvbUlkVG9rZW48VD4oZGJ4RmlyZWJhc2VBdXRoU2VydmljZTogRGJ4RmlyZWJhc2VBdXRoU2VydmljZSwgcmVhZEJvb2xlYW5Gcm9tSWRUb2tlbjogKGlkVG9rZW46IElkVG9rZW5SZXN1bHQpID0+IE9ic2VydmFibGU8VD4sIGRlZmF1bHRWYWx1ZTogVCk6IE9ic2VydmFibGU8VD4ge1xuICByZXR1cm4gZGJ4RmlyZWJhc2VBdXRoU2VydmljZS5jdXJyZW50QXV0aFVzZXJJbmZvJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoeCkgPT4ge1xuICAgICAgaWYgKHgpIHtcbiAgICAgICAgcmV0dXJuIGRieEZpcmViYXNlQXV0aFNlcnZpY2UuaWRUb2tlblJlc3VsdCQucGlwZShzd2l0Y2hNYXAoKHgpID0+IHJlYWRCb29sZWFuRnJvbUlkVG9rZW4oeCkpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBvZihkZWZhdWx0VmFsdWUpO1xuICAgICAgfVxuICAgIH0pXG4gICk7XG59XG4iXX0=
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZWJhc2UuYXV0aC5yeGpzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvYXV0aC9zZXJ2aWNlL2ZpcmViYXNlLmF1dGgucnhqcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUVoRSxPQUFPLEVBQWMsRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHOUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsNENBQTRDLENBQUMsdUJBQWlELEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDNUgsT0FBTyxDQUFDLHNCQUE4QyxFQUFFLEVBQUU7UUFDeEQsT0FBTyxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUM3QyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNwQixJQUFJLEdBQThCLENBQUM7WUFFbkMsSUFBSSxPQUFPLEVBQUU7Z0JBQ1gsR0FBRyxHQUFHLHNCQUFzQixDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2xLO2lCQUFNO2dCQUNMLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDbEI7WUFFRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsQ0FBQyxFQUNGLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUlELE1BQU0sVUFBVSxxQ0FBcUMsQ0FBQyxjQUFzQyxFQUFFLGVBQThCLE1BQU07SUFDaEksT0FBTyxDQUFDLHNCQUE4QyxFQUFFLEVBQUU7UUFDeEQsT0FBTyxvQkFBb0IsQ0FBZ0Isc0JBQXNCLEVBQUUsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ25HLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFJLHNCQUE4QyxFQUFFLG9CQUFzRSxFQUFFLFlBQWU7SUFDN0ssT0FBTyxzQkFBc0IsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQ3JELFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ2QsSUFBSSxDQUFDLEVBQUU7WUFDTCxPQUFPLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDNUc7YUFBTTtZQUNMLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdXRoVXNlclN0YXRlIH0gZnJvbSAnQGRlcmVla2IvZGJ4LWNvcmUnO1xuaW1wb3J0IHsgYXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlT3JWYWx1ZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgSWRUb2tlblJlc3VsdCB9IGZyb20gJ2ZpcmViYXNlL2F1dGgnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEF1dGhVc2VyU3RhdGVPYnNGdW5jdGlvbiwgRGJ4RmlyZWJhc2VBdXRoU2VydmljZSB9IGZyb20gJy4vZmlyZWJhc2UuYXV0aC5zZXJ2aWNlJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgQXV0aFVzZXJTdGF0ZU9ic0Z1bmN0aW9uIHRoYXQgZGVyaXZlcyBhIHVzZXIgc3RhdGUgZnJvbSB0aGUgaW5wdXQgZmlyZWJhc2UgYXV0aCBzZXJ2aWNlLCBhbmQgdGhlIG9wdGlvbmFsIHN0YXRlRm9yTG9nZ2VkSW5Vc2VyIGlucHV0XG4gKlxuICogQHBhcmFtIHN0YXRlRm9yTG9nZ2VkSW5Vc2VyIE9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBvYnNlcnZhYmxlIGZvciB0aGUgdXNlcidzIHN0YXRlIGlmIHRoZXkgYXJlIGxvZ2dlZCBpbiBhbmQgbm90IGFuIGFub255bW91cyB1c2VyLlxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGF1dGhVc2VyU3RhdGVGcm9tRmlyZWJhc2VBdXRoU2VydmljZUZ1bmN0aW9uKHN0YXRlRm9yTG9nZ2VkSW5Vc2VyOiBBdXRoVXNlclN0YXRlT2JzRnVuY3Rpb24gPSAoKSA9PiBvZigndXNlcicpKTogQXV0aFVzZXJTdGF0ZU9ic0Z1bmN0aW9uIHtcbiAgcmV0dXJuIChkYnhGaXJlYmFzZUF1dGhTZXJ2aWNlOiBEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlKSA9PiB7XG4gICAgcmV0dXJuIGRieEZpcmViYXNlQXV0aFNlcnZpY2UuaGFzQXV0aFVzZXIkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGhhc1VzZXIpID0+IHtcbiAgICAgICAgbGV0IG9iczogT2JzZXJ2YWJsZTxBdXRoVXNlclN0YXRlPjtcblxuICAgICAgICBpZiAoaGFzVXNlcikge1xuICAgICAgICAgIG9icyA9IGRieEZpcmViYXNlQXV0aFNlcnZpY2UuaXNBbm9ueW1vdXNVc2VyJC5waXBlKHN3aXRjaE1hcCgoaXNBbm9uKSA9PiAoaXNBbm9uID8gb2YoJ2Fub24nIGFzIEF1dGhVc2VyU3RhdGUpIDogc3RhdGVGb3JMb2dnZWRJblVzZXIoZGJ4RmlyZWJhc2VBdXRoU2VydmljZSkpKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2JzID0gb2YoJ25vbmUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvYnM7XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKTtcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgU3RhdGVGcm9tVG9rZW5GdW5jdGlvbiA9ICh0b2tlbjogSWRUb2tlblJlc3VsdCkgPT4gT2JzZXJ2YWJsZU9yVmFsdWU8QXV0aFVzZXJTdGF0ZT47XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZUZyb21Ub2tlbkZvckxvZ2dlZEluVXNlckZ1bmN0aW9uKHN0YXRlRnJvbVRva2VuOiBTdGF0ZUZyb21Ub2tlbkZ1bmN0aW9uLCBkZWZhdWx0U3RhdGU6IEF1dGhVc2VyU3RhdGUgPSAndXNlcicpOiBBdXRoVXNlclN0YXRlT2JzRnVuY3Rpb24ge1xuICByZXR1cm4gKGRieEZpcmViYXNlQXV0aFNlcnZpY2U6IERieEZpcmViYXNlQXV0aFNlcnZpY2UpID0+IHtcbiAgICByZXR1cm4gcmVhZFZhbHVlRnJvbUlkVG9rZW48QXV0aFVzZXJTdGF0ZT4oZGJ4RmlyZWJhc2VBdXRoU2VydmljZSwgc3RhdGVGcm9tVG9rZW4sIGRlZmF1bHRTdGF0ZSk7XG4gIH07XG59XG5cbi8qKlxuICogQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gcmVhZCBhIHZhbHVlIGZyb20gYW4gSWRUb2tlblJlc3VsdCBvZmYgb2YgdGhlIGN1cnJlbnQgdXNlci5cbiAqXG4gKiBAcGFyYW0gZGJ4RmlyZWJhc2VBdXRoU2VydmljZVxuICogQHBhcmFtIHJlYWRWYWx1ZUZyb21JZFRva2VuXG4gKiBAcGFyYW0gZGVmYXVsdFZhbHVlXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZFZhbHVlRnJvbUlkVG9rZW48VD4oZGJ4RmlyZWJhc2VBdXRoU2VydmljZTogRGJ4RmlyZWJhc2VBdXRoU2VydmljZSwgcmVhZFZhbHVlRnJvbUlkVG9rZW46IChpZFRva2VuOiBJZFRva2VuUmVzdWx0KSA9PiBPYnNlcnZhYmxlT3JWYWx1ZTxUPiwgZGVmYXVsdFZhbHVlOiBUKTogT2JzZXJ2YWJsZTxUPiB7XG4gIHJldHVybiBkYnhGaXJlYmFzZUF1dGhTZXJ2aWNlLmN1cnJlbnRBdXRoVXNlckluZm8kLnBpcGUoXG4gICAgc3dpdGNoTWFwKCh4KSA9PiB7XG4gICAgICBpZiAoeCkge1xuICAgICAgICByZXR1cm4gZGJ4RmlyZWJhc2VBdXRoU2VydmljZS5pZFRva2VuUmVzdWx0JC5waXBlKHN3aXRjaE1hcCgoeCkgPT4gYXNPYnNlcnZhYmxlKHJlYWRWYWx1ZUZyb21JZFRva2VuKHgpKSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG9mKGRlZmF1bHRWYWx1ZSk7XG4gICAgICB9XG4gICAgfSlcbiAgKTtcbn1cbiJdfQ==
@@ -1,5 +1,6 @@
1
- import { addToSetCopy } from '@dereekb/util';
1
+ import { addToSetCopy, filterMaybeValues } from '@dereekb/util';
2
2
  import { map, switchMap } from 'rxjs';
3
+ import { authUserStateFromFirebaseAuthServiceFunction, stateFromTokenForLoggedInUserFunction } from './firebase.auth.rxjs';
3
4
  import { DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE } from './firebase.auth.service';
4
5
  export function authRolesObsWithClaimsService(config) {
5
6
  const { addAuthUserStateToRoles: addAuthUserState, claimsService } = config;
@@ -12,12 +13,16 @@ export function authRolesObsWithClaimsService(config) {
12
13
  };
13
14
  }
14
15
  export function defaultDbxFirebaseAuthServiceDelegateWithClaimsService(config) {
16
+ if (filterMaybeValues([config.stateForLoggedInUser, config.stateForLoggedInUserToken, config.authUserStateObs]).length > 1) {
17
+ throw new Error('Cannot specify a combination of "stateForLoggedInUserToken", "stateForLoggedInUser" and "authUserStateObs". Must specify one at max.');
18
+ }
19
+ const authUserStateObs = config.authUserStateObs ?? authUserStateFromFirebaseAuthServiceFunction(config.stateForLoggedInUserToken ? stateFromTokenForLoggedInUserFunction(config.stateForLoggedInUserToken) : config.stateForLoggedInUser);
15
20
  return {
16
- authUserStateObs: DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE.authUserStateObs,
21
+ authUserStateObs,
22
+ isAdminInAuthRoleSet: config.isAdminInAuthRoleSet ?? DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE.isAdminInAuthRoleSet,
17
23
  authRolesObs: authRolesObsWithClaimsService(config),
18
24
  isOnboarded: DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE.isOnboarded,
19
- isAdminInAuthRoleSet: config.isAdminInAuthRoleSet ?? DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE.isAdminInAuthRoleSet,
20
25
  authRoleClaimsService: config.claimsService
21
26
  };
22
27
  }
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZWJhc2UuYXV0aC5zZXJ2aWNlLmRlbGVnYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvYXV0aC9zZXJ2aWNlL2ZpcmViYXNlLmF1dGguc2VydmljZS5kZWxlZ2F0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFvRSxNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQUUsR0FBRyxFQUFjLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQTBELDBDQUEwQyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFVN0ksTUFBTSxVQUFVLDZCQUE2QixDQUE2QixNQUE4QztJQUN0SCxNQUFNLEVBQUUsdUJBQXVCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRTVFLE9BQU8sQ0FBQyxzQkFBOEMsRUFBMkIsRUFBRTtRQUNqRixJQUFJLEdBQUcsR0FBRyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVuSCxJQUFJLGdCQUFnQixFQUFFO1lBQ3BCLEdBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQXdCLEVBQUUsRUFBRSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2pLO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLENBQUM7QUFDSixDQUFDO0FBSUQsTUFBTSxVQUFVLHNEQUFzRCxDQUE2QixNQUF1RTtJQUN4SyxPQUFPO1FBQ0wsZ0JBQWdCLEVBQUUsMENBQTBDLENBQUMsZ0JBQWdCO1FBQzdFLFlBQVksRUFBRSw2QkFBNkIsQ0FBQyxNQUFNLENBQUM7UUFDbkQsV0FBVyxFQUFFLDBDQUEwQyxDQUFDLFdBQVc7UUFDbkUsb0JBQW9CLEVBQUUsTUFBTSxDQUFDLG9CQUFvQixJQUFJLDBDQUEwQyxDQUFDLG9CQUFvQjtRQUNwSCxxQkFBcUIsRUFBRSxNQUFNLENBQUMsYUFBbUU7S0FDbEcsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZGRUb1NldENvcHksIEF1dGhDbGFpbXMsIEF1dGhDbGFpbXNPYmplY3QsIEF1dGhSb2xlQ2xhaW1zU2VydmljZSwgQXV0aFJvbGVTZXQgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlLCBEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlRGVsZWdhdGUsIERFRkFVTFRfREJYX0ZJUkVCQVNFX0FVVEhfU0VSVklDRV9ERUxFR0FURSB9IGZyb20gJy4vZmlyZWJhc2UuYXV0aC5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBBdXRoUm9sZXNPYnNXaXRoQ2xhaW1zU2VydmljZUNvbmZpZzxUIGV4dGVuZHMgQXV0aENsYWltc09iamVjdD4gZXh0ZW5kcyBQYXJ0aWFsPFBpY2s8RGJ4RmlyZWJhc2VBdXRoU2VydmljZURlbGVnYXRlLCAnaXNBZG1pbkluQXV0aFJvbGVTZXQnPj4ge1xuICByZWFkb25seSBjbGFpbXNTZXJ2aWNlOiBBdXRoUm9sZUNsYWltc1NlcnZpY2U8VD47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBhbHNvIGFkZCB0aGUgY3VycmVudCBBdXRoVXNlclN0YXRlIHZhbHVlIHRvIGRlY29kZWQgcm9sZXMuXG4gICAqL1xuICByZWFkb25seSBhZGRBdXRoVXNlclN0YXRlVG9Sb2xlcz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdXRoUm9sZXNPYnNXaXRoQ2xhaW1zU2VydmljZTxUIGV4dGVuZHMgQXV0aENsYWltc09iamVjdD4oY29uZmlnOiBBdXRoUm9sZXNPYnNXaXRoQ2xhaW1zU2VydmljZUNvbmZpZzxUPik6IChkYnhGaXJlYmFzZUF1dGhTZXJ2aWNlOiBEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlKSA9PiBPYnNlcnZhYmxlPEF1dGhSb2xlU2V0PiB7XG4gIGNvbnN0IHsgYWRkQXV0aFVzZXJTdGF0ZVRvUm9sZXM6IGFkZEF1dGhVc2VyU3RhdGUsIGNsYWltc1NlcnZpY2UgfSA9IGNvbmZpZztcblxuICByZXR1cm4gKGRieEZpcmViYXNlQXV0aFNlcnZpY2U6IERieEZpcmViYXNlQXV0aFNlcnZpY2UpOiBPYnNlcnZhYmxlPEF1dGhSb2xlU2V0PiA9PiB7XG4gICAgbGV0IG9icyA9IGRieEZpcmViYXNlQXV0aFNlcnZpY2UuaWRUb2tlblJlc3VsdCQucGlwZShtYXAoKHgpID0+IGNsYWltc1NlcnZpY2UudG9Sb2xlcyh4LmNsYWltcyBhcyBBdXRoQ2xhaW1zPFQ+KSkpO1xuXG4gICAgaWYgKGFkZEF1dGhVc2VyU3RhdGUpIHtcbiAgICAgIG9icyA9IG9icy5waXBlKHN3aXRjaE1hcCgoYXV0aFJvbGVTZXQ6IEF1dGhSb2xlU2V0KSA9PiBkYnhGaXJlYmFzZUF1dGhTZXJ2aWNlLmF1dGhVc2VyU3RhdGUkLnBpcGUobWFwKCh1c2VyU3RhdGUpID0+IGFkZFRvU2V0Q29weShhdXRoUm9sZVNldCwgW3VzZXJTdGF0ZV0pKSkpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb2JzO1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBEZWZhdWx0RGJ4RmlyZWJhc2VBdXRoU2VydmljZURlbGVnYXRlV2l0aENsYWltc1NlcnZpY2VDb25maWc8VCBleHRlbmRzIEF1dGhDbGFpbXNPYmplY3Q+ID0gQXV0aFJvbGVzT2JzV2l0aENsYWltc1NlcnZpY2VDb25maWc8VD47XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0RGJ4RmlyZWJhc2VBdXRoU2VydmljZURlbGVnYXRlV2l0aENsYWltc1NlcnZpY2U8VCBleHRlbmRzIEF1dGhDbGFpbXNPYmplY3Q+KGNvbmZpZzogRGVmYXVsdERieEZpcmViYXNlQXV0aFNlcnZpY2VEZWxlZ2F0ZVdpdGhDbGFpbXNTZXJ2aWNlQ29uZmlnPFQ+KTogRGJ4RmlyZWJhc2VBdXRoU2VydmljZURlbGVnYXRlIHtcbiAgcmV0dXJuIHtcbiAgICBhdXRoVXNlclN0YXRlT2JzOiBERUZBVUxUX0RCWF9GSVJFQkFTRV9BVVRIX1NFUlZJQ0VfREVMRUdBVEUuYXV0aFVzZXJTdGF0ZU9icyxcbiAgICBhdXRoUm9sZXNPYnM6IGF1dGhSb2xlc09ic1dpdGhDbGFpbXNTZXJ2aWNlKGNvbmZpZyksXG4gICAgaXNPbmJvYXJkZWQ6IERFRkFVTFRfREJYX0ZJUkVCQVNFX0FVVEhfU0VSVklDRV9ERUxFR0FURS5pc09uYm9hcmRlZCxcbiAgICBpc0FkbWluSW5BdXRoUm9sZVNldDogY29uZmlnLmlzQWRtaW5JbkF1dGhSb2xlU2V0ID8/IERFRkFVTFRfREJYX0ZJUkVCQVNFX0FVVEhfU0VSVklDRV9ERUxFR0FURS5pc0FkbWluSW5BdXRoUm9sZVNldCxcbiAgICBhdXRoUm9sZUNsYWltc1NlcnZpY2U6IGNvbmZpZy5jbGFpbXNTZXJ2aWNlIGFzIHVua25vd24gYXMgQXV0aFJvbGVDbGFpbXNTZXJ2aWNlPEF1dGhDbGFpbXNPYmplY3Q+XG4gIH07XG59XG4iXX0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZWJhc2UuYXV0aC5zZXJ2aWNlLmRlbGVnYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvYXV0aC9zZXJ2aWNlL2ZpcmViYXNlLmF1dGguc2VydmljZS5kZWxlZ2F0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFvRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSSxPQUFPLEVBQUUsR0FBRyxFQUFjLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsNENBQTRDLEVBQUUscUNBQXFDLEVBQTBCLE1BQU0sc0JBQXNCLENBQUM7QUFDbkosT0FBTyxFQUFvRiwwQ0FBMEMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBcUJ2SyxNQUFNLFVBQVUsNkJBQTZCLENBQTZCLE1BQThDO0lBQ3RILE1BQU0sRUFBRSx1QkFBdUIsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFFNUUsT0FBTyxDQUFDLHNCQUE4QyxFQUEyQixFQUFFO1FBQ2pGLElBQUksR0FBRyxHQUFHLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRW5ILElBQUksZ0JBQWdCLEVBQUU7WUFDcEIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBd0IsRUFBRSxFQUFFLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDaks7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsQ0FBQztBQUNKLENBQUM7QUFJRCxNQUFNLFVBQVUsc0RBQXNELENBQTZCLE1BQXVFO0lBQ3hLLElBQUksaUJBQWlCLENBQUMsQ0FBQyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsTUFBTSxDQUFDLHlCQUF5QixFQUFFLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUMxSCxNQUFNLElBQUksS0FBSyxDQUFDLHNJQUFzSSxDQUFDLENBQUM7S0FDeko7SUFFRCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSw0Q0FBNEMsQ0FBQyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLHFDQUFxQyxDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUUzTyxPQUFPO1FBQ0wsZ0JBQWdCO1FBQ2hCLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxvQkFBb0IsSUFBSSwwQ0FBMEMsQ0FBQyxvQkFBb0I7UUFDcEgsWUFBWSxFQUFFLDZCQUE2QixDQUFDLE1BQU0sQ0FBQztRQUNuRCxXQUFXLEVBQUUsMENBQTBDLENBQUMsV0FBVztRQUNuRSxxQkFBcUIsRUFBRSxNQUFNLENBQUMsYUFBbUU7S0FDbEcsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZGRUb1NldENvcHksIEF1dGhDbGFpbXMsIEF1dGhDbGFpbXNPYmplY3QsIEF1dGhSb2xlQ2xhaW1zU2VydmljZSwgQXV0aFJvbGVTZXQsIGZpbHRlck1heWJlVmFsdWVzIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBtYXAsIE9ic2VydmFibGUsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgYXV0aFVzZXJTdGF0ZUZyb21GaXJlYmFzZUF1dGhTZXJ2aWNlRnVuY3Rpb24sIHN0YXRlRnJvbVRva2VuRm9yTG9nZ2VkSW5Vc2VyRnVuY3Rpb24sIFN0YXRlRnJvbVRva2VuRnVuY3Rpb24gfSBmcm9tICcuL2ZpcmViYXNlLmF1dGgucnhqcyc7XG5pbXBvcnQgeyBBdXRoVXNlclN0YXRlT2JzRnVuY3Rpb24sIERieEZpcmViYXNlQXV0aFNlcnZpY2UsIERieEZpcmViYXNlQXV0aFNlcnZpY2VEZWxlZ2F0ZSwgREVGQVVMVF9EQlhfRklSRUJBU0VfQVVUSF9TRVJWSUNFX0RFTEVHQVRFIH0gZnJvbSAnLi9maXJlYmFzZS5hdXRoLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhSb2xlc09ic1dpdGhDbGFpbXNTZXJ2aWNlQ29uZmlnPFQgZXh0ZW5kcyBBdXRoQ2xhaW1zT2JqZWN0PiBleHRlbmRzIFBhcnRpYWw8UGljazxEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlRGVsZWdhdGUsICdpc0FkbWluSW5BdXRoUm9sZVNldCcgfCAnYXV0aFVzZXJTdGF0ZU9icyc+PiB7XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIGFsdGVybmF0aXZlIHRvIHN1cHBseWluZyBhdXRoVXNlclN0YXRlT2JzLiBJcyBwYXNzZWQgdG8gYXV0aFVzZXJTdGF0ZUZyb21GaXJlYmFzZUF1dGhTZXJ2aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGVGb3JMb2dnZWRJblVzZXI/OiBBdXRoVXNlclN0YXRlT2JzRnVuY3Rpb247XG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIGFsdGVybmF0aXZlIHRvIHN1cHBseWluZyBhdXRoVXNlclN0YXRlT2JzLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGVGb3JMb2dnZWRJblVzZXJUb2tlbj86IFN0YXRlRnJvbVRva2VuRnVuY3Rpb247XG4gIC8qKlxuICAgKiBDbGFpbXMgc2VydmljZSB0byB1c2UgZm9yIGRlY29kaW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgY2xhaW1zU2VydmljZTogQXV0aFJvbGVDbGFpbXNTZXJ2aWNlPFQ+O1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gYWxzbyBhZGQgdGhlIGN1cnJlbnQgQXV0aFVzZXJTdGF0ZSB2YWx1ZSB0byBkZWNvZGVkIHJvbGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgYWRkQXV0aFVzZXJTdGF0ZVRvUm9sZXM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXV0aFJvbGVzT2JzV2l0aENsYWltc1NlcnZpY2U8VCBleHRlbmRzIEF1dGhDbGFpbXNPYmplY3Q+KGNvbmZpZzogQXV0aFJvbGVzT2JzV2l0aENsYWltc1NlcnZpY2VDb25maWc8VD4pOiAoZGJ4RmlyZWJhc2VBdXRoU2VydmljZTogRGJ4RmlyZWJhc2VBdXRoU2VydmljZSkgPT4gT2JzZXJ2YWJsZTxBdXRoUm9sZVNldD4ge1xuICBjb25zdCB7IGFkZEF1dGhVc2VyU3RhdGVUb1JvbGVzOiBhZGRBdXRoVXNlclN0YXRlLCBjbGFpbXNTZXJ2aWNlIH0gPSBjb25maWc7XG5cbiAgcmV0dXJuIChkYnhGaXJlYmFzZUF1dGhTZXJ2aWNlOiBEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlKTogT2JzZXJ2YWJsZTxBdXRoUm9sZVNldD4gPT4ge1xuICAgIGxldCBvYnMgPSBkYnhGaXJlYmFzZUF1dGhTZXJ2aWNlLmlkVG9rZW5SZXN1bHQkLnBpcGUobWFwKCh4KSA9PiBjbGFpbXNTZXJ2aWNlLnRvUm9sZXMoeC5jbGFpbXMgYXMgQXV0aENsYWltczxUPikpKTtcblxuICAgIGlmIChhZGRBdXRoVXNlclN0YXRlKSB7XG4gICAgICBvYnMgPSBvYnMucGlwZShzd2l0Y2hNYXAoKGF1dGhSb2xlU2V0OiBBdXRoUm9sZVNldCkgPT4gZGJ4RmlyZWJhc2VBdXRoU2VydmljZS5hdXRoVXNlclN0YXRlJC5waXBlKG1hcCgodXNlclN0YXRlKSA9PiBhZGRUb1NldENvcHkoYXV0aFJvbGVTZXQsIFt1c2VyU3RhdGVdKSkpKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9icztcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgRGVmYXVsdERieEZpcmViYXNlQXV0aFNlcnZpY2VEZWxlZ2F0ZVdpdGhDbGFpbXNTZXJ2aWNlQ29uZmlnPFQgZXh0ZW5kcyBBdXRoQ2xhaW1zT2JqZWN0PiA9IEF1dGhSb2xlc09ic1dpdGhDbGFpbXNTZXJ2aWNlQ29uZmlnPFQ+O1xuXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdERieEZpcmViYXNlQXV0aFNlcnZpY2VEZWxlZ2F0ZVdpdGhDbGFpbXNTZXJ2aWNlPFQgZXh0ZW5kcyBBdXRoQ2xhaW1zT2JqZWN0Pihjb25maWc6IERlZmF1bHREYnhGaXJlYmFzZUF1dGhTZXJ2aWNlRGVsZWdhdGVXaXRoQ2xhaW1zU2VydmljZUNvbmZpZzxUPik6IERieEZpcmViYXNlQXV0aFNlcnZpY2VEZWxlZ2F0ZSB7XG4gIGlmIChmaWx0ZXJNYXliZVZhbHVlcyhbY29uZmlnLnN0YXRlRm9yTG9nZ2VkSW5Vc2VyLCBjb25maWcuc3RhdGVGb3JMb2dnZWRJblVzZXJUb2tlbiwgY29uZmlnLmF1dGhVc2VyU3RhdGVPYnNdKS5sZW5ndGggPiAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3Qgc3BlY2lmeSBhIGNvbWJpbmF0aW9uIG9mIFwic3RhdGVGb3JMb2dnZWRJblVzZXJUb2tlblwiLCBcInN0YXRlRm9yTG9nZ2VkSW5Vc2VyXCIgYW5kIFwiYXV0aFVzZXJTdGF0ZU9ic1wiLiBNdXN0IHNwZWNpZnkgb25lIGF0IG1heC4nKTtcbiAgfVxuXG4gIGNvbnN0IGF1dGhVc2VyU3RhdGVPYnMgPSBjb25maWcuYXV0aFVzZXJTdGF0ZU9icyA/PyBhdXRoVXNlclN0YXRlRnJvbUZpcmViYXNlQXV0aFNlcnZpY2VGdW5jdGlvbihjb25maWcuc3RhdGVGb3JMb2dnZWRJblVzZXJUb2tlbiA/IHN0YXRlRnJvbVRva2VuRm9yTG9nZ2VkSW5Vc2VyRnVuY3Rpb24oY29uZmlnLnN0YXRlRm9yTG9nZ2VkSW5Vc2VyVG9rZW4pIDogY29uZmlnLnN0YXRlRm9yTG9nZ2VkSW5Vc2VyKTtcblxuICByZXR1cm4ge1xuICAgIGF1dGhVc2VyU3RhdGVPYnMsXG4gICAgaXNBZG1pbkluQXV0aFJvbGVTZXQ6IGNvbmZpZy5pc0FkbWluSW5BdXRoUm9sZVNldCA/PyBERUZBVUxUX0RCWF9GSVJFQkFTRV9BVVRIX1NFUlZJQ0VfREVMRUdBVEUuaXNBZG1pbkluQXV0aFJvbGVTZXQsXG4gICAgYXV0aFJvbGVzT2JzOiBhdXRoUm9sZXNPYnNXaXRoQ2xhaW1zU2VydmljZShjb25maWcpLFxuICAgIGlzT25ib2FyZGVkOiBERUZBVUxUX0RCWF9GSVJFQkFTRV9BVVRIX1NFUlZJQ0VfREVMRUdBVEUuaXNPbmJvYXJkZWQsXG4gICAgYXV0aFJvbGVDbGFpbXNTZXJ2aWNlOiBjb25maWcuY2xhaW1zU2VydmljZSBhcyB1bmtub3duIGFzIEF1dGhSb2xlQ2xhaW1zU2VydmljZTxBdXRoQ2xhaW1zT2JqZWN0PlxuICB9O1xufVxuIl19
@@ -1,21 +1,22 @@
1
1
  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
- import { Auth, authState, GoogleAuthProvider, signInWithPopup, signInAnonymously, signInWithEmailAndPassword, FacebookAuthProvider, GithubAuthProvider, TwitterAuthProvider, createUserWithEmailAndPassword } from '@angular/fire/auth';
5
- import { distinctUntilChanged, shareReplay, map, switchMap, firstValueFrom } from 'rxjs';
4
+ import { Auth, authState, idToken, GoogleAuthProvider, signInWithPopup, signInAnonymously, signInWithEmailAndPassword, FacebookAuthProvider, GithubAuthProvider, TwitterAuthProvider, createUserWithEmailAndPassword } from '@angular/fire/auth';
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';
9
- import { authUserStateFromFirebaseAuthService } from './firebase.auth.rxjs';
9
+ import { authUserStateFromFirebaseAuthServiceFunction } from './firebase.auth.rxjs';
10
10
  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
- authUserStateObs(dbxFirebaseAuthService) {
17
- return authUserStateFromFirebaseAuthService(dbxFirebaseAuthService);
18
- },
19
+ authUserStateObs: authUserStateFromFirebaseAuthServiceFunction(),
19
20
  authRolesObs(dbxFirebaseAuthService) {
20
21
  return dbxFirebaseAuthService.authUserState$.pipe(map((x) => (x === 'user' ? new Set(['user']) : new Set())));
21
22
  },
@@ -44,12 +45,27 @@ export class DbxFirebaseAuthService {
44
45
  this.onLogOut$ = loggedOutObsFromIsLoggedIn(this.isLoggedIn$);
45
46
  this.userIdentifier$ = this.currentAuthUser$.pipe(map((x) => authUserIdentifier(x?.uid)));
46
47
  this.uid$ = this.userIdentifier$;
47
- this.idTokenResult$ = this.authUser$.pipe(switchMap((x) => x.getIdTokenResult()));
48
+ this.currentIdTokenString$ = idToken(this.firebaseAuth).pipe(distinctUntilChanged());
49
+ this.idTokenString$ = this.currentIdTokenString$.pipe(filterMaybe());
50
+ this.idTokenResult$ = this.authUser$.pipe(switchMap((x) => this.idTokenString$.pipe(switchMap((y) => x.getIdTokenResult()))));
48
51
  this.claims$ = this.idTokenResult$.pipe(map((x) => x.claims));
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(distinctUntilChanged(), switchMap((x) => {
61
+ if (x != null) {
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZWJhc2UuYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvYXV0aC9zZXJ2aWNlL2ZpcmViYXNlLmF1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQWlDLDBCQUEwQixFQUFFLHlCQUF5QixFQUFzQixrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pLLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBb0Msa0JBQWtCLEVBQUUsZUFBZSxFQUF1QyxpQkFBaUIsRUFBRSwwQkFBMEIsRUFBa0Isb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4VSxPQUFPLEVBQUUsRUFBRSxFQUFjLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6RyxPQUFPLEVBQW9FLGVBQWUsRUFBRSxZQUFZLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDdkksT0FBTyxFQUFnQix3QkFBd0IsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUM1RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFFLDRDQUE0QyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7OztBQVFwRixpQkFBaUI7QUFDakIsTUFBTSxPQUFnQiw4QkFBOEI7SUFBcEQ7UUFDRSwrQkFBMEIsR0FBYSxLQUFLLENBQUM7SUFTL0Ms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QUErQixFQUFXLElBQVUsRUFBVyxRQUF1QjtRQUF0RixZQUFPLEdBQVAsT0FBTyxDQUF3QjtRQUFXLFNBQUksR0FBSixJQUFJLENBQU07UUFBVyxhQUFRLEdBQVIsUUFBUSxDQUFlO1FBSm5HLFdBQU0sR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDbEUsV0FBTSxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNFLGFBQVEsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXNCLENBQUM7SUFFL0csSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUN2QixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQXVCLENBQUM7SUFDL0MsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDdkIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmlsdGVyTWF5YmUsIGlzTm90LCB0aW1lb3V0U3RhcnRXaXRoIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aFVzZXJTdGF0ZSwgRGJ4QXV0aFNlcnZpY2UsIGxvZ2dlZE91dE9ic0Zyb21Jc0xvZ2dlZEluLCBsb2dnZWRJbk9ic0Zyb21Jc0xvZ2dlZEluLCBBdXRoVXNlcklkZW50aWZpZXIsIGF1dGhVc2VySWRlbnRpZmllciB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IEF1dGgsIGF1dGhTdGF0ZSwgaWRUb2tlbiwgVXNlciwgSWRUb2tlblJlc3VsdCwgUGFyc2VkVG9rZW4sIEdvb2dsZUF1dGhQcm92aWRlciwgc2lnbkluV2l0aFBvcHVwLCBBdXRoUHJvdmlkZXIsIFBvcHVwUmVkaXJlY3RSZXNvbHZlciwgc2lnbkluQW5vbnltb3VzbHksIHNpZ25JbldpdGhFbWFpbEFuZFBhc3N3b3JkLCBVc2VyQ3JlZGVudGlhbCwgRmFjZWJvb2tBdXRoUHJvdmlkZXIsIEdpdGh1YkF1dGhQcm92aWRlciwgVHdpdHRlckF1dGhQcm92aWRlciwgY3JlYXRlVXNlcldpdGhFbWFpbEFuZFBhc3N3b3JkIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9hdXRoJztcbmltcG9ydCB7IG9mLCBPYnNlcnZhYmxlLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc2hhcmVSZXBsYXksIG1hcCwgc3dpdGNoTWFwLCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXV0aENsYWltcywgQXV0aENsYWltc09iamVjdCwgQXV0aFJvbGVDbGFpbXNTZXJ2aWNlLCBBdXRoUm9sZVNldCwgQVVUSF9BRE1JTl9ST0xFLCBjYWNoZWRHZXR0ZXIsIE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBBdXRoVXNlckluZm8sIGF1dGhVc2VySW5mb0Zyb21BdXRoVXNlciwgZmlyZWJhc2VBdXRoVG9rZW5Gcm9tVXNlciB9IGZyb20gJy4uL2F1dGgnO1xuaW1wb3J0IHsgc2VuZFBhc3N3b3JkUmVzZXRFbWFpbCB9IGZyb20gJ2ZpcmViYXNlL2F1dGgnO1xuaW1wb3J0IHsgYXV0aFVzZXJTdGF0ZUZyb21GaXJlYmFzZUF1dGhTZXJ2aWNlRnVuY3Rpb24gfSBmcm9tICcuL2ZpcmViYXNlLmF1dGgucnhqcyc7XG5pbXBvcnQgeyBGaXJlYmFzZUF1dGhDb250ZXh0SW5mbywgRmlyZWJhc2VBdXRoVG9rZW4gfSBmcm9tICdAZGVyZWVrYi9maXJlYmFzZSc7XG5cbi8qKlxuICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHRoYXQgcmV0dXJucyB0aGUgc3RhdGUgb2YgdGhlXG4gKi9cbmV4cG9ydCB0eXBlIEF1dGhVc2VyU3RhdGVPYnNGdW5jdGlvbiA9IChkYnhGaXJlYmFzZUF1dGhTZXJ2aWNlOiBEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlKSA9PiBPYnNlcnZhYmxlPEF1dGhVc2VyU3RhdGU+O1xuXG4vLyBNQVJLOiBEZWxlZ2F0ZVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERieEZpcmViYXNlQXV0aFNlcnZpY2VEZWxlZ2F0ZSB7XG4gIGZ1bGxDb250cm9sT2ZBdXRoVXNlclN0YXRlPzogYm9vbGVhbiA9IGZhbHNlO1xuICBhYnN0cmFjdCBhdXRoVXNlclN0YXRlT2JzOiBBdXRoVXNlclN0YXRlT2JzRnVuY3Rpb247XG4gIGFic3RyYWN0IGF1dGhSb2xlc09icyhkYnhGaXJlYmFzZUF1dGhTZXJ2aWNlOiBEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlKTogT2JzZXJ2YWJsZTxBdXRoUm9sZVNldD47XG4gIGFic3RyYWN0IGlzT25ib2FyZGVkKGRieEZpcmViYXNlQXV0aFNlcnZpY2U6IERieEZpcmViYXNlQXV0aFNlcnZpY2UpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhlIGlucHV0IHJvbGVzIGltcGx5IHRoZSBhZG1pbiBwcml2aWxlZGdlcy5cbiAgICovXG4gIGFic3RyYWN0IGlzQWRtaW5JbkF1dGhSb2xlU2V0KGF1dGhSb2xlU2V0OiBBdXRoUm9sZVNldCk6IGJvb2xlYW47XG4gIGFic3RyYWN0IGF1dGhSb2xlQ2xhaW1zU2VydmljZT86IE1heWJlPEF1dGhSb2xlQ2xhaW1zU2VydmljZTxBdXRoQ2xhaW1zT2JqZWN0Pj47XG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0RCWF9GSVJFQkFTRV9BVVRIX1NFUlZJQ0VfREVMRUdBVEU6IERieEZpcmViYXNlQXV0aFNlcnZpY2VEZWxlZ2F0ZSA9IHtcbiAgYXV0aFVzZXJTdGF0ZU9iczogYXV0aFVzZXJTdGF0ZUZyb21GaXJlYmFzZUF1dGhTZXJ2aWNlRnVuY3Rpb24oKSxcbiAgYXV0aFJvbGVzT2JzKGRieEZpcmViYXNlQXV0aFNlcnZpY2U6IERieEZpcmViYXNlQXV0aFNlcnZpY2UpOiBPYnNlcnZhYmxlPEF1dGhSb2xlU2V0PiB7XG4gICAgcmV0dXJuIGRieEZpcmViYXNlQXV0aFNlcnZpY2UuYXV0aFVzZXJTdGF0ZSQucGlwZShtYXAoKHgpID0+ICh4ID09PSAndXNlcicgPyBuZXcgU2V0KFsndXNlciddKSA6IG5ldyBTZXQoKSkpKTtcbiAgfSxcbiAgaXNPbmJvYXJkZWQoZGJ4RmlyZWJhc2VBdXRoU2VydmljZTogRGJ4RmlyZWJhc2VBdXRoU2VydmljZSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBkYnhGaXJlYmFzZUF1dGhTZXJ2aWNlLmF1dGhVc2VyU3RhdGUkLnBpcGUobWFwKCh4KSA9PiB4ID09PSAndXNlcicpKTtcbiAgfSxcbiAgaXNBZG1pbkluQXV0aFJvbGVTZXQoYXV0aFJvbGVTZXQ6IEF1dGhSb2xlU2V0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGF1dGhSb2xlU2V0LmhhcyhBVVRIX0FETUlOX1JPTEUpO1xuICB9XG59O1xuXG4vLyBNQVJLOiBTZXJ2aWNlXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGJ4RmlyZWJhc2VBdXRoU2VydmljZSBpbXBsZW1lbnRzIERieEF1dGhTZXJ2aWNlIHtcbiAgcmVhZG9ubHkgX2F1dGhTdGF0ZSQ6IE9ic2VydmFibGU8TWF5YmU8VXNlcj4+ID0gYXV0aFN0YXRlKHRoaXMuZmlyZWJhc2VBdXRoKTtcblxuICByZWFkb25seSBjdXJyZW50QXV0aFVzZXIkOiBPYnNlcnZhYmxlPE1heWJlPFVzZXI+PiA9IHRoaXMuX2F1dGhTdGF0ZSQucGlwZSh0aW1lb3V0U3RhcnRXaXRoKG51bGwgYXMgTWF5YmU8VXNlcj4sIDEwMDApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgcmVhZG9ubHkgY3VycmVudEF1dGhVc2VySW5mbyQ6IE9ic2VydmFibGU8TWF5YmU8QXV0aFVzZXJJbmZvPj4gPSB0aGlzLmN1cnJlbnRBdXRoVXNlciQucGlwZShtYXAoKHgpID0+ICh4ID8gYXV0aFVzZXJJbmZvRnJvbUF1dGhVc2VyKHgpIDogdW5kZWZpbmVkKSkpO1xuXG4gIHJlYWRvbmx5IGF1dGhVc2VyJDogT2JzZXJ2YWJsZTxVc2VyPiA9IHRoaXMuY3VycmVudEF1dGhVc2VyJC5waXBlKGZpbHRlck1heWJlKCkpO1xuICByZWFkb25seSBhdXRoVXNlckluZm8kOiBPYnNlcnZhYmxlPEF1dGhVc2VySW5mbz4gPSB0aGlzLmF1dGhVc2VyJC5waXBlKG1hcChhdXRoVXNlckluZm9Gcm9tQXV0aFVzZXIpKTtcblxuICByZWFkb25seSBoYXNBdXRoVXNlciQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmN1cnJlbnRBdXRoVXNlciQucGlwZShcbiAgICBtYXAoKHgpID0+IEJvb2xlYW4oeCkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcbiAgcmVhZG9ubHkgaXNBbm9ueW1vdXNVc2VyJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuYXV0aFVzZXIkLnBpcGUoXG4gICAgbWFwKCh4KSA9PiB4LmlzQW5vbnltb3VzKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG4gIHJlYWRvbmx5IGlzTm90QW5vbnltb3VzVXNlciQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmlzQW5vbnltb3VzVXNlciQucGlwZShpc05vdCgpKTtcblxuICByZWFkb25seSBpc0xvZ2dlZEluJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuaGFzQXV0aFVzZXIkO1xuXG4gIHJlYWRvbmx5IGlzTm90TG9nZ2VkSW4kOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5pc0xvZ2dlZEluJC5waXBlKGlzTm90KCkpO1xuICByZWFkb25seSBvbkxvZ0luJDogT2JzZXJ2YWJsZTx2b2lkPiA9IGxvZ2dlZEluT2JzRnJvbUlzTG9nZ2VkSW4odGhpcy5pc0xvZ2dlZEluJCk7XG4gIHJlYWRvbmx5IG9uTG9nT3V0JDogT2JzZXJ2YWJsZTx2b2lkPiA9IGxvZ2dlZE91dE9ic0Zyb21Jc0xvZ2dlZEluKHRoaXMuaXNMb2dnZWRJbiQpO1xuICByZWFkb25seSB1c2VySWRlbnRpZmllciQ6IE9ic2VydmFibGU8QXV0aFVzZXJJZGVudGlmaWVyPiA9IHRoaXMuY3VycmVudEF1dGhVc2VyJC5waXBlKG1hcCgoeCkgPT4gYXV0aFVzZXJJZGVudGlmaWVyKHg/LnVpZCkpKTtcbiAgcmVhZG9ubHkgdWlkJDogT2JzZXJ2YWJsZTxBdXRoVXNlcklkZW50aWZpZXI+ID0gdGhpcy51c2VySWRlbnRpZmllciQ7XG5cbiAgcmVhZG9ubHkgY3VycmVudElkVG9rZW5TdHJpbmckOiBPYnNlcnZhYmxlPE1heWJlPHN0cmluZz4+ID0gaWRUb2tlbih0aGlzLmZpcmViYXNlQXV0aCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgcmVhZG9ubHkgaWRUb2tlblN0cmluZyQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IHRoaXMuY3VycmVudElkVG9rZW5TdHJpbmckLnBpcGUoZmlsdGVyTWF5YmUoKSk7XG4gIHJlYWRvbmx5IGlkVG9rZW5SZXN1bHQkOiBPYnNlcnZhYmxlPElkVG9rZW5SZXN1bHQ+ID0gdGhpcy5hdXRoVXNlciQucGlwZShzd2l0Y2hNYXAoKHgpID0+IHRoaXMuaWRUb2tlblN0cmluZyQucGlwZShzd2l0Y2hNYXAoKHkpID0+IHguZ2V0SWRUb2tlblJlc3VsdCgpKSkpKTtcblxuICByZWFkb25seSBjbGFpbXMkOiBPYnNlcnZhYmxlPFBhcnNlZFRva2VuPiA9IHRoaXMuaWRUb2tlblJlc3VsdCQucGlwZShtYXAoKHgpID0+IHguY2xhaW1zKSk7XG4gIHJlYWRvbmx5IGN1cnJlbnRBdXRoQ29udGV4dEluZm8kOiBPYnNlcnZhYmxlPE1heWJlPERieEZpcmViYXNlQXV0aENvbnRleHRJbmZvPj4gPSB0aGlzLmN1cnJlbnRBdXRoVXNlciQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHgpID0+IHRoaXMubG9hZEF1dGhDb250ZXh0SW5mb0ZvclVzZXIoeCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG4gIHJlYWRvbmx5IGF1dGhDb250ZXh0SW5mbyQ6IE9ic2VydmFibGU8TWF5YmU8RGJ4RmlyZWJhc2VBdXRoQ29udGV4dEluZm8+PiA9IHRoaXMuY3VycmVudEF1dGhDb250ZXh0SW5mbyQucGlwZShmaWx0ZXJNYXliZSgpKTtcblxuICByZWFkb25seSBhdXRoVXNlclN0YXRlJDogT2JzZXJ2YWJsZTxBdXRoVXNlclN0YXRlPjtcbiAgcmVhZG9ubHkgYXV0aFJvbGVzJDogT2JzZXJ2YWJsZTxBdXRoUm9sZVNldD47XG4gIHJlYWRvbmx5IGlzT25ib2FyZGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICBwcml2YXRlIF9hdXRoUm9sZUNsYWltc1NlcnZpY2U/OiBNYXliZTxBdXRoUm9sZUNsYWltc1NlcnZpY2U8QXV0aENsYWltc09iamVjdD4+O1xuICByZWFkb25seSBpc0FkbWluSW5BdXRoUm9sZVNldDogKGF1dGhSb2xlU2V0OiBBdXRoUm9sZVNldCkgPT4gYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBmaXJlYmFzZUF1dGg6IEF1dGgsIEBPcHRpb25hbCgpIGRlbGVnYXRlOiBEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlRGVsZWdhdGUpIHtcbiAgICBkZWxlZ2F0ZSA9IGRlbGVnYXRlID8/IERFRkFVTFRfREJYX0ZJUkVCQVNFX0FVVEhfU0VSVklDRV9ERUxFR0FURTtcblxuICAgIGNvbnN0IGRlbGVnYXRlQXV0aFVzZXJTdGF0ZU9icyA9IGRlbGVnYXRlLmF1dGhVc2VyU3RhdGVPYnModGhpcykucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZVJlcGxheSgxKSk7XG5cbiAgICBpZiAoZGVsZWdhdGUuZnVsbENvbnRyb2xPZkF1dGhVc2VyU3RhdGUpIHtcbiAgICAgIHRoaXMuYXV0aFVzZXJTdGF0ZSQgPSBkZWxlZ2F0ZUF1dGhVc2VyU3RhdGVPYnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXV0aFVzZXJTdGF0ZSQgPSB0aGlzLl9hdXRoU3RhdGUkLnBpcGUoXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHN3aXRjaE1hcCgoeCkgPT4ge1xuICAgICAgICAgIGlmICh4ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZUF1dGhVc2VyU3RhdGVPYnM7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBvZignbm9uZScgYXMgQXV0aFVzZXJTdGF0ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmF1dGhSb2xlcyQgPSBkZWxlZ2F0ZS5hdXRoUm9sZXNPYnModGhpcyk7XG4gICAgdGhpcy5pc09uYm9hcmRlZCQgPSBkZWxlZ2F0ZS5pc09uYm9hcmRlZCh0aGlzKTtcbiAgICB0aGlzLl9hdXRoUm9sZUNsYWltc1NlcnZpY2UgPSBkZWxlZ2F0ZS5hdXRoUm9sZUNsYWltc1NlcnZpY2U7XG4gICAgdGhpcy5pc0FkbWluSW5BdXRoUm9sZVNldCA9IGRlbGVnYXRlLmlzQWRtaW5JbkF1dGhSb2xlU2V0O1xuICB9XG5cbiAgYXN5bmMgcmVmcmVzaFRva2VuKCk6IFByb21pc2U8SWRUb2tlblJlc3VsdD4ge1xuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmZpcmViYXNlQXV0aC5jdXJyZW50VXNlcjtcblxuICAgIGlmICghdXNlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdubyB1c2VyIHRvIHJlZnJlc2ggdGhlIHRva2VuIGZvci4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXNlci5nZXRJZFRva2VuUmVzdWx0KHRydWUpO1xuICB9XG5cbiAgcm9sZXNGb3JDbGFpbXM8VCBleHRlbmRzIEF1dGhDbGFpbXNPYmplY3QgPSBBdXRoQ2xhaW1zT2JqZWN0PihjbGFpbXM6IEF1dGhDbGFpbXM8VD4pOiBBdXRoUm9sZVNldCB7XG4gICAgbGV0IHJlc3VsdDogQXV0aFJvbGVTZXQ7XG5cbiAgICBpZiAodGhpcy5fYXV0aFJvbGVDbGFpbXNTZXJ2aWNlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fYXV0aFJvbGVDbGFpbXNTZXJ2aWNlLnRvUm9sZXMoY2xhaW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKCdEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlOiByb2xlc0ZvckNsYWltcyBjYWxsZWQgd2l0aCBubyBhdXRoUm9sZUNsYWltc1NlcnZpY2UgcHJvdmlkZWQuIEFuIGVtcHR5IHNldCBpcyByZXR1cm5lZC4nKTtcbiAgICAgIHJlc3VsdCA9IG5ldyBTZXQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZ2V0QXV0aENvbnRleHRJbmZvKCk6IFByb21pc2U8TWF5YmU8RGJ4RmlyZWJhc2VBdXRoQ29udGV4dEluZm8+PiB7XG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuYXV0aFVzZXIkKS50aGVuKCh1c2VyKSA9PiB0aGlzLmxvYWRBdXRoQ29udGV4dEluZm9Gb3JVc2VyKHVzZXIpKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWRBdXRoQ29udGV4dEluZm9Gb3JVc2VyKHVzZXI6IE1heWJlPFVzZXI+KTogUHJvbWlzZTxNYXliZTxEYnhGaXJlYmFzZUF1dGhDb250ZXh0SW5mbz4+IHtcbiAgICBsZXQgcmVzdWx0OiBNYXliZTxEYnhGaXJlYmFzZUF1dGhDb250ZXh0SW5mbz47XG5cbiAgICBpZiAodXNlcikge1xuICAgICAgY29uc3Qgand0VG9rZW46IElkVG9rZW5SZXN1bHQgPSBhd2FpdCB1c2VyLmdldElkVG9rZW5SZXN1bHQoKTtcbiAgICAgIHJlc3VsdCA9IG5ldyBEYnhGaXJlYmFzZUF1dGhDb250ZXh0SW5mbyh0aGlzLCB1c2VyLCBqd3RUb2tlbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGxvZ0luV2l0aEdvb2dsZSgpOiBQcm9taXNlPFVzZXJDcmVkZW50aWFsPiB7XG4gICAgcmV0dXJuIHRoaXMubG9nSW5XaXRoUG9wdXAobmV3IEdvb2dsZUF1dGhQcm92aWRlcigpKTtcbiAgfVxuXG4gIGxvZ0luV2l0aEZhY2Vib29rKCk6IFByb21pc2U8VXNlckNyZWRlbnRpYWw+IHtcbiAgICByZXR1cm4gdGhpcy5sb2dJbldpdGhQb3B1cChuZXcgRmFjZWJvb2tBdXRoUHJvdmlkZXIoKSk7XG4gIH1cblxuICBsb2dJbldpdGhUd2l0dGVyKCk6IFByb21pc2U8VXNlckNyZWRlbnRpYWw+IHtcbiAgICByZXR1cm4gdGhpcy5sb2dJbldpdGhQb3B1cChuZXcgVHdpdHRlckF1dGhQcm92aWRlcigpKTtcbiAgfVxuXG4gIGxvZ0luV2l0aEdpdGh1YigpOiBQcm9taXNlPFVzZXJDcmVkZW50aWFsPiB7XG4gICAgcmV0dXJuIHRoaXMubG9nSW5XaXRoUG9wdXAobmV3IEdpdGh1YkF1dGhQcm92aWRlcigpKTtcbiAgfVxuXG4gIGxvZ0luV2l0aEFwcGxlKCk6IFByb21pc2U8VXNlckNyZWRlbnRpYWw+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3RvZG8nKTtcbiAgfVxuXG4gIGxvZ0luV2l0aE1pY3Jvc29mdCgpOiBQcm9taXNlPFVzZXJDcmVkZW50aWFsPiB7XG4gICAgLy8gcmV0dXJuIHRoaXMubG9nSW5XaXRoUG9wdXAobmV3IE1pY3Jvc29mdEF1dGhQcm92aWRlcigpKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3RvZG8nKTtcbiAgfVxuXG4gIGxvZ0luV2l0aFBob25lKCk6IFByb21pc2U8VXNlckNyZWRlbnRpYWw+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3RvZG8nKTtcbiAgICAvLyByZXR1cm4gc2lnbkluV2l0aFBob25lTnVtYmVyKHRoaXMuZmlyZWJhc2VBdXRoLCApXG4gIH1cblxuICBsb2dJbldpdGhQb3B1cChwcm92aWRlcjogQXV0aFByb3ZpZGVyLCByZXNvbHZlcj86IFBvcHVwUmVkaXJlY3RSZXNvbHZlcik6IFByb21pc2U8VXNlckNyZWRlbnRpYWw+IHtcbiAgICByZXR1cm4gc2lnbkluV2l0aFBvcHVwKHRoaXMuZmlyZWJhc2VBdXRoLCBwcm92aWRlciwgcmVzb2x2ZXIpO1xuICB9XG5cbiAgcmVnaXN0ZXJXaXRoRW1haWxBbmRQYXNzd29yZChlbWFpbDogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogUHJvbWlzZTxVc2VyQ3JlZGVudGlhbD4ge1xuICAgIHJldHVybiBjcmVhdGVVc2VyV2l0aEVtYWlsQW5kUGFzc3dvcmQodGhpcy5maXJlYmFzZUF1dGgsIGVtYWlsLCBwYXNzd29yZCk7XG4gIH1cblxuICBzZW5kUGFzc3dvcmRSZXNldEVtYWlsKGVtYWlsOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gc2VuZFBhc3N3b3JkUmVzZXRFbWFpbCh0aGlzLmZpcmViYXNlQXV0aCwgZW1haWwpO1xuICB9XG5cbiAgbG9nSW5XaXRoRW1haWxBbmRQYXNzd29yZChlbWFpbDogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogUHJvbWlzZTxVc2VyQ3JlZGVudGlhbD4ge1xuICAgIHJldHVybiBzaWduSW5XaXRoRW1haWxBbmRQYXNzd29yZCh0aGlzLmZpcmViYXNlQXV0aCwgZW1haWwsIHBhc3N3b3JkKTtcbiAgfVxuXG4gIGxvZ0luQXNBbm9ueW1vdXMoKTogUHJvbWlzZTxVc2VyQ3JlZGVudGlhbD4ge1xuICAgIHJldHVybiBzaWduSW5Bbm9ueW1vdXNseSh0aGlzLmZpcmViYXNlQXV0aCk7XG4gIH1cblxuICBsb2dPdXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZmlyZWJhc2VBdXRoLnNpZ25PdXQoKTtcbiAgfVxufVxuXG4vKipcbiAqIEZpcmViYXNlQXV0aENvbnRleHRJbmZvIGltcGxlbWVudGF0aW9uIGZyb20gRGJ4RmlyZWJhc2VBdXRoU2VydmljZS5cbiAqL1xuZXhwb3J0IGNsYXNzIERieEZpcmViYXNlQXV0aENvbnRleHRJbmZvIGltcGxlbWVudHMgRmlyZWJhc2VBdXRoQ29udGV4dEluZm8ge1xuICBwcml2YXRlIF90b2tlbiA9IGNhY2hlZEdldHRlcigoKSA9PiBmaXJlYmFzZUF1dGhUb2tlbkZyb21Vc2VyKHRoaXMudXNlcikpO1xuICBwcml2YXRlIF9yb2xlcyA9IGNhY2hlZEdldHRlcigoKSA9PiB0aGlzLnNlcnZpY2Uucm9sZXNGb3JDbGFpbXModGhpcy5nZXRDbGFpbXMoKSkpO1xuICBwcml2YXRlIF9pc0FkbWluID0gY2FjaGVkR2V0dGVyKCgpID0+IHRoaXMuc2VydmljZS5pc0FkbWluSW5BdXRoUm9sZVNldCh0aGlzLl9yb2xlcygpKSk7XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgc2VydmljZTogRGJ4RmlyZWJhc2VBdXRoU2VydmljZSwgcmVhZG9ubHkgdXNlcjogVXNlciwgcmVhZG9ubHkgand0VG9rZW46IElkVG9rZW5SZXN1bHQpIHt9XG5cbiAgZ2V0IHVpZCgpIHtcbiAgICByZXR1cm4gdGhpcy51c2VyLnVpZDtcbiAgfVxuXG4gIGlzQWRtaW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzQWRtaW4oKTtcbiAgfVxuXG4gIGdldENsYWltczxUIGV4dGVuZHMgQXV0aENsYWltc09iamVjdCA9IEF1dGhDbGFpbXNPYmplY3Q+KCk6IEF1dGhDbGFpbXM8VD4ge1xuICAgIHJldHVybiB0aGlzLmp3dFRva2VuLmNsYWltcyBhcyBBdXRoQ2xhaW1zPFQ+O1xuICB9XG5cbiAgZ2V0QXV0aFJvbGVzKCk6IEF1dGhSb2xlU2V0IHtcbiAgICByZXR1cm4gdGhpcy5fcm9sZXMoKTtcbiAgfVxuXG4gIGdldCB0b2tlbigpOiBGaXJlYmFzZUF1dGhUb2tlbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuKCk7XG4gIH1cbn1cbiJdfQ==
@@ -18,14 +18,27 @@ export function firebaseDocumentStoreCreateFunction(store, fn) {
18
18
  return result;
19
19
  })));
20
20
  }
21
+ // MARK: Update
22
+ /**
23
+ * Creates a DbxFirebaseDocumentStoreFunction for update.
24
+ *
25
+ * The store's current key is always injected into the params of the request.
26
+ *
27
+ * @param store
28
+ * @param fn
29
+ * @returns
30
+ */
21
31
  export function firebaseDocumentStoreUpdateFunction(store, fn) {
22
32
  return (params) => loadingStateFromObs(store.key$.pipe(first(), switchMap((key) => fn({
23
33
  ...params,
24
34
  key // inject key into the parameters.
25
35
  }))));
26
36
  }
37
+ // MARK: Delete
27
38
  /**
28
- * Deletes a function for a store that DbxFirebaseDocumentStore captures the ModelFirebaseDeleteFunction result and sets the key of the created value.
39
+ * Creates a DbxFirebaseDocumentStoreFunction for delete.
40
+ *
41
+ * The store's current key is always injected into the params of the request.
29
42
  *
30
43
  * @param store
31
44
  * @param fn
@@ -40,4 +53,4 @@ export function firebaseDocumentStoreDeleteFunction(store, fn) {
40
53
  return result;
41
54
  }))));
42
55
  }
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuZG9jdW1lbnQuY3J1ZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1maXJlYmFzZS9zcmMvbGliL21vZGVsL3N0b3JlL3N0b3JlLmRvY3VtZW50LmNydWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBZ0IsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFjLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQU9wRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsbUNBQW1DLENBQWlFLEtBQXlDLEVBQUUsRUFBcUM7SUFDbE0sT0FBTyxDQUFDLE1BQVMsRUFBRSxFQUFFLENBQ25CLG1CQUFtQixDQUNqQixRQUFRLENBQUMsR0FBRyxFQUFFLENBQ1osRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ3pCLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDbkMsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXZDLElBQUksUUFBUSxFQUFFO1lBQ1osS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN4QjtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUMsQ0FBQyxDQUNILENBQ0YsQ0FBQztBQUNOLENBQUM7QUFPRCxNQUFNLFVBQVUsbUNBQW1DLENBQWlELEtBQXlDLEVBQUUsRUFBa0M7SUFDL0ssT0FBTyxDQUFDLE1BQVMsRUFBRSxFQUFFLENBQ25CLG1CQUFtQixDQUNqQixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDYixLQUFLLEVBQUUsRUFDUCxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNoQixFQUFFLENBQUM7UUFDRCxHQUFHLE1BQU07UUFDVCxHQUFHLENBQUMsa0NBQWtDO0tBQ3ZDLENBQUMsQ0FDSCxDQUNGLENBQ0YsQ0FBQztBQUNOLENBQUM7QUFPRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsbUNBQW1DLENBQUksS0FBeUMsRUFBRSxFQUFrQztJQUNsSSxPQUFPLENBQUMsTUFBUyxFQUFFLEVBQUUsQ0FDbkIsbUJBQW1CLENBQ2pCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNiLEtBQUssRUFBRSxFQUNQLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ2hCLEVBQUUsQ0FBQztRQUNELEdBQUcsTUFBTTtRQUNULEdBQUcsQ0FBQyxrQ0FBa0M7S0FDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ2pCLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNsQixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDLENBQUMsQ0FDSCxDQUNGLENBQ0YsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaXJlc3RvcmVNb2RlbEtleVJlZiwgTW9kZWxGaXJlYmFzZUNyZWF0ZUZ1bmN0aW9uLCBNb2RlbEZpcmViYXNlRGVsZXRlRnVuY3Rpb24sIE1vZGVsRmlyZWJhc2VVcGRhdGVGdW5jdGlvbiwgT25DYWxsQ3JlYXRlTW9kZWxSZXN1bHQgfSBmcm9tICdAZGVyZWVrYi9maXJlYmFzZSc7XG5pbXBvcnQgeyBsYXp5RnJvbSwgTG9hZGluZ1N0YXRlLCBsb2FkaW5nU3RhdGVGcm9tT2JzIH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBmaXJzdCwgT2JzZXJ2YWJsZSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBXcml0YWJsZSB9IGZyb20gJ3RzLWVzc2VudGlhbHMnO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlIH0gZnJvbSAnLi9zdG9yZS5kb2N1bWVudCc7XG5cbi8vIE1BUks6IENyZWF0ZVxuZXhwb3J0IHR5cGUgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlQ3JlYXRlRnVuY3Rpb248SSwgTyBleHRlbmRzIE9uQ2FsbENyZWF0ZU1vZGVsUmVzdWx0ID0gT25DYWxsQ3JlYXRlTW9kZWxSZXN1bHQ+ID0gKHBhcmFtczogSSkgPT4gT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8Tz4+O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiBmb3IgYSBzdG9yZSB0aGF0IERieEZpcmViYXNlRG9jdW1lbnRTdG9yZSBjYXB0dXJlcyB0aGUgTW9kZWxGaXJlYmFzZUNyZWF0ZUZ1bmN0aW9uIHJlc3VsdCBhbmQgc2V0cyB0aGUga2V5IG9mIHRoZSBjcmVhdGVkIHZhbHVlLlxuICpcbiAqIEBwYXJhbSBzdG9yZVxuICogQHBhcmFtIGZuXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZmlyZWJhc2VEb2N1bWVudFN0b3JlQ3JlYXRlRnVuY3Rpb248SSwgTyBleHRlbmRzIE9uQ2FsbENyZWF0ZU1vZGVsUmVzdWx0ID0gT25DYWxsQ3JlYXRlTW9kZWxSZXN1bHQ+KHN0b3JlOiBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmU8YW55LCBhbnk+LCBmbjogTW9kZWxGaXJlYmFzZUNyZWF0ZUZ1bmN0aW9uPEksIE8+KTogRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlQ3JlYXRlRnVuY3Rpb248SSwgTz4ge1xuICByZXR1cm4gKHBhcmFtczogSSkgPT5cbiAgICBsb2FkaW5nU3RhdGVGcm9tT2JzKFxuICAgICAgbGF6eUZyb20oKCkgPT5cbiAgICAgICAgZm4ocGFyYW1zKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICBjb25zdCBtb2RlbEtleXMgPSByZXN1bHQubW9kZWxLZXlzO1xuICAgICAgICAgIGNvbnN0IGZpcnN0S2V5ID0gZmlyc3RWYWx1ZShtb2RlbEtleXMpO1xuXG4gICAgICAgICAgaWYgKGZpcnN0S2V5KSB7XG4gICAgICAgICAgICBzdG9yZS5zZXRLZXkoZmlyc3RLZXkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbn1cblxuLy8gTUFSSzogVXBkYXRlXG5leHBvcnQgdHlwZSBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVVcGRhdGVQYXJhbXMgPSBQYXJ0aWFsPFdyaXRhYmxlPEZpcmVzdG9yZU1vZGVsS2V5UmVmPj47XG5cbmV4cG9ydCB0eXBlIERieEZpcmViYXNlRG9jdW1lbnRTdG9yZVVwZGF0ZUZ1bmN0aW9uPEkgZXh0ZW5kcyBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVVcGRhdGVQYXJhbXM+ID0gKHBhcmFtczogSSkgPT4gT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8dm9pZD4+O1xuXG5leHBvcnQgZnVuY3Rpb24gZmlyZWJhc2VEb2N1bWVudFN0b3JlVXBkYXRlRnVuY3Rpb248SSBleHRlbmRzIERieEZpcmViYXNlRG9jdW1lbnRTdG9yZVVwZGF0ZVBhcmFtcz4oc3RvcmU6IERieEZpcmViYXNlRG9jdW1lbnRTdG9yZTxhbnksIGFueT4sIGZuOiBNb2RlbEZpcmViYXNlVXBkYXRlRnVuY3Rpb248ST4pOiBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVVcGRhdGVGdW5jdGlvbjxJPiB7XG4gIHJldHVybiAocGFyYW1zOiBJKSA9PlxuICAgIGxvYWRpbmdTdGF0ZUZyb21PYnMoXG4gICAgICBzdG9yZS5rZXkkLnBpcGUoXG4gICAgICAgIGZpcnN0KCksXG4gICAgICAgIHN3aXRjaE1hcCgoa2V5KSA9PlxuICAgICAgICAgIGZuKHtcbiAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICAgIGtleSAvLyBpbmplY3Qga2V5IGludG8gdGhlIHBhcmFtZXRlcnMuXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG59XG5cbi8vIE1BUks6IERlbGV0ZVxuZXhwb3J0IHR5cGUgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlRGVsZXRlUGFyYW1zID0gUGFydGlhbDxXcml0YWJsZTxGaXJlc3RvcmVNb2RlbEtleVJlZj4+O1xuXG5leHBvcnQgdHlwZSBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVEZWxldGVGdW5jdGlvbjxJIGV4dGVuZHMgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlRGVsZXRlUGFyYW1zPiA9IChwYXJhbXM6IEkpID0+IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlPHZvaWQ+PjtcblxuLyoqXG4gKiBEZWxldGVzIGEgZnVuY3Rpb24gZm9yIGEgc3RvcmUgdGhhdCBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmUgY2FwdHVyZXMgdGhlIE1vZGVsRmlyZWJhc2VEZWxldGVGdW5jdGlvbiByZXN1bHQgYW5kIHNldHMgdGhlIGtleSBvZiB0aGUgY3JlYXRlZCB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0gc3RvcmVcbiAqIEBwYXJhbSBmblxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpcmViYXNlRG9jdW1lbnRTdG9yZURlbGV0ZUZ1bmN0aW9uPEk+KHN0b3JlOiBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmU8YW55LCBhbnk+LCBmbjogTW9kZWxGaXJlYmFzZURlbGV0ZUZ1bmN0aW9uPEk+KTogRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlRGVsZXRlRnVuY3Rpb248ST4ge1xuICByZXR1cm4gKHBhcmFtczogSSkgPT5cbiAgICBsb2FkaW5nU3RhdGVGcm9tT2JzKFxuICAgICAgc3RvcmUua2V5JC5waXBlKFxuICAgICAgICBmaXJzdCgpLFxuICAgICAgICBzd2l0Y2hNYXAoKGtleSkgPT5cbiAgICAgICAgICBmbih7XG4gICAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgICBrZXkgLy8gaW5qZWN0IGtleSBpbnRvIHRoZSBwYXJhbWV0ZXJzLlxuICAgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgc3RvcmUuY2xlYXJSZWZzKCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xufVxuIl19
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuZG9jdW1lbnQuY3J1ZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1maXJlYmFzZS9zcmMvbGliL21vZGVsL3N0b3JlL3N0b3JlLmRvY3VtZW50LmNydWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBZ0IsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFFLFVBQVUsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLEtBQUssRUFBYyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFPcEQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLG1DQUFtQyxDQUFpRSxLQUF5QyxFQUFFLEVBQXFDO0lBQ2xNLE9BQU8sQ0FBQyxNQUFTLEVBQUUsRUFBRSxDQUNuQixtQkFBbUIsQ0FDakIsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUNaLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUN6QixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ25DLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV2QyxJQUFJLFFBQVEsRUFBRTtZQUNaLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDeEI7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDLENBQUMsQ0FDSCxDQUNGLENBQUM7QUFDTixDQUFDO0FBY0QsZUFBZTtBQUNmOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLG1DQUFtQyxDQUE2RCxLQUF5QyxFQUFFLEVBQXFDO0lBQzlMLE9BQU8sQ0FBQyxNQUFzRCxFQUFFLEVBQUUsQ0FDaEUsbUJBQW1CLENBQ2pCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNiLEtBQUssRUFBRSxFQUNQLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ2hCLEVBQUUsQ0FBQztRQUNELEdBQUcsTUFBTTtRQUNULEdBQUcsQ0FBQyxrQ0FBa0M7S0FDbEMsQ0FBQyxDQUNSLENBQ0YsQ0FDRixDQUFDO0FBQ04sQ0FBQztBQUVELGVBQWU7QUFDZjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxtQ0FBbUMsQ0FBNkQsS0FBeUMsRUFBRSxFQUFxQztJQUM5TCxPQUFPLENBQUMsTUFBc0QsRUFBRSxFQUFFLENBQ2hFLG1CQUFtQixDQUNqQixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDYixLQUFLLEVBQUUsRUFDUCxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNoQixFQUFFLENBQUM7UUFDRCxHQUFHLE1BQU07UUFDVCxHQUFHLENBQUMsa0NBQWtDO0tBQ2xDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUN0QixLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbEIsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQyxDQUFDLENBQ0gsQ0FDRixDQUNGLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmlyZXN0b3JlTW9kZWxLZXlSZWYsIE1vZGVsRmlyZWJhc2VDcmVhdGVGdW5jdGlvbiwgTW9kZWxGaXJlYmFzZURlbGV0ZUZ1bmN0aW9uLCBNb2RlbEZpcmViYXNlVXBkYXRlRnVuY3Rpb24sIE9uQ2FsbENyZWF0ZU1vZGVsUmVzdWx0LCBUYXJnZXRNb2RlbFBhcmFtcywgSW5mZXJyZWRUYXJnZXRNb2RlbFBhcmFtcyB9IGZyb20gJ0BkZXJlZWtiL2ZpcmViYXNlJztcbmltcG9ydCB7IGxhenlGcm9tLCBMb2FkaW5nU3RhdGUsIGxvYWRpbmdTdGF0ZUZyb21PYnMgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IGZpcnN0VmFsdWUsIFBhcnRpYWxPbktleXMgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IGZpcnN0LCBPYnNlcnZhYmxlLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFdyaXRhYmxlIH0gZnJvbSAndHMtZXNzZW50aWFscyc7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmUgfSBmcm9tICcuL3N0b3JlLmRvY3VtZW50JztcblxuLy8gTUFSSzogQ3JlYXRlXG5leHBvcnQgdHlwZSBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVDcmVhdGVGdW5jdGlvbjxJLCBPIGV4dGVuZHMgT25DYWxsQ3JlYXRlTW9kZWxSZXN1bHQgPSBPbkNhbGxDcmVhdGVNb2RlbFJlc3VsdD4gPSAocGFyYW1zOiBJKSA9PiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxPPj47XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGZvciBhIHN0b3JlIHRoYXQgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlIGNhcHR1cmVzIHRoZSBNb2RlbEZpcmViYXNlQ3JlYXRlRnVuY3Rpb24gcmVzdWx0IGFuZCBzZXRzIHRoZSBrZXkgb2YgdGhlIGNyZWF0ZWQgdmFsdWUuXG4gKlxuICogQHBhcmFtIHN0b3JlXG4gKiBAcGFyYW0gZm5cbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaXJlYmFzZURvY3VtZW50U3RvcmVDcmVhdGVGdW5jdGlvbjxJLCBPIGV4dGVuZHMgT25DYWxsQ3JlYXRlTW9kZWxSZXN1bHQgPSBPbkNhbGxDcmVhdGVNb2RlbFJlc3VsdD4oc3RvcmU6IERieEZpcmViYXNlRG9jdW1lbnRTdG9yZTxhbnksIGFueT4sIGZuOiBNb2RlbEZpcmViYXNlQ3JlYXRlRnVuY3Rpb248SSwgTz4pOiBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVDcmVhdGVGdW5jdGlvbjxJLCBPPiB7XG4gIHJldHVybiAocGFyYW1zOiBJKSA9PlxuICAgIGxvYWRpbmdTdGF0ZUZyb21PYnMoXG4gICAgICBsYXp5RnJvbSgoKSA9PlxuICAgICAgICBmbihwYXJhbXMpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG1vZGVsS2V5cyA9IHJlc3VsdC5tb2RlbEtleXM7XG4gICAgICAgICAgY29uc3QgZmlyc3RLZXkgPSBmaXJzdFZhbHVlKG1vZGVsS2V5cyk7XG5cbiAgICAgICAgICBpZiAoZmlyc3RLZXkpIHtcbiAgICAgICAgICAgIHN0b3JlLnNldEtleShmaXJzdEtleSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xufVxuXG4vLyBNQVJLOiBUYXJnZXRlZCBGdW5jdGlvbnNcbi8qKlxuICogQSBwYXJhbWV0ZXIgdGhhdCByZWZlcnMgdG8gYSBzcGVjaWZpYyBrZXkuXG4gKi9cbmV4cG9ydCB0eXBlIERieEZpcmViYXNlRG9jdW1lbnRTdG9yZUZ1bmN0aW9uUGFyYW1zID0gVGFyZ2V0TW9kZWxQYXJhbXMgfCBJbmZlcnJlZFRhcmdldE1vZGVsUGFyYW1zO1xuXG4vKipcbiAqIFVzZWQgZm9yIHRoZSBpbnB1dCB0byByZWxhdGVkIGZ1bmN0aW9uc1xuICovXG5leHBvcnQgdHlwZSBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVGdW5jdGlvblBhcmFtc0lucHV0PEkgZXh0ZW5kcyBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVGdW5jdGlvblBhcmFtcz4gPSBQYXJ0aWFsT25LZXlzPEksICdrZXknPjtcbmV4cG9ydCB0eXBlIERieEZpcmViYXNlRG9jdW1lbnRTdG9yZUZ1bmN0aW9uPEkgZXh0ZW5kcyBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVGdW5jdGlvblBhcmFtcywgTyA9IHZvaWQ+ID0gKHBhcmFtczogRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlRnVuY3Rpb25QYXJhbXNJbnB1dDxJPikgPT4gT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8Tz4+O1xuXG4vLyBNQVJLOiBVcGRhdGVcbi8qKlxuICogQ3JlYXRlcyBhIERieEZpcmViYXNlRG9jdW1lbnRTdG9yZUZ1bmN0aW9uIGZvciB1cGRhdGUuXG4gKlxuICogVGhlIHN0b3JlJ3MgY3VycmVudCBrZXkgaXMgYWx3YXlzIGluamVjdGVkIGludG8gdGhlIHBhcmFtcyBvZiB0aGUgcmVxdWVzdC5cbiAqXG4gKiBAcGFyYW0gc3RvcmVcbiAqIEBwYXJhbSBmblxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpcmViYXNlRG9jdW1lbnRTdG9yZVVwZGF0ZUZ1bmN0aW9uPEkgZXh0ZW5kcyBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVGdW5jdGlvblBhcmFtcywgTyA9IHZvaWQ+KHN0b3JlOiBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmU8YW55LCBhbnk+LCBmbjogTW9kZWxGaXJlYmFzZVVwZGF0ZUZ1bmN0aW9uPEksIE8+KTogRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlRnVuY3Rpb248SSwgTz4ge1xuICByZXR1cm4gKHBhcmFtczogRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlRnVuY3Rpb25QYXJhbXNJbnB1dDxJPikgPT5cbiAgICBsb2FkaW5nU3RhdGVGcm9tT2JzKFxuICAgICAgc3RvcmUua2V5JC5waXBlKFxuICAgICAgICBmaXJzdCgpLFxuICAgICAgICBzd2l0Y2hNYXAoKGtleSkgPT5cbiAgICAgICAgICBmbih7XG4gICAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgICBrZXkgLy8gaW5qZWN0IGtleSBpbnRvIHRoZSBwYXJhbWV0ZXJzLlxuICAgICAgICAgIH0gYXMgSSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG59XG5cbi8vIE1BUks6IERlbGV0ZVxuLyoqXG4gKiBDcmVhdGVzIGEgRGJ4RmlyZWJhc2VEb2N1bWVudFN0b3JlRnVuY3Rpb24gZm9yIGRlbGV0ZS5cbiAqXG4gKiBUaGUgc3RvcmUncyBjdXJyZW50IGtleSBpcyBhbHdheXMgaW5qZWN0ZWQgaW50byB0aGUgcGFyYW1zIG9mIHRoZSByZXF1ZXN0LlxuICpcbiAqIEBwYXJhbSBzdG9yZVxuICogQHBhcmFtIGZuXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZmlyZWJhc2VEb2N1bWVudFN0b3JlRGVsZXRlRnVuY3Rpb248SSBleHRlbmRzIERieEZpcmViYXNlRG9jdW1lbnRTdG9yZUZ1bmN0aW9uUGFyYW1zLCBPID0gdm9pZD4oc3RvcmU6IERieEZpcmViYXNlRG9jdW1lbnRTdG9yZTxhbnksIGFueT4sIGZuOiBNb2RlbEZpcmViYXNlRGVsZXRlRnVuY3Rpb248SSwgTz4pOiBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVGdW5jdGlvbjxJLCBPPiB7XG4gIHJldHVybiAocGFyYW1zOiBEYnhGaXJlYmFzZURvY3VtZW50U3RvcmVGdW5jdGlvblBhcmFtc0lucHV0PEk+KSA9PlxuICAgIGxvYWRpbmdTdGF0ZUZyb21PYnMoXG4gICAgICBzdG9yZS5rZXkkLnBpcGUoXG4gICAgICAgIGZpcnN0KCksXG4gICAgICAgIHN3aXRjaE1hcCgoa2V5KSA9PlxuICAgICAgICAgIGZuKHtcbiAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICAgIGtleSAvLyBpbmplY3Qga2V5IGludG8gdGhlIHBhcmFtZXRlcnMuXG4gICAgICAgICAgfSBhcyBJKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIHN0b3JlLmNsZWFyUmVmcygpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbn1cbiJdfQ==
@@ -16,9 +16,9 @@ import { DbxRouterAnchorModule, DbxReadableErrorModule, DbxActionModule, DbxButt
16
16
  import * as i3$1 from '@dereekb/dbx-core';
17
17
  import { loggedInObsFromIsLoggedIn, loggedOutObsFromIsLoggedIn, authUserIdentifier, DbxInjectionContext, AbstractForwardDbxInjectionContextDirective, DBX_INJECTION_COMPONENT_DATA, DbxInjectionComponentModule, DbxAuthService, AbstractIfDirective, AbstractSubscriptionDirective, DbxRouteParamReaderInstance, DbxRouteParamDefaultRedirectInstance, LockSetComponentStore } from '@dereekb/dbx-core';
18
18
  import { __awaiter } from 'tslib';
19
- import { timeoutStartWith, filterMaybe, isNot, SubscriptionObject, asObservable, cleanupDestroyable, accumulatorFlattenPageListLoadingState, useFirst, pageLoadingStateFromObs, useAsObservable, successResult, beginLoading, loadingStateFromObs, errorResult, lazyFrom, cleanup } from '@dereekb/rxjs';
19
+ import { asObservable, timeoutStartWith, filterMaybe, isNot, SubscriptionObject, cleanupDestroyable, accumulatorFlattenPageListLoadingState, useFirst, pageLoadingStateFromObs, useAsObservable, successResult, beginLoading, loadingStateFromObs, errorResult, lazyFrom, cleanup } from '@dereekb/rxjs';
20
20
  import * as i1$1 from '@angular/fire/auth';
21
- import { authState, GoogleAuthProvider, FacebookAuthProvider, TwitterAuthProvider, GithubAuthProvider, signInWithPopup, createUserWithEmailAndPassword, signInWithEmailAndPassword, signInAnonymously, provideAuth, getAuth, connectAuthEmulator } from '@angular/fire/auth';
21
+ import { authState, idToken, GoogleAuthProvider, FacebookAuthProvider, TwitterAuthProvider, GithubAuthProvider, signInWithPopup, createUserWithEmailAndPassword, signInWithEmailAndPassword, signInAnonymously, provideAuth, getAuth, connectAuthEmulator } from '@angular/fire/auth';
22
22
  import { sendPasswordResetEmail } from 'firebase/auth';
23
23
  import * as i1$2 from '@dereekb/dbx-form';
24
24
  import { AbstractAsyncFormlyFormDirective, usernamePasswordLoginFields, provideFormlyContext, AbstractSyncFormlyFormDirective, emailField, DbxFormIoModule, DbxFormModule, DbxFormlyModule, DbxFormActionModule, DbxFormFormlyTextFieldModule } from '@dereekb/dbx-form';
@@ -140,36 +140,42 @@ function firebaseAuthTokenFromUser(user) {
140
140
  }
141
141
 
142
142
  /**
143
- * Derives a user state from the input firebase auth service.
143
+ * Creates a AuthUserStateObsFunction that derives a user state from the input firebase auth service, and the optional stateForLoggedInUser input
144
144
  *
145
- * @param dbxFirebaseAuthService
146
145
  * @param stateForLoggedInUser Optional function that returns an observable for the user's state if they are logged in and not an anonymous user.
147
146
  * @returns
148
147
  */
149
- function authUserStateFromFirebaseAuthService(dbxFirebaseAuthService, stateForLoggedInUser = () => of('user')) {
150
- return dbxFirebaseAuthService.hasAuthUser$.pipe(switchMap((hasUser) => {
151
- let obs;
152
- if (hasUser) {
153
- obs = dbxFirebaseAuthService.isAnonymousUser$.pipe(switchMap((isAnon) => (isAnon ? of('anon') : stateForLoggedInUser(dbxFirebaseAuthService))));
154
- }
155
- else {
156
- obs = of('none');
157
- }
158
- return obs;
159
- }), shareReplay(1));
148
+ function authUserStateFromFirebaseAuthServiceFunction(stateForLoggedInUser = () => of('user')) {
149
+ return (dbxFirebaseAuthService) => {
150
+ return dbxFirebaseAuthService.hasAuthUser$.pipe(switchMap((hasUser) => {
151
+ let obs;
152
+ if (hasUser) {
153
+ obs = dbxFirebaseAuthService.isAnonymousUser$.pipe(switchMap((isAnon) => (isAnon ? of('anon') : stateForLoggedInUser(dbxFirebaseAuthService))));
154
+ }
155
+ else {
156
+ obs = of('none');
157
+ }
158
+ return obs;
159
+ }), shareReplay(1));
160
+ };
161
+ }
162
+ function stateFromTokenForLoggedInUserFunction(stateFromToken, defaultState = 'user') {
163
+ return (dbxFirebaseAuthService) => {
164
+ return readValueFromIdToken(dbxFirebaseAuthService, stateFromToken, defaultState);
165
+ };
160
166
  }
161
167
  /**
162
168
  * Convenience function to read a value from an IdTokenResult off of the current user.
163
169
  *
164
170
  * @param dbxFirebaseAuthService
165
- * @param readBooleanFromIdToken
171
+ * @param readValueFromIdToken
166
172
  * @param defaultValue
167
173
  * @returns
168
174
  */
169
- function readValueFromIdToken(dbxFirebaseAuthService, readBooleanFromIdToken, defaultValue) {
175
+ function readValueFromIdToken(dbxFirebaseAuthService, readValueFromIdToken, defaultValue) {
170
176
  return dbxFirebaseAuthService.currentAuthUserInfo$.pipe(switchMap((x) => {
171
177
  if (x) {
172
- return dbxFirebaseAuthService.idTokenResult$.pipe(switchMap((x) => readBooleanFromIdToken(x)));
178
+ return dbxFirebaseAuthService.idTokenResult$.pipe(switchMap((x) => asObservable(readValueFromIdToken(x))));
173
179
  }
174
180
  else {
175
181
  return of(defaultValue);
@@ -179,11 +185,12 @@ function readValueFromIdToken(dbxFirebaseAuthService, readBooleanFromIdToken, de
179
185
 
180
186
  // MARK: Delegate
181
187
  class DbxFirebaseAuthServiceDelegate {
188
+ constructor() {
189
+ this.fullControlOfAuthUserState = false;
190
+ }
182
191
  }
183
192
  const DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE = {
184
- authUserStateObs(dbxFirebaseAuthService) {
185
- return authUserStateFromFirebaseAuthService(dbxFirebaseAuthService);
186
- },
193
+ authUserStateObs: authUserStateFromFirebaseAuthServiceFunction(),
187
194
  authRolesObs(dbxFirebaseAuthService) {
188
195
  return dbxFirebaseAuthService.authUserState$.pipe(map((x) => (x === 'user' ? new Set(['user']) : new Set())));
189
196
  },
@@ -212,12 +219,27 @@ class DbxFirebaseAuthService {
212
219
  this.onLogOut$ = loggedOutObsFromIsLoggedIn(this.isLoggedIn$);
213
220
  this.userIdentifier$ = this.currentAuthUser$.pipe(map((x) => authUserIdentifier(x === null || x === void 0 ? void 0 : x.uid)));
214
221
  this.uid$ = this.userIdentifier$;
215
- this.idTokenResult$ = this.authUser$.pipe(switchMap((x) => x.getIdTokenResult()));
222
+ this.currentIdTokenString$ = idToken(this.firebaseAuth).pipe(distinctUntilChanged());
223
+ this.idTokenString$ = this.currentIdTokenString$.pipe(filterMaybe());
224
+ this.idTokenResult$ = this.authUser$.pipe(switchMap((x) => this.idTokenString$.pipe(switchMap((y) => x.getIdTokenResult()))));
216
225
  this.claims$ = this.idTokenResult$.pipe(map((x) => x.claims));
217
226
  this.currentAuthContextInfo$ = this.currentAuthUser$.pipe(switchMap((x) => this.loadAuthContextInfoForUser(x)), shareReplay(1));
218
227
  this.authContextInfo$ = this.currentAuthContextInfo$.pipe(filterMaybe());
219
228
  delegate = delegate !== null && delegate !== void 0 ? delegate : DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE;
220
- this.authUserState$ = delegate.authUserStateObs(this).pipe(distinctUntilChanged(), shareReplay(1));
229
+ const delegateAuthUserStateObs = delegate.authUserStateObs(this).pipe(distinctUntilChanged(), shareReplay(1));
230
+ if (delegate.fullControlOfAuthUserState) {
231
+ this.authUserState$ = delegateAuthUserStateObs;
232
+ }
233
+ else {
234
+ this.authUserState$ = this._authState$.pipe(distinctUntilChanged(), switchMap((x) => {
235
+ if (x != null) {
236
+ return delegateAuthUserStateObs;
237
+ }
238
+ else {
239
+ return of('none');
240
+ }
241
+ }));
242
+ }
221
243
  this.authRoles$ = delegate.authRolesObs(this);
222
244
  this.isOnboarded$ = delegate.isOnboarded(this);
223
245
  this._authRoleClaimsService = delegate.authRoleClaimsService;
@@ -1440,12 +1462,16 @@ function authRolesObsWithClaimsService(config) {
1440
1462
  };
1441
1463
  }
1442
1464
  function defaultDbxFirebaseAuthServiceDelegateWithClaimsService(config) {
1443
- var _a;
1465
+ var _a, _b;
1466
+ if (filterMaybeValues([config.stateForLoggedInUser, config.stateForLoggedInUserToken, config.authUserStateObs]).length > 1) {
1467
+ throw new Error('Cannot specify a combination of "stateForLoggedInUserToken", "stateForLoggedInUser" and "authUserStateObs". Must specify one at max.');
1468
+ }
1469
+ const authUserStateObs = (_a = config.authUserStateObs) !== null && _a !== void 0 ? _a : authUserStateFromFirebaseAuthServiceFunction(config.stateForLoggedInUserToken ? stateFromTokenForLoggedInUserFunction(config.stateForLoggedInUserToken) : config.stateForLoggedInUser);
1444
1470
  return {
1445
- authUserStateObs: DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE.authUserStateObs,
1471
+ authUserStateObs,
1472
+ isAdminInAuthRoleSet: (_b = config.isAdminInAuthRoleSet) !== null && _b !== void 0 ? _b : DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE.isAdminInAuthRoleSet,
1446
1473
  authRolesObs: authRolesObsWithClaimsService(config),
1447
1474
  isOnboarded: DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE.isOnboarded,
1448
- isAdminInAuthRoleSet: (_a = config.isAdminInAuthRoleSet) !== null && _a !== void 0 ? _a : DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE.isAdminInAuthRoleSet,
1449
1475
  authRoleClaimsService: config.claimsService
1450
1476
  };
1451
1477
  }
@@ -2708,12 +2734,25 @@ function firebaseDocumentStoreCreateFunction(store, fn) {
2708
2734
  return result;
2709
2735
  })));
2710
2736
  }
2737
+ // MARK: Update
2738
+ /**
2739
+ * Creates a DbxFirebaseDocumentStoreFunction for update.
2740
+ *
2741
+ * The store's current key is always injected into the params of the request.
2742
+ *
2743
+ * @param store
2744
+ * @param fn
2745
+ * @returns
2746
+ */
2711
2747
  function firebaseDocumentStoreUpdateFunction(store, fn) {
2712
2748
  return (params) => loadingStateFromObs(store.key$.pipe(first(), switchMap((key) => fn(Object.assign(Object.assign({}, params), { key // inject key into the parameters.
2713
2749
  })))));
2714
2750
  }
2751
+ // MARK: Delete
2715
2752
  /**
2716
- * Deletes a function for a store that DbxFirebaseDocumentStore captures the ModelFirebaseDeleteFunction result and sets the key of the created value.
2753
+ * Creates a DbxFirebaseDocumentStoreFunction for delete.
2754
+ *
2755
+ * The store's current key is always injected into the params of the request.
2717
2756
  *
2718
2757
  * @param store
2719
2758
  * @param fn
@@ -3046,5 +3085,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
3046
3085
  * Generated bundle index. Do not edit.
3047
3086
  */
3048
3087
 
3049
- export { AbstractConfiguredDbxFirebaseLoginButtonDirective, AbstractDbxFirebaseCollectionStore, AbstractDbxFirebaseCollectionWithParentStore, AbstractDbxFirebaseDocumentStore, AbstractDbxFirebaseDocumentWithParentStore, AbstractSingleItemDbxFirebaseDocument, DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_ID_PARAM_KEY, DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_USE_PARAM_VALUE, DBX_FIREBASE_MODEL_DOES_NOT_EXIST_ERROR, DBX_FIREBASE_OPTIONS_TOKEN, DBX_FIREBASE_STORAGE_CONTEXT_CONFIG_TOKEN, DBX_FIREBASE_STORAGE_CONTEXT_TOKEN, DBX_FIRESTORE_CONTEXT_TOKEN, DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE, DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE, DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG, DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_PROVIDERS_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_TERMS_COMPONENT_CLASS_TOKEN, DEFAULT_FIREBASE_COLLECTION_CHANGE_TRIGGER_FUNCTION, DEFAULT_FIREBASE_LOGIN_METHOD_CATEGORY, DbxFirebaseAppCheckHttpInterceptor, DbxFirebaseAuthContextInfo, DbxFirebaseAuthLoginService, DbxFirebaseAuthModule, DbxFirebaseAuthService, DbxFirebaseAuthServiceDelegate, DbxFirebaseCollectionChangeDirective, DbxFirebaseCollectionChangeTriggerInstance, DbxFirebaseCollectionChangeWatcherInstance, DbxFirebaseCollectionHasChangeDirective, DbxFirebaseCollectionListDirective, DbxFirebaseCollectionLoaderInstance, DbxFirebaseCollectionStoreDirective, DbxFirebaseCollectionWithParentStoreDirective, DbxFirebaseDefaultAppCheckProviderModule, DbxFirebaseDefaultAuthProviderModule, DbxFirebaseDefaultFirebaseProvidersModule, DbxFirebaseDefaultFirestoreProviderModule, DbxFirebaseDefaultFunctionsProviderModule, DbxFirebaseDefaultStorageProviderModule, DbxFirebaseDocumentAuthIdDirective, DbxFirebaseDocumentLoaderInstance, DbxFirebaseDocumentStoreDirective, DbxFirebaseDocumentStoreRouteIdDirective, DbxFirebaseEmailFormComponent, DbxFirebaseEmailRecoveryFormComponent, DbxFirebaseEmulatorModule, DbxFirebaseFirestoreCollectionModule, DbxFirebaseFunctionsModule, DbxFirebaseIdRouteParamRedirectInstance, DbxFirebaseLoginAnonymousComponent, DbxFirebaseLoginAppleComponent, DbxFirebaseLoginButtonComponent, DbxFirebaseLoginButtonContainerComponent, DbxFirebaseLoginComponent, DbxFirebaseLoginContext, DbxFirebaseLoginContextBackButtonComponent, DbxFirebaseLoginContextDirective, DbxFirebaseLoginEmailComponent, DbxFirebaseLoginEmailContentComponent, DbxFirebaseLoginFacebookComponent, DbxFirebaseLoginGitHubComponent, DbxFirebaseLoginGoogleComponent, DbxFirebaseLoginListComponent, DbxFirebaseLoginMicrosoftComponent, DbxFirebaseLoginModule, DbxFirebaseLoginModuleRootConfig, DbxFirebaseLoginTermsComponent, DbxFirebaseLoginTermsSimpleComponent, DbxFirebaseLoginTwitterComponent, DbxFirebaseModelModule, DbxFirebaseModelStoreModule, DbxFirebaseModule, DbxFirebaseParsedEmulatorsConfig, DbxFirebaseRegisterComponent, DbxFirebaseRegisterEmailComponent, DbxFirebaseStorageModule, DbxFirebaseStorageService, DbxFirestoreContextService, DbxLimitedFirebaseDocumentLoaderInstance, FIREBASE_AUTH_NETWORK_REQUEST_ERROR, FIREBASE_AUTH_USER_NOT_FOUND_ERROR, OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY, authRolesObsWithClaimsService, authUserInfoFromAuthUser, authUserStateFromFirebaseAuthService, dbxFirebaseCollectionChangeTrigger, dbxFirebaseCollectionChangeTriggerForStore, dbxFirebaseCollectionChangeTriggerForWatcher, dbxFirebaseCollectionChangeTriggerInstance, dbxFirebaseCollectionChangeTriggerInstanceForStore, dbxFirebaseCollectionChangeTriggerInstanceForWatcher, dbxFirebaseCollectionChangeWatcher, dbxFirebaseCollectionLoaderInstance, dbxFirebaseCollectionLoaderInstanceWithCollection, dbxFirebaseDocumentLoaderInstance, dbxFirebaseDocumentLoaderInstanceWithAccessor, dbxFirebaseIdRouteParamRedirect, dbxFirebaseStorageModuleContextConfigFactory, dbxLimitedFirebaseDocumentLoaderInstance, dbxLimitedFirebaseDocumentLoaderInstanceWithAccessor, defaultDbxFirebaseAuthServiceDelegateWithClaimsService, defaultFirebaseAuthLoginProvidersFactory, enableAppCheckDebugTokenGeneration, firebaseAuthErrorToReadableError, firebaseAuthTokenFromUser, firebaseDocumentStoreCreateFunction, firebaseDocumentStoreDeleteFunction, firebaseDocumentStoreUpdateFunction, modelDoesNotExistError, provideDbxFirebaseCollectionStoreDirective, provideDbxFirebaseCollectionWithParentStoreDirective, provideDbxFirebaseDocumentStoreDirective, readValueFromIdToken, setParentStoreEffect };
3088
+ export { AbstractConfiguredDbxFirebaseLoginButtonDirective, AbstractDbxFirebaseCollectionStore, AbstractDbxFirebaseCollectionWithParentStore, AbstractDbxFirebaseDocumentStore, AbstractDbxFirebaseDocumentWithParentStore, AbstractSingleItemDbxFirebaseDocument, DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_ID_PARAM_KEY, DBX_FIREBASE_ID_ROUTER_PARAM_DEFAULT_USE_PARAM_VALUE, DBX_FIREBASE_MODEL_DOES_NOT_EXIST_ERROR, DBX_FIREBASE_OPTIONS_TOKEN, DBX_FIREBASE_STORAGE_CONTEXT_CONFIG_TOKEN, DBX_FIREBASE_STORAGE_CONTEXT_TOKEN, DBX_FIRESTORE_CONTEXT_TOKEN, DEFAULT_CONFIGURED_DBX_FIREBASE_LOGIN_BUTTON_TEMPLATE, DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE, DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG, DEFAULT_FIREBASE_AUTH_LOGIN_PASSWORD_CONFIG_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_PROVIDERS_TOKEN, DEFAULT_FIREBASE_AUTH_LOGIN_TERMS_COMPONENT_CLASS_TOKEN, DEFAULT_FIREBASE_COLLECTION_CHANGE_TRIGGER_FUNCTION, DEFAULT_FIREBASE_LOGIN_METHOD_CATEGORY, DbxFirebaseAppCheckHttpInterceptor, DbxFirebaseAuthContextInfo, DbxFirebaseAuthLoginService, DbxFirebaseAuthModule, DbxFirebaseAuthService, DbxFirebaseAuthServiceDelegate, DbxFirebaseCollectionChangeDirective, DbxFirebaseCollectionChangeTriggerInstance, DbxFirebaseCollectionChangeWatcherInstance, DbxFirebaseCollectionHasChangeDirective, DbxFirebaseCollectionListDirective, DbxFirebaseCollectionLoaderInstance, DbxFirebaseCollectionStoreDirective, DbxFirebaseCollectionWithParentStoreDirective, DbxFirebaseDefaultAppCheckProviderModule, DbxFirebaseDefaultAuthProviderModule, DbxFirebaseDefaultFirebaseProvidersModule, DbxFirebaseDefaultFirestoreProviderModule, DbxFirebaseDefaultFunctionsProviderModule, DbxFirebaseDefaultStorageProviderModule, DbxFirebaseDocumentAuthIdDirective, DbxFirebaseDocumentLoaderInstance, DbxFirebaseDocumentStoreDirective, DbxFirebaseDocumentStoreRouteIdDirective, DbxFirebaseEmailFormComponent, DbxFirebaseEmailRecoveryFormComponent, DbxFirebaseEmulatorModule, DbxFirebaseFirestoreCollectionModule, DbxFirebaseFunctionsModule, DbxFirebaseIdRouteParamRedirectInstance, DbxFirebaseLoginAnonymousComponent, DbxFirebaseLoginAppleComponent, DbxFirebaseLoginButtonComponent, DbxFirebaseLoginButtonContainerComponent, DbxFirebaseLoginComponent, DbxFirebaseLoginContext, DbxFirebaseLoginContextBackButtonComponent, DbxFirebaseLoginContextDirective, DbxFirebaseLoginEmailComponent, DbxFirebaseLoginEmailContentComponent, DbxFirebaseLoginFacebookComponent, DbxFirebaseLoginGitHubComponent, DbxFirebaseLoginGoogleComponent, DbxFirebaseLoginListComponent, DbxFirebaseLoginMicrosoftComponent, DbxFirebaseLoginModule, DbxFirebaseLoginModuleRootConfig, DbxFirebaseLoginTermsComponent, DbxFirebaseLoginTermsSimpleComponent, DbxFirebaseLoginTwitterComponent, DbxFirebaseModelModule, DbxFirebaseModelStoreModule, DbxFirebaseModule, DbxFirebaseParsedEmulatorsConfig, DbxFirebaseRegisterComponent, DbxFirebaseRegisterEmailComponent, DbxFirebaseStorageModule, DbxFirebaseStorageService, DbxFirestoreContextService, DbxLimitedFirebaseDocumentLoaderInstance, FIREBASE_AUTH_NETWORK_REQUEST_ERROR, FIREBASE_AUTH_USER_NOT_FOUND_ERROR, OAUTH_FIREBASE_LOGIN_METHOD_CATEGORY, authRolesObsWithClaimsService, authUserInfoFromAuthUser, authUserStateFromFirebaseAuthServiceFunction, dbxFirebaseCollectionChangeTrigger, dbxFirebaseCollectionChangeTriggerForStore, dbxFirebaseCollectionChangeTriggerForWatcher, dbxFirebaseCollectionChangeTriggerInstance, dbxFirebaseCollectionChangeTriggerInstanceForStore, dbxFirebaseCollectionChangeTriggerInstanceForWatcher, dbxFirebaseCollectionChangeWatcher, dbxFirebaseCollectionLoaderInstance, dbxFirebaseCollectionLoaderInstanceWithCollection, dbxFirebaseDocumentLoaderInstance, dbxFirebaseDocumentLoaderInstanceWithAccessor, dbxFirebaseIdRouteParamRedirect, dbxFirebaseStorageModuleContextConfigFactory, dbxLimitedFirebaseDocumentLoaderInstance, dbxLimitedFirebaseDocumentLoaderInstanceWithAccessor, defaultDbxFirebaseAuthServiceDelegateWithClaimsService, defaultFirebaseAuthLoginProvidersFactory, enableAppCheckDebugTokenGeneration, firebaseAuthErrorToReadableError, firebaseAuthTokenFromUser, firebaseDocumentStoreCreateFunction, firebaseDocumentStoreDeleteFunction, firebaseDocumentStoreUpdateFunction, modelDoesNotExistError, provideDbxFirebaseCollectionStoreDirective, provideDbxFirebaseCollectionWithParentStoreDirective, provideDbxFirebaseDocumentStoreDirective, readValueFromIdToken, setParentStoreEffect, stateFromTokenForLoggedInUserFunction };
3050
3089
  //# sourceMappingURL=dereekb-dbx-firebase.mjs.map