@dereekb/dbx-firebase 7.3.0 → 7.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -16,7 +16,8 @@ export function defaultDbxFirebaseAuthServiceDelegateWithClaimsService(config) {
16
16
  authUserStateObs: DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE.authUserStateObs,
17
17
  authRolesObs: authRolesObsWithClaimsService(config),
18
18
  isOnboarded: DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE.isOnboarded,
19
+ isAdminInAuthRoleSet: config.isAdminInAuthRoleSet ?? DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE.isAdminInAuthRoleSet,
19
20
  authRoleClaimsService: config.claimsService
20
21
  };
21
22
  }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZWJhc2UuYXV0aC5zZXJ2aWNlLmRlbGVnYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvYXV0aC9zZXJ2aWNlL2ZpcmViYXNlLmF1dGguc2VydmljZS5kZWxlZ2F0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFvRSxNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQUUsR0FBRyxFQUFjLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQTBELDBDQUEwQyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFVN0ksTUFBTSxVQUFVLDZCQUE2QixDQUE2QixNQUE4QztJQUN0SCxNQUFNLEVBQUUsdUJBQXVCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRTVFLE9BQU8sQ0FBQyxzQkFBOEMsRUFBMkIsRUFBRTtRQUNqRixJQUFJLEdBQUcsR0FBRyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVuSCxJQUFJLGdCQUFnQixFQUFFO1lBQ3BCLEdBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQXdCLEVBQUUsRUFBRSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2pLO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLENBQUM7QUFDSixDQUFDO0FBSUQsTUFBTSxVQUFVLHNEQUFzRCxDQUE2QixNQUF1RTtJQUN4SyxPQUFPO1FBQ0wsZ0JBQWdCLEVBQUUsMENBQTBDLENBQUMsZ0JBQWdCO1FBQzdFLFlBQVksRUFBRSw2QkFBNkIsQ0FBQyxNQUFNLENBQUM7UUFDbkQsV0FBVyxFQUFFLDBDQUEwQyxDQUFDLFdBQVc7UUFDbkUscUJBQXFCLEVBQUUsTUFBTSxDQUFDLGFBQW1FO0tBQ2xHLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWRkVG9TZXRDb3B5LCBBdXRoQ2xhaW1zLCBBdXRoQ2xhaW1zT2JqZWN0LCBBdXRoUm9sZUNsYWltc1NlcnZpY2UsIEF1dGhSb2xlU2V0IH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBtYXAsIE9ic2VydmFibGUsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGJ4RmlyZWJhc2VBdXRoU2VydmljZSwgRGJ4RmlyZWJhc2VBdXRoU2VydmljZURlbGVnYXRlLCBERUZBVUxUX0RCWF9GSVJFQkFTRV9BVVRIX1NFUlZJQ0VfREVMRUdBVEUgfSBmcm9tICcuL2ZpcmViYXNlLmF1dGguc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aFJvbGVzT2JzV2l0aENsYWltc1NlcnZpY2VDb25maWc8VCBleHRlbmRzIEF1dGhDbGFpbXNPYmplY3Q+IHtcbiAgcmVhZG9ubHkgY2xhaW1zU2VydmljZTogQXV0aFJvbGVDbGFpbXNTZXJ2aWNlPFQ+O1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gYWxzbyBhZGQgdGhlIGN1cnJlbnQgQXV0aFVzZXJTdGF0ZSB2YWx1ZSB0byBkZWNvZGVkIHJvbGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgYWRkQXV0aFVzZXJTdGF0ZVRvUm9sZXM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXV0aFJvbGVzT2JzV2l0aENsYWltc1NlcnZpY2U8VCBleHRlbmRzIEF1dGhDbGFpbXNPYmplY3Q+KGNvbmZpZzogQXV0aFJvbGVzT2JzV2l0aENsYWltc1NlcnZpY2VDb25maWc8VD4pOiAoZGJ4RmlyZWJhc2VBdXRoU2VydmljZTogRGJ4RmlyZWJhc2VBdXRoU2VydmljZSkgPT4gT2JzZXJ2YWJsZTxBdXRoUm9sZVNldD4ge1xuICBjb25zdCB7IGFkZEF1dGhVc2VyU3RhdGVUb1JvbGVzOiBhZGRBdXRoVXNlclN0YXRlLCBjbGFpbXNTZXJ2aWNlIH0gPSBjb25maWc7XG5cbiAgcmV0dXJuIChkYnhGaXJlYmFzZUF1dGhTZXJ2aWNlOiBEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlKTogT2JzZXJ2YWJsZTxBdXRoUm9sZVNldD4gPT4ge1xuICAgIGxldCBvYnMgPSBkYnhGaXJlYmFzZUF1dGhTZXJ2aWNlLmlkVG9rZW5SZXN1bHQkLnBpcGUobWFwKCh4KSA9PiBjbGFpbXNTZXJ2aWNlLnRvUm9sZXMoeC5jbGFpbXMgYXMgQXV0aENsYWltczxUPikpKTtcblxuICAgIGlmIChhZGRBdXRoVXNlclN0YXRlKSB7XG4gICAgICBvYnMgPSBvYnMucGlwZShzd2l0Y2hNYXAoKGF1dGhSb2xlU2V0OiBBdXRoUm9sZVNldCkgPT4gZGJ4RmlyZWJhc2VBdXRoU2VydmljZS5hdXRoVXNlclN0YXRlJC5waXBlKG1hcCgodXNlclN0YXRlKSA9PiBhZGRUb1NldENvcHkoYXV0aFJvbGVTZXQsIFt1c2VyU3RhdGVdKSkpKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9icztcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgRGVmYXVsdERieEZpcmViYXNlQXV0aFNlcnZpY2VEZWxlZ2F0ZVdpdGhDbGFpbXNTZXJ2aWNlQ29uZmlnPFQgZXh0ZW5kcyBBdXRoQ2xhaW1zT2JqZWN0PiA9IEF1dGhSb2xlc09ic1dpdGhDbGFpbXNTZXJ2aWNlQ29uZmlnPFQ+O1xuXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdERieEZpcmViYXNlQXV0aFNlcnZpY2VEZWxlZ2F0ZVdpdGhDbGFpbXNTZXJ2aWNlPFQgZXh0ZW5kcyBBdXRoQ2xhaW1zT2JqZWN0Pihjb25maWc6IERlZmF1bHREYnhGaXJlYmFzZUF1dGhTZXJ2aWNlRGVsZWdhdGVXaXRoQ2xhaW1zU2VydmljZUNvbmZpZzxUPik6IERieEZpcmViYXNlQXV0aFNlcnZpY2VEZWxlZ2F0ZSB7XG4gIHJldHVybiB7XG4gICAgYXV0aFVzZXJTdGF0ZU9iczogREVGQVVMVF9EQlhfRklSRUJBU0VfQVVUSF9TRVJWSUNFX0RFTEVHQVRFLmF1dGhVc2VyU3RhdGVPYnMsXG4gICAgYXV0aFJvbGVzT2JzOiBhdXRoUm9sZXNPYnNXaXRoQ2xhaW1zU2VydmljZShjb25maWcpLFxuICAgIGlzT25ib2FyZGVkOiBERUZBVUxUX0RCWF9GSVJFQkFTRV9BVVRIX1NFUlZJQ0VfREVMRUdBVEUuaXNPbmJvYXJkZWQsXG4gICAgYXV0aFJvbGVDbGFpbXNTZXJ2aWNlOiBjb25maWcuY2xhaW1zU2VydmljZSBhcyB1bmtub3duIGFzIEF1dGhSb2xlQ2xhaW1zU2VydmljZTxBdXRoQ2xhaW1zT2JqZWN0PlxuICB9O1xufVxuIl19
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZWJhc2UuYXV0aC5zZXJ2aWNlLmRlbGVnYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvYXV0aC9zZXJ2aWNlL2ZpcmViYXNlLmF1dGguc2VydmljZS5kZWxlZ2F0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFvRSxNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQUUsR0FBRyxFQUFjLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQTBELDBDQUEwQyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFVN0ksTUFBTSxVQUFVLDZCQUE2QixDQUE2QixNQUE4QztJQUN0SCxNQUFNLEVBQUUsdUJBQXVCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRTVFLE9BQU8sQ0FBQyxzQkFBOEMsRUFBMkIsRUFBRTtRQUNqRixJQUFJLEdBQUcsR0FBRyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVuSCxJQUFJLGdCQUFnQixFQUFFO1lBQ3BCLEdBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQXdCLEVBQUUsRUFBRSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2pLO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLENBQUM7QUFDSixDQUFDO0FBSUQsTUFBTSxVQUFVLHNEQUFzRCxDQUE2QixNQUF1RTtJQUN4SyxPQUFPO1FBQ0wsZ0JBQWdCLEVBQUUsMENBQTBDLENBQUMsZ0JBQWdCO1FBQzdFLFlBQVksRUFBRSw2QkFBNkIsQ0FBQyxNQUFNLENBQUM7UUFDbkQsV0FBVyxFQUFFLDBDQUEwQyxDQUFDLFdBQVc7UUFDbkUsb0JBQW9CLEVBQUUsTUFBTSxDQUFDLG9CQUFvQixJQUFJLDBDQUEwQyxDQUFDLG9CQUFvQjtRQUNwSCxxQkFBcUIsRUFBRSxNQUFNLENBQUMsYUFBbUU7S0FDbEcsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZGRUb1NldENvcHksIEF1dGhDbGFpbXMsIEF1dGhDbGFpbXNPYmplY3QsIEF1dGhSb2xlQ2xhaW1zU2VydmljZSwgQXV0aFJvbGVTZXQgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlLCBEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlRGVsZWdhdGUsIERFRkFVTFRfREJYX0ZJUkVCQVNFX0FVVEhfU0VSVklDRV9ERUxFR0FURSB9IGZyb20gJy4vZmlyZWJhc2UuYXV0aC5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBBdXRoUm9sZXNPYnNXaXRoQ2xhaW1zU2VydmljZUNvbmZpZzxUIGV4dGVuZHMgQXV0aENsYWltc09iamVjdD4gZXh0ZW5kcyBQYXJ0aWFsPFBpY2s8RGJ4RmlyZWJhc2VBdXRoU2VydmljZURlbGVnYXRlLCAnaXNBZG1pbkluQXV0aFJvbGVTZXQnPj4ge1xuICByZWFkb25seSBjbGFpbXNTZXJ2aWNlOiBBdXRoUm9sZUNsYWltc1NlcnZpY2U8VD47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBhbHNvIGFkZCB0aGUgY3VycmVudCBBdXRoVXNlclN0YXRlIHZhbHVlIHRvIGRlY29kZWQgcm9sZXMuXG4gICAqL1xuICByZWFkb25seSBhZGRBdXRoVXNlclN0YXRlVG9Sb2xlcz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdXRoUm9sZXNPYnNXaXRoQ2xhaW1zU2VydmljZTxUIGV4dGVuZHMgQXV0aENsYWltc09iamVjdD4oY29uZmlnOiBBdXRoUm9sZXNPYnNXaXRoQ2xhaW1zU2VydmljZUNvbmZpZzxUPik6IChkYnhGaXJlYmFzZUF1dGhTZXJ2aWNlOiBEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlKSA9PiBPYnNlcnZhYmxlPEF1dGhSb2xlU2V0PiB7XG4gIGNvbnN0IHsgYWRkQXV0aFVzZXJTdGF0ZVRvUm9sZXM6IGFkZEF1dGhVc2VyU3RhdGUsIGNsYWltc1NlcnZpY2UgfSA9IGNvbmZpZztcblxuICByZXR1cm4gKGRieEZpcmViYXNlQXV0aFNlcnZpY2U6IERieEZpcmViYXNlQXV0aFNlcnZpY2UpOiBPYnNlcnZhYmxlPEF1dGhSb2xlU2V0PiA9PiB7XG4gICAgbGV0IG9icyA9IGRieEZpcmViYXNlQXV0aFNlcnZpY2UuaWRUb2tlblJlc3VsdCQucGlwZShtYXAoKHgpID0+IGNsYWltc1NlcnZpY2UudG9Sb2xlcyh4LmNsYWltcyBhcyBBdXRoQ2xhaW1zPFQ+KSkpO1xuXG4gICAgaWYgKGFkZEF1dGhVc2VyU3RhdGUpIHtcbiAgICAgIG9icyA9IG9icy5waXBlKHN3aXRjaE1hcCgoYXV0aFJvbGVTZXQ6IEF1dGhSb2xlU2V0KSA9PiBkYnhGaXJlYmFzZUF1dGhTZXJ2aWNlLmF1dGhVc2VyU3RhdGUkLnBpcGUobWFwKCh1c2VyU3RhdGUpID0+IGFkZFRvU2V0Q29weShhdXRoUm9sZVNldCwgW3VzZXJTdGF0ZV0pKSkpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb2JzO1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBEZWZhdWx0RGJ4RmlyZWJhc2VBdXRoU2VydmljZURlbGVnYXRlV2l0aENsYWltc1NlcnZpY2VDb25maWc8VCBleHRlbmRzIEF1dGhDbGFpbXNPYmplY3Q+ID0gQXV0aFJvbGVzT2JzV2l0aENsYWltc1NlcnZpY2VDb25maWc8VD47XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0RGJ4RmlyZWJhc2VBdXRoU2VydmljZURlbGVnYXRlV2l0aENsYWltc1NlcnZpY2U8VCBleHRlbmRzIEF1dGhDbGFpbXNPYmplY3Q+KGNvbmZpZzogRGVmYXVsdERieEZpcmViYXNlQXV0aFNlcnZpY2VEZWxlZ2F0ZVdpdGhDbGFpbXNTZXJ2aWNlQ29uZmlnPFQ+KTogRGJ4RmlyZWJhc2VBdXRoU2VydmljZURlbGVnYXRlIHtcbiAgcmV0dXJuIHtcbiAgICBhdXRoVXNlclN0YXRlT2JzOiBERUZBVUxUX0RCWF9GSVJFQkFTRV9BVVRIX1NFUlZJQ0VfREVMRUdBVEUuYXV0aFVzZXJTdGF0ZU9icyxcbiAgICBhdXRoUm9sZXNPYnM6IGF1dGhSb2xlc09ic1dpdGhDbGFpbXNTZXJ2aWNlKGNvbmZpZyksXG4gICAgaXNPbmJvYXJkZWQ6IERFRkFVTFRfREJYX0ZJUkVCQVNFX0FVVEhfU0VSVklDRV9ERUxFR0FURS5pc09uYm9hcmRlZCxcbiAgICBpc0FkbWluSW5BdXRoUm9sZVNldDogY29uZmlnLmlzQWRtaW5JbkF1dGhSb2xlU2V0ID8/IERFRkFVTFRfREJYX0ZJUkVCQVNFX0FVVEhfU0VSVklDRV9ERUxFR0FURS5pc0FkbWluSW5BdXRoUm9sZVNldCxcbiAgICBhdXRoUm9sZUNsYWltc1NlcnZpY2U6IGNvbmZpZy5jbGFpbXNTZXJ2aWNlIGFzIHVua25vd24gYXMgQXV0aFJvbGVDbGFpbXNTZXJ2aWNlPEF1dGhDbGFpbXNPYmplY3Q+XG4gIH07XG59XG4iXX0=
@@ -3,7 +3,7 @@ import { Injectable, Optional } from '@angular/core';
3
3
  import { loggedOutObsFromIsLoggedIn, loggedInObsFromIsLoggedIn, authUserIdentifier } from '@dereekb/dbx-core';
4
4
  import { Auth, authState, GoogleAuthProvider, signInWithPopup, signInAnonymously, signInWithEmailAndPassword, FacebookAuthProvider, GithubAuthProvider, TwitterAuthProvider, createUserWithEmailAndPassword } from '@angular/fire/auth';
5
5
  import { timeout, startWith, distinctUntilChanged, shareReplay, map, switchMap, firstValueFrom } from 'rxjs';
6
- import { cachedGetter } from '@dereekb/util';
6
+ import { AUTH_ADMIN_ROLE, cachedGetter } from '@dereekb/util';
7
7
  import { authUserInfoFromAuthUser, firebaseAuthTokenFromUser } from '../auth';
8
8
  import { sendPasswordResetEmail } from 'firebase/auth';
9
9
  import { authUserStateFromFirebaseAuthService } from './firebase.auth.rxjs';
@@ -21,6 +21,9 @@ export const DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE = {
21
21
  },
22
22
  isOnboarded(dbxFirebaseAuthService) {
23
23
  return dbxFirebaseAuthService.authUserState$.pipe(map((x) => x === 'user'));
24
+ },
25
+ isAdminInAuthRoleSet(authRoleSet) {
26
+ return authRoleSet.has(AUTH_ADMIN_ROLE);
24
27
  }
25
28
  };
26
29
  // MARK: Service
@@ -50,6 +53,7 @@ export class DbxFirebaseAuthService {
50
53
  this.authRoles$ = delegate.authRolesObs(this);
51
54
  this.isOnboarded$ = delegate.isOnboarded(this);
52
55
  this._authRoleClaimsService = delegate.authRoleClaimsService;
56
+ this.isAdminInAuthRoleSet = delegate.isAdminInAuthRoleSet;
53
57
  }
54
58
  rolesForClaims(claims) {
55
59
  let result;
@@ -63,7 +67,15 @@ export class DbxFirebaseAuthService {
63
67
  return result;
64
68
  }
65
69
  getAuthContextInfo() {
66
- return firstValueFrom(this.authUser$).then((user) => (user ? new DbxFirebaseAuthContextInfo(this, user) : undefined));
70
+ return firstValueFrom(this.authUser$).then((user) => this.loadAuthContextInfoForUser(user));
71
+ }
72
+ async loadAuthContextInfoForUser(user) {
73
+ let result;
74
+ if (user) {
75
+ const jwtToken = await user.getIdTokenResult();
76
+ result = new DbxFirebaseAuthContextInfo(this, user, jwtToken);
77
+ }
78
+ return result;
67
79
  }
68
80
  logInWithGoogle() {
69
81
  return this.logInWithPopup(new GoogleAuthProvider());
@@ -118,22 +130,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
118
130
  * FirebaseAuthContextInfo implementation from DbxFirebaseAuthService.
119
131
  */
120
132
  export class DbxFirebaseAuthContextInfo {
121
- constructor(service, user) {
133
+ constructor(service, user, jwtToken) {
122
134
  this.service = service;
123
135
  this.user = user;
136
+ this.jwtToken = jwtToken;
124
137
  this._token = cachedGetter(() => firebaseAuthTokenFromUser(this.user));
138
+ this._roles = cachedGetter(() => this.service.rolesForClaims(this.getClaims()));
139
+ this._isAdmin = cachedGetter(() => this.service.isAdminInAuthRoleSet(this._roles()));
125
140
  }
126
141
  get uid() {
127
142
  return this.user.uid;
128
143
  }
144
+ isAdmin() {
145
+ return this._isAdmin();
146
+ }
147
+ getClaims() {
148
+ return this.jwtToken.claims;
149
+ }
150
+ getAuthRoles() {
151
+ return this._roles();
152
+ }
129
153
  loadClaims() {
130
- return this.user.getIdTokenResult().then((x) => x.claims);
154
+ return Promise.resolve(this.getClaims());
131
155
  }
132
156
  loadAuthRoles() {
133
- return this.loadClaims().then((x) => this.service.rolesForClaims(x));
157
+ return Promise.resolve(this.getAuthRoles());
134
158
  }
135
159
  get token() {
136
160
  return this._token();
137
161
  }
138
162
  }
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZWJhc2UuYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvYXV0aC9zZXJ2aWNlL2ZpcmViYXNlLmF1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQWlDLDBCQUEwQixFQUFFLHlCQUF5QixFQUFzQixrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pLLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFvQyxrQkFBa0IsRUFBRSxlQUFlLEVBQXVDLGlCQUFpQixFQUFFLDBCQUEwQixFQUFrQixvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9ULE9BQU8sRUFBYyxPQUFPLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6SCxPQUFPLEVBQW9FLFlBQVksRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUN0SCxPQUFPLEVBQWdCLHdCQUF3QixFQUFFLHlCQUF5QixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBRzVFLGlCQUFpQjtBQUNqQixNQUFNLE9BQWdCLDhCQUE4QjtDQUtuRDtBQUVELE1BQU0sQ0FBQyxNQUFNLDBDQUEwQyxHQUFtQztJQUN4RixnQkFBZ0IsQ0FBQyxzQkFB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RCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN2QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaWx0ZXJNYXliZSwgaXNOb3QgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRoVXNlclN0YXRlLCBEYnhBdXRoU2VydmljZSwgbG9nZ2VkT3V0T2JzRnJvbUlzTG9nZ2VkSW4sIGxvZ2dlZEluT2JzRnJvbUlzTG9nZ2VkSW4sIEF1dGhVc2VySWRlbnRpZmllciwgYXV0aFVzZXJJZGVudGlmaWVyIH0gZnJvbSAnQGRlcmVla2IvZGJ4LWNvcmUnO1xuaW1wb3J0IHsgQXV0aCwgYXV0aFN0YXRlLCBVc2VyLCBJZFRva2VuUmVzdWx0LCBQYXJzZWRUb2tlbiwgR29vZ2xlQXV0aFByb3ZpZGVyLCBzaWduSW5XaXRoUG9wdXAsIEF1dGhQcm92aWRlciwgUG9wdXBSZWRpcmVjdFJlc29sdmVyLCBzaWduSW5Bbm9ueW1vdXNseSwgc2lnbkluV2l0aEVtYWlsQW5kUGFzc3dvcmQsIFVzZXJDcmVkZW50aWFsLCBGYWNlYm9va0F1dGhQcm92aWRlciwgR2l0aHViQXV0aFByb3ZpZGVyLCBUd2l0dGVyQXV0aFByb3ZpZGVyLCBjcmVhdGVVc2VyV2l0aEVtYWlsQW5kUGFzc3dvcmQgfSBmcm9tICdAYW5ndWxhci9maXJlL2F1dGgnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGltZW91dCwgc3RhcnRXaXRoLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc2hhcmVSZXBsYXksIG1hcCwgc3dpdGNoTWFwLCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXV0aENsYWltcywgQXV0aENsYWltc09iamVjdCwgQXV0aFJvbGVDbGFpbXNTZXJ2aWNlLCBBdXRoUm9sZVNldCwgY2FjaGVkR2V0dGVyLCBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgQXV0aFVzZXJJbmZvLCBhdXRoVXNlckluZm9Gcm9tQXV0aFVzZXIsIGZpcmViYXNlQXV0aFRva2VuRnJvbVVzZXIgfSBmcm9tICcuLi9hdXRoJztcbmltcG9ydCB7IHNlbmRQYXNzd29yZFJlc2V0RW1haWwgfSBmcm9tICdmaXJlYmFzZS9hdXRoJztcbmltcG9ydCB7IGF1dGhVc2VyU3RhdGVGcm9tRmlyZWJhc2VBdXRoU2VydmljZSB9IGZyb20gJy4vZmlyZWJhc2UuYXV0aC5yeGpzJztcbmltcG9ydCB7IEZpcmViYXNlQXV0aENvbnRleHRJbmZvLCBGaXJlYmFzZUF1dGhUb2tlbiB9IGZyb20gJ0BkZXJlZWtiL2ZpcmViYXNlJztcblxuLy8gTUFSSzogRGVsZWdhdGVcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlRGVsZWdhdGUge1xuICBhYnN0cmFjdCBhdXRoVXNlclN0YXRlT2JzKGRieEZpcmViYXNlQXV0aFNlcnZpY2U6IERieEZpcmViYXNlQXV0aFNlcnZpY2UpOiBPYnNlcnZhYmxlPEF1dGhVc2VyU3RhdGU+O1xuICBhYnN0cmFjdCBhdXRoUm9sZXNPYnMoZGJ4RmlyZWJhc2VBdXRoU2VydmljZTogRGJ4RmlyZWJhc2VBdXRoU2VydmljZSk6IE9ic2VydmFibGU8QXV0aFJvbGVTZXQ+O1xuICBhYnN0cmFjdCBpc09uYm9hcmRlZChkYnhGaXJlYmFzZUF1dGhTZXJ2aWNlOiBEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlKTogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgYWJzdHJhY3QgYXV0aFJvbGVDbGFpbXNTZXJ2aWNlPzogTWF5YmU8QXV0aFJvbGVDbGFpbXNTZXJ2aWNlPEF1dGhDbGFpbXNPYmplY3Q+Pjtcbn1cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfREJYX0ZJUkVCQVNFX0FVVEhfU0VSVklDRV9ERUxFR0FURTogRGJ4RmlyZWJhc2VBdXRoU2VydmljZURlbGVnYXRlID0ge1xuICBhdXRoVXNlclN0YXRlT2JzKGRieEZpcmViYXNlQXV0aFNlcnZpY2U6IERieEZpcmViYXNlQXV0aFNlcnZpY2UpOiBPYnNlcnZhYmxlPEF1dGhVc2VyU3RhdGU+IHtcbiAgICByZXR1cm4gYXV0aFVzZXJTdGF0ZUZyb21GaXJlYmFzZUF1dGhTZXJ2aWNlKGRieEZpcmViYXNlQXV0aFNlcnZpY2UpO1xuICB9LFxuICBhdXRoUm9sZXNPYnMoZGJ4RmlyZWJhc2VBdXRoU2VydmljZTogRGJ4RmlyZWJhc2VBdXRoU2VydmljZSk6IE9ic2VydmFibGU8QXV0aFJvbGVTZXQ+IHtcbiAgICByZXR1cm4gZGJ4RmlyZWJhc2VBdXRoU2VydmljZS5hdXRoVXNlclN0YXRlJC5waXBlKG1hcCgoeCkgPT4gKHggPT09ICd1c2VyJyA/IG5ldyBTZXQoWyd1c2VyJ10pIDogbmV3IFNldCgpKSkpO1xuICB9LFxuICBpc09uYm9hcmRlZChkYnhGaXJlYmFzZUF1dGhTZXJ2aWNlOiBEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGRieEZpcmViYXNlQXV0aFNlcnZpY2UuYXV0aFVzZXJTdGF0ZSQucGlwZShtYXAoKHgpID0+IHggPT09ICd1c2VyJykpO1xuICB9XG59O1xuXG4vLyBNQVJLOiBTZXJ2aWNlXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGJ4RmlyZWJhc2VBdXRoU2VydmljZSBpbXBsZW1lbnRzIERieEF1dGhTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXV0aFN0YXRlJDogT2JzZXJ2YWJsZTxNYXliZTxVc2VyPj4gPSBhdXRoU3RhdGUodGhpcy5maXJlYmFzZUF1dGgpO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRBdXRoVXNlciQ6IE9ic2VydmFibGU8TWF5YmU8VXNlcj4+ID0gdGhpcy5fYXV0aFN0YXRlJC5waXBlKFxuICAgIHRpbWVvdXQoe1xuICAgICAgZmlyc3Q6IDEwMDAsXG4gICAgICB3aXRoOiAoKSA9PiB0aGlzLl9hdXRoU3RhdGUkLnBpcGUoc3RhcnRXaXRoKG51bGwpKVxuICAgIH0pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBjdXJyZW50QXV0aFVzZXJJbmZvJDogT2JzZXJ2YWJsZTxNYXliZTxBdXRoVXNlckluZm8+PiA9IHRoaXMuY3VycmVudEF1dGhVc2VyJC5waXBlKG1hcCgoeCkgPT4gKHggPyBhdXRoVXNlckluZm9Gcm9tQXV0aFVzZXIoeCkgOiB1bmRlZmluZWQpKSk7XG5cbiAgcmVhZG9ubHkgYXV0aFVzZXIkOiBPYnNlcnZhYmxlPFVzZXI+ID0gdGhpcy5jdXJyZW50QXV0aFVzZXIkLnBpcGUoZmlsdGVyTWF5YmUoKSk7XG4gIHJlYWRvbmx5IGF1dGhVc2VySW5mbyQ6IE9ic2VydmFibGU8QXV0aFVzZXJJbmZvPiA9IHRoaXMuYXV0aFVzZXIkLnBpcGUobWFwKGF1dGhVc2VySW5mb0Zyb21BdXRoVXNlcikpO1xuXG4gIHJlYWRvbmx5IGhhc0F1dGhVc2VyJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuY3VycmVudEF1dGhVc2VyJC5waXBlKFxuICAgIG1hcCgoeCkgPT4gQm9vbGVhbih4KSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuICByZWFkb25seSBpc0Fub255bW91c1VzZXIkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5hdXRoVXNlciQucGlwZShcbiAgICBtYXAoKHgpID0+IHguaXNBbm9ueW1vdXMpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcbiAgcmVhZG9ubHkgaXNOb3RBbm9ueW1vdXNVc2VyJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuaXNBbm9ueW1vdXNVc2VyJC5waXBlKGlzTm90KCkpO1xuXG4gIHJlYWRvbmx5IGlzTG9nZ2VkSW4kOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5oYXNBdXRoVXNlciQ7XG5cbiAgcmVhZG9ubHkgaXNOb3RMb2dnZWRJbiQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmlzTG9nZ2VkSW4kLnBpcGUoaXNOb3QoKSk7XG4gIHJlYWRvbmx5IG9uTG9nSW4kOiBPYnNlcnZhYmxlPHZvaWQ+ID0gbG9nZ2VkSW5PYnNGcm9tSXNMb2dnZWRJbih0aGlzLmlzTG9nZ2VkSW4kKTtcbiAgcmVhZG9ubHkgb25Mb2dPdXQkOiBPYnNlcnZhYmxlPHZvaWQ+ID0gbG9nZ2VkT3V0T2JzRnJvbUlzTG9nZ2VkSW4odGhpcy5pc0xvZ2dlZEluJCk7XG4gIHJlYWRvbmx5IHVzZXJJZGVudGlmaWVyJDogT2JzZXJ2YWJsZTxBdXRoVXNlcklkZW50aWZpZXI+ID0gdGhpcy5jdXJyZW50QXV0aFVzZXIkLnBpcGUobWFwKCh4KSA9PiBhdXRoVXNlcklkZW50aWZpZXIoeD8udWlkKSkpO1xuXG4gIHJlYWRvbmx5IGlkVG9rZW5SZXN1bHQkOiBPYnNlcnZhYmxlPElkVG9rZW5SZXN1bHQ+ID0gdGhpcy5hdXRoVXNlciQucGlwZShzd2l0Y2hNYXAoKHgpID0+IHguZ2V0SWRUb2tlblJlc3VsdCgpKSk7XG5cbiAgcmVhZG9ubHkgY2xhaW1zJDogT2JzZXJ2YWJsZTxQYXJzZWRUb2tlbj4gPSB0aGlzLmlkVG9rZW5SZXN1bHQkLnBpcGUobWFwKCh4KSA9PiB4LmNsYWltcykpO1xuXG4gIHJlYWRvbmx5IGF1dGhVc2VyU3RhdGUkOiBPYnNlcnZhYmxlPEF1dGhVc2VyU3RhdGU+O1xuICByZWFkb25seSBhdXRoUm9sZXMkOiBPYnNlcnZhYmxlPEF1dGhSb2xlU2V0PjtcbiAgcmVhZG9ubHkgaXNPbmJvYXJkZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIHByaXZhdGUgX2F1dGhSb2xlQ2xhaW1zU2VydmljZT86IE1heWJlPEF1dGhSb2xlQ2xhaW1zU2VydmljZTxBdXRoQ2xhaW1zT2JqZWN0Pj47XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgZmlyZWJhc2VBdXRoOiBBdXRoLCBAT3B0aW9uYWwoKSBkZWxlZ2F0ZTogRGJ4RmlyZWJhc2VBdXRoU2VydmljZURlbGVnYXRlKSB7XG4gICAgZGVsZWdhdGUgPSBkZWxlZ2F0ZSA/PyBERUZBVUxUX0RCWF9GSVJFQkFTRV9BVVRIX1NFUlZJQ0VfREVMRUdBVEU7XG4gICAgdGhpcy5hdXRoVXNlclN0YXRlJCA9IGRlbGVnYXRlLmF1dGhVc2VyU3RhdGVPYnModGhpcykucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZVJlcGxheSgxKSk7XG4gICAgdGhpcy5hdXRoUm9sZXMkID0gZGVsZWdhdGUuYXV0aFJvbGVzT2JzKHRoaXMpO1xuICAgIHRoaXMuaXNPbmJvYXJkZWQkID0gZGVsZWdhdGUuaXNPbmJvYXJkZWQodGhpcyk7XG4gICAgdGhpcy5fYXV0aFJvbGVDbGFpbXNTZXJ2aWNlID0gZGVsZWdhdGUuYXV0aFJvbGVDbGFpbXNTZXJ2aWNlO1xuICB9XG5cbiAgcm9sZXNGb3JDbGFpbXM8VCBleHRlbmRzIEF1dGhDbGFpbXNPYmplY3QgPSBBdXRoQ2xhaW1zT2JqZWN0PihjbGFpbXM6IEF1dGhDbGFpbXM8VD4pOiBBdXRoUm9sZVNldCB7XG4gICAgbGV0IHJlc3VsdDogQXV0aFJvbGVTZXQ7XG5cbiAgICBpZiAodGhpcy5fYXV0aFJvbGVDbGFpbXNTZXJ2aWNlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fYXV0aFJvbGVDbGFpbXNTZXJ2aWNlLnRvUm9sZXMoY2xhaW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS53YXJuKCdEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlOiByb2xlc0ZvckNsYWltcyBjYWxsZWQgd2l0aCBubyBhdXRoUm9sZUNsYWltc1NlcnZpY2UgcHJvdmlkZWQuIEFuIGVtcHR5IHNldCBpcyByZXR1cm5lZC4nKTtcbiAgICAgIHJlc3VsdCA9IG5ldyBTZXQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZ2V0QXV0aENvbnRleHRJbmZvKCk6IFByb21pc2U8TWF5YmU8RGJ4RmlyZWJhc2VBdXRoQ29udGV4dEluZm8+PiB7XG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMuYXV0aFVzZXIkKS50aGVuKCh1c2VyKSA9PiAodXNlciA/IG5ldyBEYnhGaXJlYmFzZUF1dGhDb250ZXh0SW5mbyh0aGlzLCB1c2VyKSA6IHVuZGVmaW5lZCkpO1xuICB9XG5cbiAgbG9nSW5XaXRoR29vZ2xlKCk6IFByb21pc2U8VXNlckNyZWRlbnRpYWw+IHtcbiAgICByZXR1cm4gdGhpcy5sb2dJbldpdGhQb3B1cChuZXcgR29vZ2xlQXV0aFByb3ZpZGVyKCkpO1xuICB9XG5cbiAgbG9nSW5XaXRoRmFjZWJvb2soKTogUHJvbWlzZTxVc2VyQ3JlZGVudGlhbD4ge1xuICAgIHJldHVybiB0aGlzLmxvZ0luV2l0aFBvcHVwKG5ldyBGYWNlYm9va0F1dGhQcm92aWRlcigpKTtcbiAgfVxuXG4gIGxvZ0luV2l0aFR3aXR0ZXIoKTogUHJvbWlzZTxVc2VyQ3JlZGVudGlhbD4ge1xuICAgIHJldHVybiB0aGlzLmxvZ0luV2l0aFBvcHVwKG5ldyBUd2l0dGVyQXV0aFByb3ZpZGVyKCkpO1xuICB9XG5cbiAgbG9nSW5XaXRoR2l0aHViKCk6IFByb21pc2U8VXNlckNyZWRlbnRpYWw+IHtcbiAgICByZXR1cm4gdGhpcy5sb2dJbldpdGhQb3B1cChuZXcgR2l0aHViQXV0aFByb3ZpZGVyKCkpO1xuICB9XG5cbiAgbG9nSW5XaXRoQXBwbGUoKTogUHJvbWlzZTxVc2VyQ3JlZGVudGlhbD4ge1xuICAgIHRocm93IG5ldyBFcnJvcigndG9kbycpO1xuICB9XG5cbiAgbG9nSW5XaXRoTWljcm9zb2Z0KCk6IFByb21pc2U8VXNlckNyZWRlbnRpYWw+IHtcbiAgICAvLyByZXR1cm4gdGhpcy5sb2dJbldpdGhQb3B1cChuZXcgTWljcm9zb2Z0QXV0aFByb3ZpZGVyKCkpO1xuICAgIHRocm93IG5ldyBFcnJvcigndG9kbycpO1xuICB9XG5cbiAgbG9nSW5XaXRoUGhvbmUoKTogUHJvbWlzZTxVc2VyQ3JlZGVudGlhbD4ge1xuICAgIHRocm93IG5ldyBFcnJvcigndG9kbycpO1xuICAgIC8vIHJldHVybiBzaWduSW5XaXRoUGhvbmVOdW1iZXIodGhpcy5maXJlYmFzZUF1dGgsIClcbiAgfVxuXG4gIGxvZ0luV2l0aFBvcHVwKHByb3ZpZGVyOiBBdXRoUHJvdmlkZXIsIHJlc29sdmVyPzogUG9wdXBSZWRpcmVjdFJlc29sdmVyKTogUHJvbWlzZTxVc2VyQ3JlZGVudGlhbD4ge1xuICAgIHJldHVybiBzaWduSW5XaXRoUG9wdXAodGhpcy5maXJlYmFzZUF1dGgsIHByb3ZpZGVyLCByZXNvbHZlcik7XG4gIH1cblxuICByZWdpc3RlcldpdGhFbWFpbEFuZFBhc3N3b3JkKGVtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBQcm9taXNlPFVzZXJDcmVkZW50aWFsPiB7XG4gICAgcmV0dXJuIGNyZWF0ZVVzZXJXaXRoRW1haWxBbmRQYXNzd29yZCh0aGlzLmZpcmViYXNlQXV0aCwgZW1haWwsIHBhc3N3b3JkKTtcbiAgfVxuXG4gIHNlbmRQYXNzd29yZFJlc2V0RW1haWwoZW1haWw6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBzZW5kUGFzc3dvcmRSZXNldEVtYWlsKHRoaXMuZmlyZWJhc2VBdXRoLCBlbWFpbCk7XG4gIH1cblxuICBsb2dJbldpdGhFbWFpbEFuZFBhc3N3b3JkKGVtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBQcm9taXNlPFVzZXJDcmVkZW50aWFsPiB7XG4gICAgcmV0dXJuIHNpZ25JbldpdGhFbWFpbEFuZFBhc3N3b3JkKHRoaXMuZmlyZWJhc2VBdXRoLCBlbWFpbCwgcGFzc3dvcmQpO1xuICB9XG5cbiAgbG9nSW5Bc0Fub255bW91cygpOiBQcm9taXNlPFVzZXJDcmVkZW50aWFsPiB7XG4gICAgcmV0dXJuIHNpZ25JbkFub255bW91c2x5KHRoaXMuZmlyZWJhc2VBdXRoKTtcbiAgfVxuXG4gIGxvZ091dCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5maXJlYmFzZUF1dGguc2lnbk91dCgpO1xuICB9XG59XG5cbi8qKlxuICogRmlyZWJhc2VBdXRoQ29udGV4dEluZm8gaW1wbGVtZW50YXRpb24gZnJvbSBEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlLlxuICovXG5leHBvcnQgY2xhc3MgRGJ4RmlyZWJhc2VBdXRoQ29udGV4dEluZm8gaW1wbGVtZW50cyBGaXJlYmFzZUF1dGhDb250ZXh0SW5mbyB7XG4gIHByaXZhdGUgX3Rva2VuID0gY2FjaGVkR2V0dGVyKCgpID0+IGZpcmViYXNlQXV0aFRva2VuRnJvbVVzZXIodGhpcy51c2VyKSk7XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgc2VydmljZTogRGJ4RmlyZWJhc2VBdXRoU2VydmljZSwgcmVhZG9ubHkgdXNlcjogVXNlcikge31cblxuICBnZXQgdWlkKCkge1xuICAgIHJldHVybiB0aGlzLnVzZXIudWlkO1xuICB9XG5cbiAgbG9hZENsYWltcygpOiBQcm9taXNlPEF1dGhDbGFpbXM8QXV0aENsYWltc09iamVjdD4+IHtcbiAgICByZXR1cm4gdGhpcy51c2VyLmdldElkVG9rZW5SZXN1bHQoKS50aGVuKCh4KSA9PiB4LmNsYWltcyBhcyBBdXRoQ2xhaW1zT2JqZWN0KTtcbiAgfVxuXG4gIGxvYWRBdXRoUm9sZXMoKTogUHJvbWlzZTxBdXRoUm9sZVNldD4ge1xuICAgIHJldHVybiB0aGlzLmxvYWRDbGFpbXMoKS50aGVuKCh4KSA9PiB0aGlzLnNlcnZpY2Uucm9sZXNGb3JDbGFpbXMoeCkpO1xuICB9XG5cbiAgZ2V0IHRva2VuKCk6IEZpcmViYXNlQXV0aFRva2VuIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW4oKTtcbiAgfVxufVxuIl19
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZWJhc2UuYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZpcmViYXNlL3NyYy9saWIvYXV0aC9zZXJ2aWNlL2ZpcmViYXNlLmF1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQWlDLDBCQUEwQixFQUFFLHlCQUF5QixFQUFzQixrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pLLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFvQyxrQkFBa0IsRUFBRSxlQUFlLEVBQXVDLGlCQUFpQixFQUFFLDBCQUEwQixFQUFrQixvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9ULE9BQU8sRUFBYyxPQUFPLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6SCxPQUFPLEVBQW9FLGVBQWUsRUFBRSxZQUFZLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDdkksT0FBTyxFQUFnQix3QkFBd0IsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUM1RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7OztBQUc1RSxpQkFBaUI7QUFDakIsTUFBTSxPQUFnQiw4QkFBOEI7Q0FTbkQ7QUFFRCxNQUFNLENBQUMsTUFBTSwwQ0FBMEMsR0FBbUM7SUFDeEYsZ0JBQWdCLENBQUMsc0JBQThDO1FBQzdELE9BQU8sb0NBQW9DLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBQ0QsWUFBWSxDQUFDLHNCQUE4QztRQUN6RCxPQUFPLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoSCxDQUFDO0lBQ0QsV0FBVyxDQUFDLHNCQUE4QztRQUN4RCxPQUFPLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBQ0Qsb0JBQW9CLENBQUMsV0FBd0I7UUFDM0MsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDRixDQUFDO0FBRUYsZ0JBQWdCO0FBRWhCLE1BQU0sT0FBTyxzQkFBc0I7SUErQ2pDLFlBQXFCLFlBQWtCLEVBQWMsUUFBd0M7UUFBeEUsaUJBQVksR0FBWixZQUFZLENBQU07UUE5Q3RCLGdCQUFXLEdBQTRCLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFNUUscUJBQWdCLEdBQTRCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUN4RSxPQUFPLENBQUM7WUFDTixLQUFLLEVBQUUsSUFBSTtZQUNYLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkQsQ0FBQyxFQUNGLG9CQUFvQixFQUFFLEVBQ3RCLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1FBRU8seUJBQW9CLEdBQW9DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU5SSxjQUFTLEdBQXFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN4RSxrQkFBYSxHQUE2QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO1FBRTdGLGlCQUFZLEdBQXdCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQ3JFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ3RCLG9CQUFvQixFQUFFLEVBQ3RCLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1FBQ08scUJBQWdCLEdBQXdCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUNsRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFDekIsb0JBQW9CLEVBQUUsRUFDdEIsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFDTyx3QkFBbUIsR0FBd0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRS9FLGdCQUFXLEdBQXdCLElBQUksQ0FBQyxZQUFZLENBQUM7UUFFckQsbUJBQWMsR0FBd0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNyRSxhQUFRLEdBQXFCLHlCQUF5QixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6RSxjQUFTLEdBQXFCLDBCQUEwQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzRSxvQkFBZSxHQUFtQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVySCxtQkFBYyxHQUE4QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV4RyxZQUFPLEdBQTRCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFVekYsUUFBUSxHQUFHLFFBQVEsSUFBSSwwQ0FBMEMsQ0FBQztRQUNsRSxJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRyxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxRQUFRLENBQUMscUJBQXFCLENBQUM7UUFDN0QsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQztJQUM1RCxDQUFDO0lBRUQsY0FBYyxDQUFnRCxNQUFxQjtRQUNqRixJQUFJLE1BQW1CLENBQUM7UUFFeEIsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDL0IsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3BEO2FBQU07WUFDTCxPQUFPLENBQUMsSUFBSSxDQUFDLGlIQUFpSCxDQUFDLENBQUM7WUFDaEksTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7U0FDcEI7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRCxLQUFLLENBQUMsMEJBQTBCLENBQUMsSUFBaUI7UUFDaEQsSUFBSSxNQUF5QyxDQUFDO1FBRTlDLElBQUksSUFBSSxFQUFFO1lBQ1IsTUFBTSxRQUFRLEdBQWtCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDOUQsTUFBTSxHQUFHLElBQUksMEJBQTBCLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztTQUMvRDtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxvQkFBb0IsRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLG1CQUFtQixFQUFFLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLGtCQUFrQixFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsY0FBYztRQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELGtCQUFrQjtRQUNoQiwyREFBMkQ7UUFDM0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsY0FBYztRQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsb0RBQW9EO0lBQ3RELENBQUM7SUFFRCxjQUFjLENBQUMsUUFBc0IsRUFBRSxRQUFnQztRQUNyRSxPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsNEJBQTRCLENBQUMsS0FBYSxFQUFFLFFBQWdCO1FBQzFELE9BQU8sOEJBQThCLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELHNCQUFzQixDQUFDLEtBQWE7UUFDbEMsT0FBTyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxLQUFhLEVBQUUsUUFBZ0I7UUFDdkQsT0FBTywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDckMsQ0FBQzs7bUhBeElVLHNCQUFzQixzQ0ErQzhCLDhCQUE4Qjt1SEEvQ2xGLHNCQUFzQjsyRkFBdEIsc0JBQXNCO2tCQURsQyxVQUFVOzZFQWdEc0QsOEJBQThCOzBCQUFuRCxRQUFROztBQTRGcEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sMEJBQTBCO0lBS3JDLFlBQXFCLE9BQStCLEVBQVcsSUFBVSxFQUFXLFFBQXVCO1FBQXRGLFlBQU8sR0FBUCxPQUFPLENBQXdCO1FBQVcsU0FBSSxHQUFKLElBQUksQ0FBTTtRQUFXLGFBQVEsR0FBUixRQUFRLENBQWU7UUFKbkcsV0FBTSxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNsRSxXQUFNLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0UsYUFBUSxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFc0IsQ0FBQztJQUUvRyxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBdUIsQ0FBQztJQUMvQyxDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN2QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaWx0ZXJNYXliZSwgaXNOb3QgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRoVXNlclN0YXRlLCBEYnhBdXRoU2VydmljZSwgbG9nZ2VkT3V0T2JzRnJvbUlzTG9nZ2VkSW4sIGxvZ2dlZEluT2JzRnJvbUlzTG9nZ2VkSW4sIEF1dGhVc2VySWRlbnRpZmllciwgYXV0aFVzZXJJZGVudGlmaWVyIH0gZnJvbSAnQGRlcmVla2IvZGJ4LWNvcmUnO1xuaW1wb3J0IHsgQXV0aCwgYXV0aFN0YXRlLCBVc2VyLCBJZFRva2VuUmVzdWx0LCBQYXJzZWRUb2tlbiwgR29vZ2xlQXV0aFByb3ZpZGVyLCBzaWduSW5XaXRoUG9wdXAsIEF1dGhQcm92aWRlciwgUG9wdXBSZWRpcmVjdFJlc29sdmVyLCBzaWduSW5Bbm9ueW1vdXNseSwgc2lnbkluV2l0aEVtYWlsQW5kUGFzc3dvcmQsIFVzZXJDcmVkZW50aWFsLCBGYWNlYm9va0F1dGhQcm92aWRlciwgR2l0aHViQXV0aFByb3ZpZGVyLCBUd2l0dGVyQXV0aFByb3ZpZGVyLCBjcmVhdGVVc2VyV2l0aEVtYWlsQW5kUGFzc3dvcmQgfSBmcm9tICdAYW5ndWxhci9maXJlL2F1dGgnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGltZW91dCwgc3RhcnRXaXRoLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc2hhcmVSZXBsYXksIG1hcCwgc3dpdGNoTWFwLCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXV0aENsYWltcywgQXV0aENsYWltc09iamVjdCwgQXV0aFJvbGVDbGFpbXNTZXJ2aWNlLCBBdXRoUm9sZVNldCwgQVVUSF9BRE1JTl9ST0xFLCBjYWNoZWRHZXR0ZXIsIE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBBdXRoVXNlckluZm8sIGF1dGhVc2VySW5mb0Zyb21BdXRoVXNlciwgZmlyZWJhc2VBdXRoVG9rZW5Gcm9tVXNlciB9IGZyb20gJy4uL2F1dGgnO1xuaW1wb3J0IHsgc2VuZFBhc3N3b3JkUmVzZXRFbWFpbCB9IGZyb20gJ2ZpcmViYXNlL2F1dGgnO1xuaW1wb3J0IHsgYXV0aFVzZXJTdGF0ZUZyb21GaXJlYmFzZUF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9maXJlYmFzZS5hdXRoLnJ4anMnO1xuaW1wb3J0IHsgRmlyZWJhc2VBdXRoQ29udGV4dEluZm8sIEZpcmViYXNlQXV0aFRva2VuIH0gZnJvbSAnQGRlcmVla2IvZmlyZWJhc2UnO1xuXG4vLyBNQVJLOiBEZWxlZ2F0ZVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERieEZpcmViYXNlQXV0aFNlcnZpY2VEZWxlZ2F0ZSB7XG4gIGFic3RyYWN0IGF1dGhVc2VyU3RhdGVPYnMoZGJ4RmlyZWJhc2VBdXRoU2VydmljZTogRGJ4RmlyZWJhc2VBdXRoU2VydmljZSk6IE9ic2VydmFibGU8QXV0aFVzZXJTdGF0ZT47XG4gIGFic3RyYWN0IGF1dGhSb2xlc09icyhkYnhGaXJlYmFzZUF1dGhTZXJ2aWNlOiBEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlKTogT2JzZXJ2YWJsZTxBdXRoUm9sZVNldD47XG4gIGFic3RyYWN0IGlzT25ib2FyZGVkKGRieEZpcmViYXNlQXV0aFNlcnZpY2U6IERieEZpcmViYXNlQXV0aFNlcnZpY2UpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhlIGlucHV0IHJvbGVzIGltcGx5IHRoZSBhZG1pbiBwcml2aWxlZGdlcy5cbiAgICovXG4gIGFic3RyYWN0IGlzQWRtaW5JbkF1dGhSb2xlU2V0KGF1dGhSb2xlU2V0OiBBdXRoUm9sZVNldCk6IGJvb2xlYW47XG4gIGFic3RyYWN0IGF1dGhSb2xlQ2xhaW1zU2VydmljZT86IE1heWJlPEF1dGhSb2xlQ2xhaW1zU2VydmljZTxBdXRoQ2xhaW1zT2JqZWN0Pj47XG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0RCWF9GSVJFQkFTRV9BVVRIX1NFUlZJQ0VfREVMRUdBVEU6IERieEZpcmViYXNlQXV0aFNlcnZpY2VEZWxlZ2F0ZSA9IHtcbiAgYXV0aFVzZXJTdGF0ZU9icyhkYnhGaXJlYmFzZUF1dGhTZXJ2aWNlOiBEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlKTogT2JzZXJ2YWJsZTxBdXRoVXNlclN0YXRlPiB7XG4gICAgcmV0dXJuIGF1dGhVc2VyU3RhdGVGcm9tRmlyZWJhc2VBdXRoU2VydmljZShkYnhGaXJlYmFzZUF1dGhTZXJ2aWNlKTtcbiAgfSxcbiAgYXV0aFJvbGVzT2JzKGRieEZpcmViYXNlQXV0aFNlcnZpY2U6IERieEZpcmViYXNlQXV0aFNlcnZpY2UpOiBPYnNlcnZhYmxlPEF1dGhSb2xlU2V0PiB7XG4gICAgcmV0dXJuIGRieEZpcmViYXNlQXV0aFNlcnZpY2UuYXV0aFVzZXJTdGF0ZSQucGlwZShtYXAoKHgpID0+ICh4ID09PSAndXNlcicgPyBuZXcgU2V0KFsndXNlciddKSA6IG5ldyBTZXQoKSkpKTtcbiAgfSxcbiAgaXNPbmJvYXJkZWQoZGJ4RmlyZWJhc2VBdXRoU2VydmljZTogRGJ4RmlyZWJhc2VBdXRoU2VydmljZSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBkYnhGaXJlYmFzZUF1dGhTZXJ2aWNlLmF1dGhVc2VyU3RhdGUkLnBpcGUobWFwKCh4KSA9PiB4ID09PSAndXNlcicpKTtcbiAgfSxcbiAgaXNBZG1pbkluQXV0aFJvbGVTZXQoYXV0aFJvbGVTZXQ6IEF1dGhSb2xlU2V0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGF1dGhSb2xlU2V0LmhhcyhBVVRIX0FETUlOX1JPTEUpO1xuICB9XG59O1xuXG4vLyBNQVJLOiBTZXJ2aWNlXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGJ4RmlyZWJhc2VBdXRoU2VydmljZSBpbXBsZW1lbnRzIERieEF1dGhTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXV0aFN0YXRlJDogT2JzZXJ2YWJsZTxNYXliZTxVc2VyPj4gPSBhdXRoU3RhdGUodGhpcy5maXJlYmFzZUF1dGgpO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRBdXRoVXNlciQ6IE9ic2VydmFibGU8TWF5YmU8VXNlcj4+ID0gdGhpcy5fYXV0aFN0YXRlJC5waXBlKFxuICAgIHRpbWVvdXQoe1xuICAgICAgZmlyc3Q6IDEwMDAsXG4gICAgICB3aXRoOiAoKSA9PiB0aGlzLl9hdXRoU3RhdGUkLnBpcGUoc3RhcnRXaXRoKG51bGwpKVxuICAgIH0pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBjdXJyZW50QXV0aFVzZXJJbmZvJDogT2JzZXJ2YWJsZTxNYXliZTxBdXRoVXNlckluZm8+PiA9IHRoaXMuY3VycmVudEF1dGhVc2VyJC5waXBlKG1hcCgoeCkgPT4gKHggPyBhdXRoVXNlckluZm9Gcm9tQXV0aFVzZXIoeCkgOiB1bmRlZmluZWQpKSk7XG5cbiAgcmVhZG9ubHkgYXV0aFVzZXIkOiBPYnNlcnZhYmxlPFVzZXI+ID0gdGhpcy5jdXJyZW50QXV0aFVzZXIkLnBpcGUoZmlsdGVyTWF5YmUoKSk7XG4gIHJlYWRvbmx5IGF1dGhVc2VySW5mbyQ6IE9ic2VydmFibGU8QXV0aFVzZXJJbmZvPiA9IHRoaXMuYXV0aFVzZXIkLnBpcGUobWFwKGF1dGhVc2VySW5mb0Zyb21BdXRoVXNlcikpO1xuXG4gIHJlYWRvbmx5IGhhc0F1dGhVc2VyJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuY3VycmVudEF1dGhVc2VyJC5waXBlKFxuICAgIG1hcCgoeCkgPT4gQm9vbGVhbih4KSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuICByZWFkb25seSBpc0Fub255bW91c1VzZXIkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5hdXRoVXNlciQucGlwZShcbiAgICBtYXAoKHgpID0+IHguaXNBbm9ueW1vdXMpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcbiAgcmVhZG9ubHkgaXNOb3RBbm9ueW1vdXNVc2VyJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuaXNBbm9ueW1vdXNVc2VyJC5waXBlKGlzTm90KCkpO1xuXG4gIHJlYWRvbmx5IGlzTG9nZ2VkSW4kOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5oYXNBdXRoVXNlciQ7XG5cbiAgcmVhZG9ubHkgaXNOb3RMb2dnZWRJbiQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmlzTG9nZ2VkSW4kLnBpcGUoaXNOb3QoKSk7XG4gIHJlYWRvbmx5IG9uTG9nSW4kOiBPYnNlcnZhYmxlPHZvaWQ+ID0gbG9nZ2VkSW5PYnNGcm9tSXNMb2dnZWRJbih0aGlzLmlzTG9nZ2VkSW4kKTtcbiAgcmVhZG9ubHkgb25Mb2dPdXQkOiBPYnNlcnZhYmxlPHZvaWQ+ID0gbG9nZ2VkT3V0T2JzRnJvbUlzTG9nZ2VkSW4odGhpcy5pc0xvZ2dlZEluJCk7XG4gIHJlYWRvbmx5IHVzZXJJZGVudGlmaWVyJDogT2JzZXJ2YWJsZTxBdXRoVXNlcklkZW50aWZpZXI+ID0gdGhpcy5jdXJyZW50QXV0aFVzZXIkLnBpcGUobWFwKCh4KSA9PiBhdXRoVXNlcklkZW50aWZpZXIoeD8udWlkKSkpO1xuXG4gIHJlYWRvbmx5IGlkVG9rZW5SZXN1bHQkOiBPYnNlcnZhYmxlPElkVG9rZW5SZXN1bHQ+ID0gdGhpcy5hdXRoVXNlciQucGlwZShzd2l0Y2hNYXAoKHgpID0+IHguZ2V0SWRUb2tlblJlc3VsdCgpKSk7XG5cbiAgcmVhZG9ubHkgY2xhaW1zJDogT2JzZXJ2YWJsZTxQYXJzZWRUb2tlbj4gPSB0aGlzLmlkVG9rZW5SZXN1bHQkLnBpcGUobWFwKCh4KSA9PiB4LmNsYWltcykpO1xuXG4gIHJlYWRvbmx5IGF1dGhVc2VyU3RhdGUkOiBPYnNlcnZhYmxlPEF1dGhVc2VyU3RhdGU+O1xuICByZWFkb25seSBhdXRoUm9sZXMkOiBPYnNlcnZhYmxlPEF1dGhSb2xlU2V0PjtcbiAgcmVhZG9ubHkgaXNPbmJvYXJkZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIHByaXZhdGUgX2F1dGhSb2xlQ2xhaW1zU2VydmljZT86IE1heWJlPEF1dGhSb2xlQ2xhaW1zU2VydmljZTxBdXRoQ2xhaW1zT2JqZWN0Pj47XG4gIHJlYWRvbmx5IGlzQWRtaW5JbkF1dGhSb2xlU2V0OiAoYXV0aFJvbGVTZXQ6IEF1dGhSb2xlU2V0KSA9PiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGZpcmViYXNlQXV0aDogQXV0aCwgQE9wdGlvbmFsKCkgZGVsZWdhdGU6IERieEZpcmViYXNlQXV0aFNlcnZpY2VEZWxlZ2F0ZSkge1xuICAgIGRlbGVnYXRlID0gZGVsZWdhdGUgPz8gREVGQVVMVF9EQlhfRklSRUJBU0VfQVVUSF9TRVJWSUNFX0RFTEVHQVRFO1xuICAgIHRoaXMuYXV0aFVzZXJTdGF0ZSQgPSBkZWxlZ2F0ZS5hdXRoVXNlclN0YXRlT2JzKHRoaXMpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgc2hhcmVSZXBsYXkoMSkpO1xuICAgIHRoaXMuYXV0aFJvbGVzJCA9IGRlbGVnYXRlLmF1dGhSb2xlc09icyh0aGlzKTtcbiAgICB0aGlzLmlzT25ib2FyZGVkJCA9IGRlbGVnYXRlLmlzT25ib2FyZGVkKHRoaXMpO1xuICAgIHRoaXMuX2F1dGhSb2xlQ2xhaW1zU2VydmljZSA9IGRlbGVnYXRlLmF1dGhSb2xlQ2xhaW1zU2VydmljZTtcbiAgICB0aGlzLmlzQWRtaW5JbkF1dGhSb2xlU2V0ID0gZGVsZWdhdGUuaXNBZG1pbkluQXV0aFJvbGVTZXQ7XG4gIH1cblxuICByb2xlc0ZvckNsYWltczxUIGV4dGVuZHMgQXV0aENsYWltc09iamVjdCA9IEF1dGhDbGFpbXNPYmplY3Q+KGNsYWltczogQXV0aENsYWltczxUPik6IEF1dGhSb2xlU2V0IHtcbiAgICBsZXQgcmVzdWx0OiBBdXRoUm9sZVNldDtcblxuICAgIGlmICh0aGlzLl9hdXRoUm9sZUNsYWltc1NlcnZpY2UpIHtcbiAgICAgIHJldHVybiB0aGlzLl9hdXRoUm9sZUNsYWltc1NlcnZpY2UudG9Sb2xlcyhjbGFpbXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0RieEZpcmViYXNlQXV0aFNlcnZpY2U6IHJvbGVzRm9yQ2xhaW1zIGNhbGxlZCB3aXRoIG5vIGF1dGhSb2xlQ2xhaW1zU2VydmljZSBwcm92aWRlZC4gQW4gZW1wdHkgc2V0IGlzIHJldHVybmVkLicpO1xuICAgICAgcmVzdWx0ID0gbmV3IFNldCgpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXRBdXRoQ29udGV4dEluZm8oKTogUHJvbWlzZTxNYXliZTxEYnhGaXJlYmFzZUF1dGhDb250ZXh0SW5mbz4+IHtcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20odGhpcy5hdXRoVXNlciQpLnRoZW4oKHVzZXIpID0+IHRoaXMubG9hZEF1dGhDb250ZXh0SW5mb0ZvclVzZXIodXNlcikpO1xuICB9XG5cbiAgYXN5bmMgbG9hZEF1dGhDb250ZXh0SW5mb0ZvclVzZXIodXNlcjogTWF5YmU8VXNlcj4pOiBQcm9taXNlPE1heWJlPERieEZpcmViYXNlQXV0aENvbnRleHRJbmZvPj4ge1xuICAgIGxldCByZXN1bHQ6IE1heWJlPERieEZpcmViYXNlQXV0aENvbnRleHRJbmZvPjtcblxuICAgIGlmICh1c2VyKSB7XG4gICAgICBjb25zdCBqd3RUb2tlbjogSWRUb2tlblJlc3VsdCA9IGF3YWl0IHVzZXIuZ2V0SWRUb2tlblJlc3VsdCgpO1xuICAgICAgcmVzdWx0ID0gbmV3IERieEZpcmViYXNlQXV0aENvbnRleHRJbmZvKHRoaXMsIHVzZXIsIGp3dFRva2VuKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgbG9nSW5XaXRoR29vZ2xlKCk6IFByb21pc2U8VXNlckNyZWRlbnRpYWw+IHtcbiAgICByZXR1cm4gdGhpcy5sb2dJbldpdGhQb3B1cChuZXcgR29vZ2xlQXV0aFByb3ZpZGVyKCkpO1xuICB9XG5cbiAgbG9nSW5XaXRoRmFjZWJvb2soKTogUHJvbWlzZTxVc2VyQ3JlZGVudGlhbD4ge1xuICAgIHJldHVybiB0aGlzLmxvZ0luV2l0aFBvcHVwKG5ldyBGYWNlYm9va0F1dGhQcm92aWRlcigpKTtcbiAgfVxuXG4gIGxvZ0luV2l0aFR3aXR0ZXIoKTogUHJvbWlzZTxVc2VyQ3JlZGVudGlhbD4ge1xuICAgIHJldHVybiB0aGlzLmxvZ0luV2l0aFBvcHVwKG5ldyBUd2l0dGVyQXV0aFByb3ZpZGVyKCkpO1xuICB9XG5cbiAgbG9nSW5XaXRoR2l0aHViKCk6IFByb21pc2U8VXNlckNyZWRlbnRpYWw+IHtcbiAgICByZXR1cm4gdGhpcy5sb2dJbldpdGhQb3B1cChuZXcgR2l0aHViQXV0aFByb3ZpZGVyKCkpO1xuICB9XG5cbiAgbG9nSW5XaXRoQXBwbGUoKTogUHJvbWlzZTxVc2VyQ3JlZGVudGlhbD4ge1xuICAgIHRocm93IG5ldyBFcnJvcigndG9kbycpO1xuICB9XG5cbiAgbG9nSW5XaXRoTWljcm9zb2Z0KCk6IFByb21pc2U8VXNlckNyZWRlbnRpYWw+IHtcbiAgICAvLyByZXR1cm4gdGhpcy5sb2dJbldpdGhQb3B1cChuZXcgTWljcm9zb2Z0QXV0aFByb3ZpZGVyKCkpO1xuICAgIHRocm93IG5ldyBFcnJvcigndG9kbycpO1xuICB9XG5cbiAgbG9nSW5XaXRoUGhvbmUoKTogUHJvbWlzZTxVc2VyQ3JlZGVudGlhbD4ge1xuICAgIHRocm93IG5ldyBFcnJvcigndG9kbycpO1xuICAgIC8vIHJldHVybiBzaWduSW5XaXRoUGhvbmVOdW1iZXIodGhpcy5maXJlYmFzZUF1dGgsIClcbiAgfVxuXG4gIGxvZ0luV2l0aFBvcHVwKHByb3ZpZGVyOiBBdXRoUHJvdmlkZXIsIHJlc29sdmVyPzogUG9wdXBSZWRpcmVjdFJlc29sdmVyKTogUHJvbWlzZTxVc2VyQ3JlZGVudGlhbD4ge1xuICAgIHJldHVybiBzaWduSW5XaXRoUG9wdXAodGhpcy5maXJlYmFzZUF1dGgsIHByb3ZpZGVyLCByZXNvbHZlcik7XG4gIH1cblxuICByZWdpc3RlcldpdGhFbWFpbEFuZFBhc3N3b3JkKGVtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBQcm9taXNlPFVzZXJDcmVkZW50aWFsPiB7XG4gICAgcmV0dXJuIGNyZWF0ZVVzZXJXaXRoRW1haWxBbmRQYXNzd29yZCh0aGlzLmZpcmViYXNlQXV0aCwgZW1haWwsIHBhc3N3b3JkKTtcbiAgfVxuXG4gIHNlbmRQYXNzd29yZFJlc2V0RW1haWwoZW1haWw6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBzZW5kUGFzc3dvcmRSZXNldEVtYWlsKHRoaXMuZmlyZWJhc2VBdXRoLCBlbWFpbCk7XG4gIH1cblxuICBsb2dJbldpdGhFbWFpbEFuZFBhc3N3b3JkKGVtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBQcm9taXNlPFVzZXJDcmVkZW50aWFsPiB7XG4gICAgcmV0dXJuIHNpZ25JbldpdGhFbWFpbEFuZFBhc3N3b3JkKHRoaXMuZmlyZWJhc2VBdXRoLCBlbWFpbCwgcGFzc3dvcmQpO1xuICB9XG5cbiAgbG9nSW5Bc0Fub255bW91cygpOiBQcm9taXNlPFVzZXJDcmVkZW50aWFsPiB7XG4gICAgcmV0dXJuIHNpZ25JbkFub255bW91c2x5KHRoaXMuZmlyZWJhc2VBdXRoKTtcbiAgfVxuXG4gIGxvZ091dCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5maXJlYmFzZUF1dGguc2lnbk91dCgpO1xuICB9XG59XG5cbi8qKlxuICogRmlyZWJhc2VBdXRoQ29udGV4dEluZm8gaW1wbGVtZW50YXRpb24gZnJvbSBEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlLlxuICovXG5leHBvcnQgY2xhc3MgRGJ4RmlyZWJhc2VBdXRoQ29udGV4dEluZm8gaW1wbGVtZW50cyBGaXJlYmFzZUF1dGhDb250ZXh0SW5mbyB7XG4gIHByaXZhdGUgX3Rva2VuID0gY2FjaGVkR2V0dGVyKCgpID0+IGZpcmViYXNlQXV0aFRva2VuRnJvbVVzZXIodGhpcy51c2VyKSk7XG4gIHByaXZhdGUgX3JvbGVzID0gY2FjaGVkR2V0dGVyKCgpID0+IHRoaXMuc2VydmljZS5yb2xlc0ZvckNsYWltcyh0aGlzLmdldENsYWltcygpKSk7XG4gIHByaXZhdGUgX2lzQWRtaW4gPSBjYWNoZWRHZXR0ZXIoKCkgPT4gdGhpcy5zZXJ2aWNlLmlzQWRtaW5JbkF1dGhSb2xlU2V0KHRoaXMuX3JvbGVzKCkpKTtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBzZXJ2aWNlOiBEYnhGaXJlYmFzZUF1dGhTZXJ2aWNlLCByZWFkb25seSB1c2VyOiBVc2VyLCByZWFkb25seSBqd3RUb2tlbjogSWRUb2tlblJlc3VsdCkge31cblxuICBnZXQgdWlkKCkge1xuICAgIHJldHVybiB0aGlzLnVzZXIudWlkO1xuICB9XG5cbiAgaXNBZG1pbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNBZG1pbigpO1xuICB9XG5cbiAgZ2V0Q2xhaW1zPFQgZXh0ZW5kcyBBdXRoQ2xhaW1zT2JqZWN0ID0gQXV0aENsYWltc09iamVjdD4oKTogQXV0aENsYWltczxUPiB7XG4gICAgcmV0dXJuIHRoaXMuand0VG9rZW4uY2xhaW1zIGFzIEF1dGhDbGFpbXM8VD47XG4gIH1cblxuICBnZXRBdXRoUm9sZXMoKTogQXV0aFJvbGVTZXQge1xuICAgIHJldHVybiB0aGlzLl9yb2xlcygpO1xuICB9XG5cbiAgbG9hZENsYWltczxUIGV4dGVuZHMgQXV0aENsYWltc09iamVjdCA9IEF1dGhDbGFpbXNPYmplY3Q+KCk6IFByb21pc2U8QXV0aENsYWltczxUPj4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5nZXRDbGFpbXMoKSk7XG4gIH1cblxuICBsb2FkQXV0aFJvbGVzKCk6IFByb21pc2U8QXV0aFJvbGVTZXQ+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuZ2V0QXV0aFJvbGVzKCkpO1xuICB9XG5cbiAgZ2V0IHRva2VuKCk6IEZpcmViYXNlQXV0aFRva2VuIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW4oKTtcbiAgfVxufVxuIl19
@@ -1,4 +1,4 @@
1
- import { urlWithoutParameters, cachedGetter, addToSet, removeFromSet, filterMaybeValues, mapIterable, asArray, excludeValuesFromArray, containsStringAnyCase, addToSetCopy, forEachKeyValue, readableError, isMaybeSo, firstValue } from '@dereekb/util';
1
+ import { urlWithoutParameters, AUTH_ADMIN_ROLE, cachedGetter, addToSet, removeFromSet, filterMaybeValues, mapIterable, asArray, excludeValuesFromArray, containsStringAnyCase, addToSetCopy, forEachKeyValue, readableError, isMaybeSo, firstValue } from '@dereekb/util';
2
2
  import * as i0 from '@angular/core';
3
3
  import { InjectionToken, Injectable, Inject, Optional, Component, Input, Directive, EventEmitter, Output, NgModule, Injector, forwardRef, Host } from '@angular/core';
4
4
  import { getToken, initializeAppCheck, ReCaptchaV3Provider } from 'firebase/app-check';
@@ -15,6 +15,7 @@ import * as i3 from '@dereekb/dbx-web';
15
15
  import { DbxRouterAnchorModule, DbxReadableErrorModule, DbxActionModule, DbxButtonModule } from '@dereekb/dbx-web';
16
16
  import * as i3$1 from '@dereekb/dbx-core';
17
17
  import { loggedInObsFromIsLoggedIn, loggedOutObsFromIsLoggedIn, authUserIdentifier, DbxInjectionContext, AbstractForwardDbxInjectionContextDirective, DBX_INJECTION_COMPONENT_DATA, DbxInjectionComponentModule, DbxAuthService, AbstractSubscriptionDirective, AbstractIfDirective, LockSetComponentStore } from '@dereekb/dbx-core';
18
+ import { __awaiter } from 'tslib';
18
19
  import { filterMaybe, isNot, SubscriptionObject, cleanupDestroyable, accumulatorFlattenPageListLoadingState, useFirst, successResult, beginLoading, loadingStateFromObs, errorResult, lazyFrom, cleanup } from '@dereekb/rxjs';
19
20
  import * as i1$1 from '@angular/fire/auth';
20
21
  import { authState, GoogleAuthProvider, FacebookAuthProvider, TwitterAuthProvider, GithubAuthProvider, signInWithPopup, createUserWithEmailAndPassword, signInWithEmailAndPassword, signInAnonymously, provideAuth, getAuth, connectAuthEmulator } from '@angular/fire/auth';
@@ -188,6 +189,9 @@ const DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE = {
188
189
  },
189
190
  isOnboarded(dbxFirebaseAuthService) {
190
191
  return dbxFirebaseAuthService.authUserState$.pipe(map((x) => x === 'user'));
192
+ },
193
+ isAdminInAuthRoleSet(authRoleSet) {
194
+ return authRoleSet.has(AUTH_ADMIN_ROLE);
191
195
  }
192
196
  };
193
197
  // MARK: Service
@@ -217,6 +221,7 @@ class DbxFirebaseAuthService {
217
221
  this.authRoles$ = delegate.authRolesObs(this);
218
222
  this.isOnboarded$ = delegate.isOnboarded(this);
219
223
  this._authRoleClaimsService = delegate.authRoleClaimsService;
224
+ this.isAdminInAuthRoleSet = delegate.isAdminInAuthRoleSet;
220
225
  }
221
226
  rolesForClaims(claims) {
222
227
  let result;
@@ -230,7 +235,17 @@ class DbxFirebaseAuthService {
230
235
  return result;
231
236
  }
232
237
  getAuthContextInfo() {
233
- return firstValueFrom(this.authUser$).then((user) => (user ? new DbxFirebaseAuthContextInfo(this, user) : undefined));
238
+ return firstValueFrom(this.authUser$).then((user) => this.loadAuthContextInfoForUser(user));
239
+ }
240
+ loadAuthContextInfoForUser(user) {
241
+ return __awaiter(this, void 0, void 0, function* () {
242
+ let result;
243
+ if (user) {
244
+ const jwtToken = yield user.getIdTokenResult();
245
+ result = new DbxFirebaseAuthContextInfo(this, user, jwtToken);
246
+ }
247
+ return result;
248
+ });
234
249
  }
235
250
  logInWithGoogle() {
236
251
  return this.logInWithPopup(new GoogleAuthProvider());
@@ -287,19 +302,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
287
302
  * FirebaseAuthContextInfo implementation from DbxFirebaseAuthService.
288
303
  */
289
304
  class DbxFirebaseAuthContextInfo {
290
- constructor(service, user) {
305
+ constructor(service, user, jwtToken) {
291
306
  this.service = service;
292
307
  this.user = user;
308
+ this.jwtToken = jwtToken;
293
309
  this._token = cachedGetter(() => firebaseAuthTokenFromUser(this.user));
310
+ this._roles = cachedGetter(() => this.service.rolesForClaims(this.getClaims()));
311
+ this._isAdmin = cachedGetter(() => this.service.isAdminInAuthRoleSet(this._roles()));
294
312
  }
295
313
  get uid() {
296
314
  return this.user.uid;
297
315
  }
316
+ isAdmin() {
317
+ return this._isAdmin();
318
+ }
319
+ getClaims() {
320
+ return this.jwtToken.claims;
321
+ }
322
+ getAuthRoles() {
323
+ return this._roles();
324
+ }
298
325
  loadClaims() {
299
- return this.user.getIdTokenResult().then((x) => x.claims);
326
+ return Promise.resolve(this.getClaims());
300
327
  }
301
328
  loadAuthRoles() {
302
- return this.loadClaims().then((x) => this.service.rolesForClaims(x));
329
+ return Promise.resolve(this.getAuthRoles());
303
330
  }
304
331
  get token() {
305
332
  return this._token();
@@ -1410,10 +1437,12 @@ function authRolesObsWithClaimsService(config) {
1410
1437
  };
1411
1438
  }
1412
1439
  function defaultDbxFirebaseAuthServiceDelegateWithClaimsService(config) {
1440
+ var _a;
1413
1441
  return {
1414
1442
  authUserStateObs: DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE.authUserStateObs,
1415
1443
  authRolesObs: authRolesObsWithClaimsService(config),
1416
1444
  isOnboarded: DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE.isOnboarded,
1445
+ isAdminInAuthRoleSet: (_a = config.isAdminInAuthRoleSet) !== null && _a !== void 0 ? _a : DEFAULT_DBX_FIREBASE_AUTH_SERVICE_DELEGATE.isAdminInAuthRoleSet,
1417
1446
  authRoleClaimsService: config.claimsService
1418
1447
  };
1419
1448
  }