@frontegg/angular 6.7.0-alpha.6655826001 → 6.7.0-alpha.6655897396
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/frontegg-angular.umd.js +30 -25
- package/bundles/frontegg-angular.umd.js.map +1 -1
- package/esm2015/lib/frontegg-entitlements.service.js +28 -27
- package/fesm2015/frontegg-angular.js +28 -26
- package/fesm2015/frontegg-angular.js.map +1 -1
- package/lib/frontegg-entitlements.service.d.ts +12 -9
- package/lib/frontegg-entitlements.service.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { BehaviorSubject } from 'rxjs';
|
|
2
2
|
import { Injectable } from '@angular/core';
|
|
3
|
-
import { getPermissionEntitlements, getFeatureEntitlements, getEntitlements, } from '@frontegg/redux-store';
|
|
4
3
|
import * as i0 from "@angular/core";
|
|
5
4
|
import * as i1 from "./frontegg-app.service";
|
|
6
5
|
/**
|
|
@@ -12,13 +11,13 @@ import * as i1 from "./frontegg-app.service";
|
|
|
12
11
|
export class FronteggEntitlementsService {
|
|
13
12
|
constructor(fronteggAppService) {
|
|
14
13
|
this.fronteggAppService = fronteggAppService;
|
|
15
|
-
this.
|
|
14
|
+
this.userStateSubject = new BehaviorSubject(undefined);
|
|
16
15
|
const state = this.fronteggAppService.fronteggApp.store.getState();
|
|
17
|
-
this.
|
|
16
|
+
this.updateUserStateIfNeeded(state.auth);
|
|
18
17
|
// Memoized entitlements State
|
|
19
18
|
this.fronteggAppService.fronteggApp.store.subscribe(() => {
|
|
20
19
|
const newState = this.fronteggAppService.fronteggApp.store.getState();
|
|
21
|
-
this.
|
|
20
|
+
this.updateUserStateIfNeeded(newState.auth);
|
|
22
21
|
});
|
|
23
22
|
}
|
|
24
23
|
/**
|
|
@@ -26,64 +25,66 @@ export class FronteggEntitlementsService {
|
|
|
26
25
|
* No need for deep equal because we already check it internally
|
|
27
26
|
* @param authState
|
|
28
27
|
*/
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
if (this.entitlementsStateSubject.value === entitlementsState) {
|
|
28
|
+
updateUserStateIfNeeded(authState) {
|
|
29
|
+
const entitlementsState = authState.user;
|
|
30
|
+
if (this.userStateSubject.value === entitlementsState) {
|
|
33
31
|
return;
|
|
34
32
|
}
|
|
35
|
-
this.
|
|
33
|
+
this.userStateSubject.next(entitlementsState);
|
|
36
34
|
}
|
|
37
35
|
/**
|
|
38
|
-
* The function gives the ability to return a manipulated data of the
|
|
36
|
+
* The function gives the ability to return a manipulated data of the user state as a subscription.
|
|
39
37
|
*
|
|
40
|
-
* @param dataManipulator Manipulator function that receives
|
|
38
|
+
* @param dataManipulator Manipulator function that receives user state and returns a manipulated data
|
|
41
39
|
* @param observer For receiving manipulated data result
|
|
42
40
|
* @returns a subscription to be able to unsubscribe
|
|
43
41
|
*/
|
|
44
|
-
|
|
42
|
+
getUserManipulatorSubscription(dataManipulator, observer) {
|
|
45
43
|
// used for computing the entitlements result because we don't return the state itself, but a calculated one
|
|
46
|
-
const
|
|
47
|
-
const stateSubscription = this.
|
|
48
|
-
|
|
44
|
+
const userSubject = new BehaviorSubject(undefined);
|
|
45
|
+
const stateSubscription = this.userStateSubject.subscribe(user => {
|
|
46
|
+
userSubject.next(dataManipulator(user));
|
|
49
47
|
});
|
|
50
48
|
// subscribing the consumer observer
|
|
51
|
-
const
|
|
52
|
-
// monkey patched to manage both un-subscriptions: state and
|
|
53
|
-
const originalUnsubscribe =
|
|
54
|
-
|
|
49
|
+
const userResultSubscription = userSubject.asObservable().subscribe(observer);
|
|
50
|
+
// monkey patched to manage both un-subscriptions: state and user manipulated result
|
|
51
|
+
const originalUnsubscribe = userResultSubscription.unsubscribe.bind(userResultSubscription);
|
|
52
|
+
userResultSubscription.unsubscribe = () => {
|
|
55
53
|
originalUnsubscribe();
|
|
56
54
|
stateSubscription.unsubscribe();
|
|
57
55
|
};
|
|
58
|
-
return
|
|
56
|
+
return userResultSubscription;
|
|
59
57
|
}
|
|
60
58
|
/**
|
|
61
59
|
* @param feature
|
|
62
60
|
* @param observer For receiving the feature entitlements result including if the user is entitled to the given feature.
|
|
63
61
|
* Attaching the justification if not entitled
|
|
62
|
+
* @param customAttributes consumer attributes
|
|
64
63
|
* @returns a subscription to be able to unsubscribe
|
|
65
64
|
* @throws when entitlement is not enabled via frontegg options
|
|
66
65
|
*/
|
|
67
|
-
featureEntitlements$(feature, observer) {
|
|
68
|
-
return this.
|
|
66
|
+
featureEntitlements$(feature, observer, customAttributes) {
|
|
67
|
+
return this.getUserManipulatorSubscription(() => { return this.fronteggAppService.fronteggApp.getFeatureEntitlements(feature, customAttributes); }, observer);
|
|
69
68
|
}
|
|
70
69
|
/**
|
|
71
70
|
* @param permission
|
|
72
71
|
* @param observer For receiving the permission entitlements result including if the user is entitled to the given permission.
|
|
73
72
|
* Attaching the justification if not entitled
|
|
73
|
+
* @param customAttributes consumer attributes
|
|
74
74
|
* @returns a subscription to be able to unsubscribe
|
|
75
75
|
*/
|
|
76
|
-
permissionEntitlements$(permission, observer) {
|
|
77
|
-
return this.
|
|
76
|
+
permissionEntitlements$(permission, observer, customAttributes) {
|
|
77
|
+
return this.getUserManipulatorSubscription(() => this.fronteggAppService.fronteggApp.getPermissionEntitlements(permission, customAttributes), observer);
|
|
78
78
|
}
|
|
79
79
|
/**
|
|
80
80
|
* @param options permissionKey or featureKey in an options object
|
|
81
81
|
* @param observer For receiving the permission entitlements result including if the user is entitled to the given permission.
|
|
82
82
|
* Attaching the justification if not entitled
|
|
83
|
+
* @param customAttributes consumer attributes
|
|
83
84
|
* @returns a subscription to be able to unsubscribe
|
|
84
85
|
*/
|
|
85
|
-
entitlements$(options, observer) {
|
|
86
|
-
return this.
|
|
86
|
+
entitlements$(options, observer, customAttributes) {
|
|
87
|
+
return this.getUserManipulatorSubscription(() => this.fronteggAppService.fronteggApp.getEntitlements(options, customAttributes), observer);
|
|
87
88
|
}
|
|
88
89
|
/**
|
|
89
90
|
* Load entitlements data on demand
|
|
@@ -101,4 +102,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
101
102
|
providedIn: 'root',
|
|
102
103
|
}]
|
|
103
104
|
}], ctorParameters: function () { return [{ type: i1.FronteggAppService }]; } });
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbnRlZ2ctZW50aXRsZW1lbnRzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mcm9udGVnZy1hcHAvc3JjL2xpYi9mcm9udGVnZy1lbnRpdGxlbWVudHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlDLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFFTCx5QkFBeUIsRUFDekIsc0JBQXNCLEVBQ3RCLGVBQWUsR0FDaEIsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBRy9COzs7OztHQUtHO0FBSUgsTUFBTSxPQUFPLDJCQUEyQjtJQUd0QyxZQUFvQixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUZsRCw2QkFBd0IsR0FBRyxJQUFJLGVBQWUsQ0FBTSxTQUFTLENBQUMsQ0FBQztRQUdyRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQW1CLENBQUM7UUFDcEYsSUFBSSxDQUFDLCtCQUErQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVqRCw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN2RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQW1CLENBQUM7WUFDdkYsSUFBSSxDQUFDLCtCQUErQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssK0JBQStCLENBQUMsU0FBb0I7O1FBQzFELE1BQU0saUJBQWlCLEdBQUcsTUFBQSxTQUFTLENBQUMsSUFBSSwwQ0FBRSxZQUFtQixDQUFDO1FBQzlELElBQUksSUFBSSxDQUFDLHdCQUF3QixDQUFDLEtBQUssS0FBSyxpQkFBaUIsRUFBRTtZQUM3RCxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLHNDQUFzQyxDQUM1QyxlQUE4QyxFQUM5QyxRQUFpQztRQUVqQyw0R0FBNEc7UUFDNUcsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBUyxTQUE4QixDQUFDLENBQUM7UUFFeEYsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQy9FLG1CQUFtQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztRQUVILG9DQUFvQztRQUNwQyxNQUFNLDhCQUE4QixHQUFHLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUU3Riw0RkFBNEY7UUFDNUYsTUFBTSxtQkFBbUIsR0FBRyw4QkFBOEIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFFNUcsOEJBQThCLENBQUMsV0FBVyxHQUFHLEdBQUUsRUFBRTtZQUMvQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3RCLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLENBQUMsQ0FBQztRQUVGLE9BQU8sOEJBQThCLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLG9CQUFvQixDQUFDLE9BQWUsRUFBRSxRQUFzQztRQUNqRixPQUFPLElBQUksQ0FBQyxzQ0FBc0MsQ0FDaEQsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLHNCQUFzQixDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsRUFDL0QsUUFBUSxDQUNULENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSx1QkFBdUIsQ0FBQyxVQUFrQixFQUFFLFFBQXNDO1FBQ3ZGLE9BQU8sSUFBSSxDQUFDLHNDQUFzQyxDQUNoRCxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMseUJBQXlCLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxFQUNyRSxRQUFRLENBQ1QsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLGFBQWEsQ0FBQyxPQUEwQixFQUFFLFFBQXNDO1FBQ3JGLE9BQU8sSUFBSSxDQUFDLHNDQUFzQyxDQUNoRCxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsRUFDeEQsUUFBUSxDQUNULENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksZ0JBQWdCLENBQUMsUUFBbUM7UUFDekQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqRSxDQUFDOzt5SEExR1UsMkJBQTJCOzZIQUEzQiwyQkFBMkIsY0FGMUIsTUFBTTs0RkFFUCwyQkFBMkI7a0JBSHZDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBQYXJ0aWFsT2JzZXJ2ZXIsIEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXV0aFN0YXRlIH0gZnJvbSAnQGZyb250ZWdnL3JlZHV4LXN0b3JlJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVudGl0bGVtZW50LCBMb2FkRW50aXRsZW1lbnRzQ2FsbGJhY2ssIEVudGl0bGVkVG9PcHRpb25zIH0gZnJvbSAnQGZyb250ZWdnL3R5cGVzJztcblxuaW1wb3J0IHtcbiAgRnJvbnRlZ2dTdGF0ZSxcbiAgZ2V0UGVybWlzc2lvbkVudGl0bGVtZW50cyxcbiAgZ2V0RmVhdHVyZUVudGl0bGVtZW50cyxcbiAgZ2V0RW50aXRsZW1lbnRzLFxufSBmcm9tICdAZnJvbnRlZ2cvcmVkdXgtc3RvcmUnO1xuaW1wb3J0IHsgRnJvbnRlZ2dBcHBTZXJ2aWNlIH0gZnJvbSAnLi9mcm9udGVnZy1hcHAuc2VydmljZSc7XG5cbi8qKlxuICogQW4gZW50aXRsZW1lbnRzIHNlcnZpY2UgZm9yOiBcbiAqICAgMS4gTWFuYWdpbmcgc3RhdGUgc3Vic2NyaXB0aW9uLlxuICogICAyLiBRdWVyeWluZyBhYm91dCBmZWF0dXJlIGFuZCBwZXJtaXNzaW9uIGVudGl0bGVtZW50cyBzdGF0ZS5cbiAqICAgMy4gTG9hZCBlbnRpdGxlbWVudHMgb24gZGVtYW5kLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRnJvbnRlZ2dFbnRpdGxlbWVudHNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBlbnRpdGxlbWVudHNTdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4odW5kZWZpbmVkKTtcbiAgXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZnJvbnRlZ2dBcHBTZXJ2aWNlOiBGcm9udGVnZ0FwcFNlcnZpY2UpIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuZnJvbnRlZ2dBcHBTZXJ2aWNlLmZyb250ZWdnQXBwLnN0b3JlLmdldFN0YXRlKCkgYXMgRnJvbnRlZ2dTdGF0ZTtcbiAgICB0aGlzLnVwZGF0ZUVudGl0bGVtZW50c1N0YXRlSWZOZWVkZWQoc3RhdGUuYXV0aCk7XG5cbiAgICAvLyBNZW1vaXplZCBlbnRpdGxlbWVudHMgU3RhdGVcbiAgICB0aGlzLmZyb250ZWdnQXBwU2VydmljZS5mcm9udGVnZ0FwcC5zdG9yZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgbmV3U3RhdGUgPSB0aGlzLmZyb250ZWdnQXBwU2VydmljZS5mcm9udGVnZ0FwcC5zdG9yZS5nZXRTdGF0ZSgpIGFzIEZyb250ZWdnU3RhdGU7XG4gICAgICB0aGlzLnVwZGF0ZUVudGl0bGVtZW50c1N0YXRlSWZOZWVkZWQobmV3U3RhdGUuYXV0aCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlciBlbnRpdGxlbWVudHMgc3ViamVjdCBjaGFuZ2UgZXZlbnQgaWYgdGhlIGVudGl0bGVtZW50cyByZWZlcmVuY2UgY2hhbmdlc1xuICAgKiBObyBuZWVkIGZvciBkZWVwIGVxdWFsIGJlY2F1c2Ugd2UgYWxyZWFkeSBjaGVjayBpdCBpbnRlcm5hbGx5XG4gICAqIEBwYXJhbSBhdXRoU3RhdGVcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlRW50aXRsZW1lbnRzU3RhdGVJZk5lZWRlZChhdXRoU3RhdGU6IEF1dGhTdGF0ZSk6IHZvaWQge1xuICAgIGNvbnN0IGVudGl0bGVtZW50c1N0YXRlID0gYXV0aFN0YXRlLnVzZXI/LmVudGl0bGVtZW50cyBhcyBhbnk7XG4gICAgaWYgKHRoaXMuZW50aXRsZW1lbnRzU3RhdGVTdWJqZWN0LnZhbHVlID09PSBlbnRpdGxlbWVudHNTdGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZW50aXRsZW1lbnRzU3RhdGVTdWJqZWN0Lm5leHQoZW50aXRsZW1lbnRzU3RhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBmdW5jdGlvbiBnaXZlcyB0aGUgYWJpbGl0eSB0byByZXR1cm4gYSBtYW5pcHVsYXRlZCBkYXRhIG9mIHRoZSBlbnRpdGxlbWVudHMgc3RhdGUgYXMgYSBzdWJzY3JpcHRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhTWFuaXB1bGF0b3IgTWFuaXB1bGF0b3IgZnVuY3Rpb24gdGhhdCByZWNlaXZlcyBlbnRpdGxlbWVudHMgc3RhdGUgYW5kIHJldHVybnMgYSBtYW5pcHVsYXRlZCBkYXRhXG4gICAqIEBwYXJhbSBvYnNlcnZlciBGb3IgcmVjZWl2aW5nIG1hbmlwdWxhdGVkIGRhdGEgcmVzdWx0XG4gICAqIEByZXR1cm5zIGEgc3Vic2NyaXB0aW9uIHRvIGJlIGFibGUgdG8gdW5zdWJzY3JpYmVcbiAgICovXG4gIHByaXZhdGUgZ2V0RW50aXRsZW1lbnRzTWFuaXB1bGF0b3JTdWJzY3JpcHRpb248UmVzdWx0PihcbiAgICBkYXRhTWFuaXB1bGF0b3I6IChlbnRpdGxlbWVudHM6IGFueSkgPT4gUmVzdWx0LCBcbiAgICBvYnNlcnZlcjogUGFydGlhbE9ic2VydmVyPFJlc3VsdD5cbiAgKTogU3Vic2NyaXB0aW9uIHtcbiAgICAvLyB1c2VkIGZvciBjb21wdXRpbmcgdGhlIGVudGl0bGVtZW50cyByZXN1bHQgYmVjYXVzZSB3ZSBkb24ndCByZXR1cm4gdGhlIHN0YXRlIGl0c2VsZiwgYnV0IGEgY2FsY3VsYXRlZCBvbmVcbiAgICBjb25zdCBlbnRpdGxlbWVudHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxSZXN1bHQ+KHVuZGVmaW5lZCBhcyB1bmtub3duIGFzIFJlc3VsdCk7XG4gICAgXG4gICAgY29uc3Qgc3RhdGVTdWJzY3JpcHRpb24gPSB0aGlzLmVudGl0bGVtZW50c1N0YXRlU3ViamVjdC5zdWJzY3JpYmUoZW50aXRsZW1lbnRzID0+IHtcbiAgICAgIGVudGl0bGVtZW50c1N1YmplY3QubmV4dChkYXRhTWFuaXB1bGF0b3IoZW50aXRsZW1lbnRzKSk7XG4gICAgfSk7XG4gICAgXG4gICAgLy8gc3Vic2NyaWJpbmcgdGhlIGNvbnN1bWVyIG9ic2VydmVyXG4gICAgY29uc3QgZW50aXRsZW1lbnRzUmVzdWx0U3Vic2NyaXB0aW9uID0gZW50aXRsZW1lbnRzU3ViamVjdC5hc09ic2VydmFibGUoKS5zdWJzY3JpYmUob2JzZXJ2ZXIpXG5cbiAgICAvLyBtb25rZXkgcGF0Y2hlZCB0byBtYW5hZ2UgYm90aCB1bi1zdWJzY3JpcHRpb25zOiBzdGF0ZSBhbmQgZW50aXRsZW1lbnRzIG1hbmlwdWxhdGVkIHJlc3VsdFxuICAgIGNvbnN0IG9yaWdpbmFsVW5zdWJzY3JpYmUgPSBlbnRpdGxlbWVudHNSZXN1bHRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUuYmluZChlbnRpdGxlbWVudHNSZXN1bHRTdWJzY3JpcHRpb24pO1xuXG4gICAgZW50aXRsZW1lbnRzUmVzdWx0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlID0gKCk9PntcbiAgICAgIG9yaWdpbmFsVW5zdWJzY3JpYmUoKTtcbiAgICAgIHN0YXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfTtcblxuICAgIHJldHVybiBlbnRpdGxlbWVudHNSZXN1bHRTdWJzY3JpcHRpb247XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGZlYXR1cmVcbiAgICogQHBhcmFtIG9ic2VydmVyIEZvciByZWNlaXZpbmcgdGhlIGZlYXR1cmUgZW50aXRsZW1lbnRzIHJlc3VsdCBpbmNsdWRpbmcgaWYgdGhlIHVzZXIgaXMgZW50aXRsZWQgdG8gdGhlIGdpdmVuIGZlYXR1cmUuXG4gICAqICAgICAgICAgICAgICAgICBBdHRhY2hpbmcgdGhlIGp1c3RpZmljYXRpb24gaWYgbm90IGVudGl0bGVkXG4gICAqIEByZXR1cm5zIGEgc3Vic2NyaXB0aW9uIHRvIGJlIGFibGUgdG8gdW5zdWJzY3JpYmVcbiAgICogQHRocm93cyB3aGVuIGVudGl0bGVtZW50IGlzIG5vdCBlbmFibGVkIHZpYSBmcm9udGVnZyBvcHRpb25zXG4gICAqL1xuICBwdWJsaWMgZmVhdHVyZUVudGl0bGVtZW50cyQoZmVhdHVyZTogc3RyaW5nLCBvYnNlcnZlcjogUGFydGlhbE9ic2VydmVyPEVudGl0bGVtZW50Pik6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RW50aXRsZW1lbnRzTWFuaXB1bGF0b3JTdWJzY3JpcHRpb248RW50aXRsZW1lbnQ+KFxuICAgICAgKGVudGl0bGVtZW50cykgPT4gZ2V0RmVhdHVyZUVudGl0bGVtZW50cyhlbnRpdGxlbWVudHMsIGZlYXR1cmUpLFxuICAgICAgb2JzZXJ2ZXJcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBwZXJtaXNzaW9uXG4gICAqIEBwYXJhbSBvYnNlcnZlciBGb3IgcmVjZWl2aW5nIHRoZSBwZXJtaXNzaW9uIGVudGl0bGVtZW50cyByZXN1bHQgaW5jbHVkaW5nIGlmIHRoZSB1c2VyIGlzIGVudGl0bGVkIHRvIHRoZSBnaXZlbiBwZXJtaXNzaW9uLlxuICAgKiAgICAgICAgICAgICAgICAgQXR0YWNoaW5nIHRoZSBqdXN0aWZpY2F0aW9uIGlmIG5vdCBlbnRpdGxlZFxuICAgKiBAcmV0dXJucyBhIHN1YnNjcmlwdGlvbiB0byBiZSBhYmxlIHRvIHVuc3Vic2NyaWJlXG4gICAqL1xuICBwdWJsaWMgcGVybWlzc2lvbkVudGl0bGVtZW50cyQocGVybWlzc2lvbjogc3RyaW5nLCBvYnNlcnZlcjogUGFydGlhbE9ic2VydmVyPEVudGl0bGVtZW50Pik6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RW50aXRsZW1lbnRzTWFuaXB1bGF0b3JTdWJzY3JpcHRpb248RW50aXRsZW1lbnQ+KFxuICAgICAgKGVudGl0bGVtZW50cykgPT4gZ2V0UGVybWlzc2lvbkVudGl0bGVtZW50cyhlbnRpdGxlbWVudHMsIHBlcm1pc3Npb24pLFxuICAgICAgb2JzZXJ2ZXJcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBvcHRpb25zIHBlcm1pc3Npb25LZXkgb3IgZmVhdHVyZUtleSBpbiBhbiBvcHRpb25zIG9iamVjdFxuICAgKiBAcGFyYW0gb2JzZXJ2ZXIgRm9yIHJlY2VpdmluZyB0aGUgcGVybWlzc2lvbiBlbnRpdGxlbWVudHMgcmVzdWx0IGluY2x1ZGluZyBpZiB0aGUgdXNlciBpcyBlbnRpdGxlZCB0byB0aGUgZ2l2ZW4gcGVybWlzc2lvbi5cbiAgICogICAgICAgICAgICAgICAgIEF0dGFjaGluZyB0aGUganVzdGlmaWNhdGlvbiBpZiBub3QgZW50aXRsZWRcbiAgICogQHJldHVybnMgYSBzdWJzY3JpcHRpb24gdG8gYmUgYWJsZSB0byB1bnN1YnNjcmliZVxuICAgKi9cbiAgcHVibGljIGVudGl0bGVtZW50cyQob3B0aW9uczogRW50aXRsZWRUb09wdGlvbnMsIG9ic2VydmVyOiBQYXJ0aWFsT2JzZXJ2ZXI8RW50aXRsZW1lbnQ+KTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5nZXRFbnRpdGxlbWVudHNNYW5pcHVsYXRvclN1YnNjcmlwdGlvbjxFbnRpdGxlbWVudD4oXG4gICAgICAoZW50aXRsZW1lbnRzKSA9PiBnZXRFbnRpdGxlbWVudHMoZW50aXRsZW1lbnRzLCBvcHRpb25zKSxcbiAgICAgIG9ic2VydmVyXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGVudGl0bGVtZW50cyBkYXRhIG9uIGRlbWFuZFxuICAgKiBAcGFyYW0gY2FsbGJhY2sgY2FsbGVkIG9uIHJlcXVlc3QgY29tcGxldGVkIHdpdGggdHJ1ZSBpZiBzdWNjZWVkZWQsIGZhbHNlIGlmIGZhaWxlZFxuICAgKi9cbiAgcHVibGljIGxvYWRFbnRpdGxlbWVudHMoY2FsbGJhY2s/OiBMb2FkRW50aXRsZW1lbnRzQ2FsbGJhY2spOiB2b2lkIHtcbiAgICB0aGlzLmZyb250ZWdnQXBwU2VydmljZS5mcm9udGVnZ0FwcC5sb2FkRW50aXRsZW1lbnRzKGNhbGxiYWNrKTtcbiAgfVxufVxuIl19
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbnRlZ2ctZW50aXRsZW1lbnRzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mcm9udGVnZy1hcHAvc3JjL2xpYi9mcm9udGVnZy1lbnRpdGxlbWVudHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlDLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFRM0M7Ozs7O0dBS0c7QUFJSCxNQUFNLE9BQU8sMkJBQTJCO0lBR3RDLFlBQW9CLGtCQUFzQztRQUF0Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBRmxELHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUFNLFNBQVMsQ0FBQyxDQUFDO1FBRzdELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBbUIsQ0FBQztRQUNwRixJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXpDLDhCQUE4QjtRQUM5QixJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3ZELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBbUIsQ0FBQztZQUN2RixJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyx1QkFBdUIsQ0FBQyxTQUFvQjtRQUNsRCxNQUFNLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxJQUFZLENBQUM7UUFDakQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxLQUFLLGlCQUFpQixFQUFFO1lBQ3JELE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssOEJBQThCLENBQ3BDLGVBQXVDLEVBQ3ZDLFFBQWlDO1FBRWpDLDRHQUE0RztRQUM1RyxNQUFNLFdBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBUyxTQUE4QixDQUFDLENBQUM7UUFFaEYsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQy9ELFdBQVcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7UUFFSCxvQ0FBb0M7UUFDcEMsTUFBTSxzQkFBc0IsR0FBRyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRTdFLG9GQUFvRjtRQUNwRixNQUFNLG1CQUFtQixHQUFHLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUU1RixzQkFBc0IsQ0FBQyxXQUFXLEdBQUcsR0FBRSxFQUFFO1lBQ3ZDLG1CQUFtQixFQUFFLENBQUM7WUFDdEIsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEMsQ0FBQyxDQUFDO1FBRUYsT0FBTyxzQkFBc0IsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLG9CQUFvQixDQUFDLE9BQWUsRUFBRSxRQUFzQyxFQUFFLGdCQUFtQztRQUN0SCxPQUFPLElBQUksQ0FBQyw4QkFBOEIsQ0FDeEMsR0FBRyxFQUFFLEdBQUcsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFBLENBQUEsQ0FBQyxFQUNyRyxRQUFRLENBQ1QsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSx1QkFBdUIsQ0FBQyxVQUFrQixFQUFFLFFBQXNDLEVBQUUsZ0JBQW1DO1FBQzVILE9BQU8sSUFBSSxDQUFDLDhCQUE4QixDQUN4QyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLHlCQUF5QixDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxFQUNqRyxRQUFRLENBQ1QsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxhQUFhLENBQUMsT0FBMEIsRUFBRSxRQUFzQyxFQUFFLGdCQUFtQztRQUMxSCxPQUFPLElBQUksQ0FBQyw4QkFBOEIsQ0FDeEMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLEVBQ3BGLFFBQVEsQ0FDVCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNJLGdCQUFnQixDQUFDLFFBQW1DO1FBQ3pELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakUsQ0FBQzs7eUhBN0dVLDJCQUEyQjs2SEFBM0IsMkJBQTJCLGNBRjFCLE1BQU07NEZBRVAsMkJBQTJCO2tCQUh2QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YnNjcmlwdGlvbiwgUGFydGlhbE9ic2VydmVyLCBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEF1dGhTdGF0ZSB9IGZyb20gJ0Bmcm9udGVnZy9yZWR1eC1zdG9yZSc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFbnRpdGxlbWVudCwgTG9hZEVudGl0bGVtZW50c0NhbGxiYWNrLCBFbnRpdGxlZFRvT3B0aW9ucywgQ3VzdG9tQXR0cmlidXRlcyB9IGZyb20gJ0Bmcm9udGVnZy90eXBlcyc7XG5cbmltcG9ydCB7IEZyb250ZWdnU3RhdGUgfSBmcm9tICdAZnJvbnRlZ2cvcmVkdXgtc3RvcmUnO1xuaW1wb3J0IHsgRnJvbnRlZ2dBcHBTZXJ2aWNlIH0gZnJvbSAnLi9mcm9udGVnZy1hcHAuc2VydmljZSc7XG5cbnR5cGUgVXNlciA9IEZyb250ZWdnU3RhdGVbJ2F1dGgnXVsndXNlciddO1xuXG4vKipcbiAqIEFuIGVudGl0bGVtZW50cyBzZXJ2aWNlIGZvcjogXG4gKiAgIDEuIE1hbmFnaW5nIHN0YXRlIHN1YnNjcmlwdGlvbi5cbiAqICAgMi4gUXVlcnlpbmcgYWJvdXQgZmVhdHVyZSBhbmQgcGVybWlzc2lvbiBlbnRpdGxlbWVudHMgc3RhdGUuXG4gKiAgIDMuIExvYWQgZW50aXRsZW1lbnRzIG9uIGRlbWFuZC5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEZyb250ZWdnRW50aXRsZW1lbnRzU2VydmljZSB7XG4gIHByaXZhdGUgdXNlclN0YXRlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55Pih1bmRlZmluZWQpO1xuICBcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmcm9udGVnZ0FwcFNlcnZpY2U6IEZyb250ZWdnQXBwU2VydmljZSkge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5mcm9udGVnZ0FwcFNlcnZpY2UuZnJvbnRlZ2dBcHAuc3RvcmUuZ2V0U3RhdGUoKSBhcyBGcm9udGVnZ1N0YXRlO1xuICAgIHRoaXMudXBkYXRlVXNlclN0YXRlSWZOZWVkZWQoc3RhdGUuYXV0aCk7XG5cbiAgICAvLyBNZW1vaXplZCBlbnRpdGxlbWVudHMgU3RhdGVcbiAgICB0aGlzLmZyb250ZWdnQXBwU2VydmljZS5mcm9udGVnZ0FwcC5zdG9yZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgbmV3U3RhdGUgPSB0aGlzLmZyb250ZWdnQXBwU2VydmljZS5mcm9udGVnZ0FwcC5zdG9yZS5nZXRTdGF0ZSgpIGFzIEZyb250ZWdnU3RhdGU7XG4gICAgICB0aGlzLnVwZGF0ZVVzZXJTdGF0ZUlmTmVlZGVkKG5ld1N0YXRlLmF1dGgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXIgZW50aXRsZW1lbnRzIHN1YmplY3QgY2hhbmdlIGV2ZW50IGlmIHRoZSBlbnRpdGxlbWVudHMgcmVmZXJlbmNlIGNoYW5nZXNcbiAgICogTm8gbmVlZCBmb3IgZGVlcCBlcXVhbCBiZWNhdXNlIHdlIGFscmVhZHkgY2hlY2sgaXQgaW50ZXJuYWxseVxuICAgKiBAcGFyYW0gYXV0aFN0YXRlXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZVVzZXJTdGF0ZUlmTmVlZGVkKGF1dGhTdGF0ZTogQXV0aFN0YXRlKTogdm9pZCB7XG4gICAgY29uc3QgZW50aXRsZW1lbnRzU3RhdGUgPSBhdXRoU3RhdGUudXNlciBhcyBVc2VyO1xuICAgIGlmICh0aGlzLnVzZXJTdGF0ZVN1YmplY3QudmFsdWUgPT09IGVudGl0bGVtZW50c1N0YXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy51c2VyU3RhdGVTdWJqZWN0Lm5leHQoZW50aXRsZW1lbnRzU3RhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBmdW5jdGlvbiBnaXZlcyB0aGUgYWJpbGl0eSB0byByZXR1cm4gYSBtYW5pcHVsYXRlZCBkYXRhIG9mIHRoZSB1c2VyIHN0YXRlIGFzIGEgc3Vic2NyaXB0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YU1hbmlwdWxhdG9yIE1hbmlwdWxhdG9yIGZ1bmN0aW9uIHRoYXQgcmVjZWl2ZXMgdXNlciBzdGF0ZSBhbmQgcmV0dXJucyBhIG1hbmlwdWxhdGVkIGRhdGFcbiAgICogQHBhcmFtIG9ic2VydmVyIEZvciByZWNlaXZpbmcgbWFuaXB1bGF0ZWQgZGF0YSByZXN1bHRcbiAgICogQHJldHVybnMgYSBzdWJzY3JpcHRpb24gdG8gYmUgYWJsZSB0byB1bnN1YnNjcmliZVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRVc2VyTWFuaXB1bGF0b3JTdWJzY3JpcHRpb248UmVzdWx0PihcbiAgICBkYXRhTWFuaXB1bGF0b3I6ICh1c2VyOiBVc2VyKSA9PiBSZXN1bHQsIFxuICAgIG9ic2VydmVyOiBQYXJ0aWFsT2JzZXJ2ZXI8UmVzdWx0PlxuICApOiBTdWJzY3JpcHRpb24ge1xuICAgIC8vIHVzZWQgZm9yIGNvbXB1dGluZyB0aGUgZW50aXRsZW1lbnRzIHJlc3VsdCBiZWNhdXNlIHdlIGRvbid0IHJldHVybiB0aGUgc3RhdGUgaXRzZWxmLCBidXQgYSBjYWxjdWxhdGVkIG9uZVxuICAgIGNvbnN0IHVzZXJTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxSZXN1bHQ+KHVuZGVmaW5lZCBhcyB1bmtub3duIGFzIFJlc3VsdCk7XG4gICAgXG4gICAgY29uc3Qgc3RhdGVTdWJzY3JpcHRpb24gPSB0aGlzLnVzZXJTdGF0ZVN1YmplY3Quc3Vic2NyaWJlKHVzZXIgPT4ge1xuICAgICAgdXNlclN1YmplY3QubmV4dChkYXRhTWFuaXB1bGF0b3IodXNlcikpO1xuICAgIH0pO1xuICAgIFxuICAgIC8vIHN1YnNjcmliaW5nIHRoZSBjb25zdW1lciBvYnNlcnZlclxuICAgIGNvbnN0IHVzZXJSZXN1bHRTdWJzY3JpcHRpb24gPSB1c2VyU3ViamVjdC5hc09ic2VydmFibGUoKS5zdWJzY3JpYmUob2JzZXJ2ZXIpXG5cbiAgICAvLyBtb25rZXkgcGF0Y2hlZCB0byBtYW5hZ2UgYm90aCB1bi1zdWJzY3JpcHRpb25zOiBzdGF0ZSBhbmQgdXNlciBtYW5pcHVsYXRlZCByZXN1bHRcbiAgICBjb25zdCBvcmlnaW5hbFVuc3Vic2NyaWJlID0gdXNlclJlc3VsdFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZS5iaW5kKHVzZXJSZXN1bHRTdWJzY3JpcHRpb24pO1xuXG4gICAgdXNlclJlc3VsdFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSA9ICgpPT57XG4gICAgICBvcmlnaW5hbFVuc3Vic2NyaWJlKCk7XG4gICAgICBzdGF0ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH07XG5cbiAgICByZXR1cm4gdXNlclJlc3VsdFN1YnNjcmlwdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gZmVhdHVyZVxuICAgKiBAcGFyYW0gb2JzZXJ2ZXIgRm9yIHJlY2VpdmluZyB0aGUgZmVhdHVyZSBlbnRpdGxlbWVudHMgcmVzdWx0IGluY2x1ZGluZyBpZiB0aGUgdXNlciBpcyBlbnRpdGxlZCB0byB0aGUgZ2l2ZW4gZmVhdHVyZS5cbiAgICogICAgICAgICAgICAgICAgIEF0dGFjaGluZyB0aGUganVzdGlmaWNhdGlvbiBpZiBub3QgZW50aXRsZWRcbiAgICogQHBhcmFtIGN1c3RvbUF0dHJpYnV0ZXMgY29uc3VtZXIgYXR0cmlidXRlc1xuICAgKiBAcmV0dXJucyBhIHN1YnNjcmlwdGlvbiB0byBiZSBhYmxlIHRvIHVuc3Vic2NyaWJlXG4gICAqIEB0aHJvd3Mgd2hlbiBlbnRpdGxlbWVudCBpcyBub3QgZW5hYmxlZCB2aWEgZnJvbnRlZ2cgb3B0aW9uc1xuICAgKi9cbiAgcHVibGljIGZlYXR1cmVFbnRpdGxlbWVudHMkKGZlYXR1cmU6IHN0cmluZywgb2JzZXJ2ZXI6IFBhcnRpYWxPYnNlcnZlcjxFbnRpdGxlbWVudD4sIGN1c3RvbUF0dHJpYnV0ZXM/OiBDdXN0b21BdHRyaWJ1dGVzKTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5nZXRVc2VyTWFuaXB1bGF0b3JTdWJzY3JpcHRpb248RW50aXRsZW1lbnQ+KFxuICAgICAgKCkgPT4geyByZXR1cm4gdGhpcy5mcm9udGVnZ0FwcFNlcnZpY2UuZnJvbnRlZ2dBcHAuZ2V0RmVhdHVyZUVudGl0bGVtZW50cyhmZWF0dXJlLCBjdXN0b21BdHRyaWJ1dGVzKX0sXG4gICAgICBvYnNlcnZlclxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHBlcm1pc3Npb25cbiAgICogQHBhcmFtIG9ic2VydmVyIEZvciByZWNlaXZpbmcgdGhlIHBlcm1pc3Npb24gZW50aXRsZW1lbnRzIHJlc3VsdCBpbmNsdWRpbmcgaWYgdGhlIHVzZXIgaXMgZW50aXRsZWQgdG8gdGhlIGdpdmVuIHBlcm1pc3Npb24uXG4gICAqICAgICAgICAgICAgICAgICBBdHRhY2hpbmcgdGhlIGp1c3RpZmljYXRpb24gaWYgbm90IGVudGl0bGVkXG4gICAqIEBwYXJhbSBjdXN0b21BdHRyaWJ1dGVzIGNvbnN1bWVyIGF0dHJpYnV0ZXNcbiAgICogQHJldHVybnMgYSBzdWJzY3JpcHRpb24gdG8gYmUgYWJsZSB0byB1bnN1YnNjcmliZVxuICAgKi9cbiAgcHVibGljIHBlcm1pc3Npb25FbnRpdGxlbWVudHMkKHBlcm1pc3Npb246IHN0cmluZywgb2JzZXJ2ZXI6IFBhcnRpYWxPYnNlcnZlcjxFbnRpdGxlbWVudD4sIGN1c3RvbUF0dHJpYnV0ZXM/OiBDdXN0b21BdHRyaWJ1dGVzKTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5nZXRVc2VyTWFuaXB1bGF0b3JTdWJzY3JpcHRpb248RW50aXRsZW1lbnQ+KFxuICAgICAgKCkgPT4gdGhpcy5mcm9udGVnZ0FwcFNlcnZpY2UuZnJvbnRlZ2dBcHAuZ2V0UGVybWlzc2lvbkVudGl0bGVtZW50cyhwZXJtaXNzaW9uLCBjdXN0b21BdHRyaWJ1dGVzKSxcbiAgICAgIG9ic2VydmVyXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gb3B0aW9ucyBwZXJtaXNzaW9uS2V5IG9yIGZlYXR1cmVLZXkgaW4gYW4gb3B0aW9ucyBvYmplY3RcbiAgICogQHBhcmFtIG9ic2VydmVyIEZvciByZWNlaXZpbmcgdGhlIHBlcm1pc3Npb24gZW50aXRsZW1lbnRzIHJlc3VsdCBpbmNsdWRpbmcgaWYgdGhlIHVzZXIgaXMgZW50aXRsZWQgdG8gdGhlIGdpdmVuIHBlcm1pc3Npb24uXG4gICAqICAgICAgICAgICAgICAgICBBdHRhY2hpbmcgdGhlIGp1c3RpZmljYXRpb24gaWYgbm90IGVudGl0bGVkXG4gICAqIEBwYXJhbSBjdXN0b21BdHRyaWJ1dGVzIGNvbnN1bWVyIGF0dHJpYnV0ZXNcbiAgICogQHJldHVybnMgYSBzdWJzY3JpcHRpb24gdG8gYmUgYWJsZSB0byB1bnN1YnNjcmliZVxuICAgKi9cbiAgcHVibGljIGVudGl0bGVtZW50cyQob3B0aW9uczogRW50aXRsZWRUb09wdGlvbnMsIG9ic2VydmVyOiBQYXJ0aWFsT2JzZXJ2ZXI8RW50aXRsZW1lbnQ+LCBjdXN0b21BdHRyaWJ1dGVzPzogQ3VzdG9tQXR0cmlidXRlcyk6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VXNlck1hbmlwdWxhdG9yU3Vic2NyaXB0aW9uPEVudGl0bGVtZW50PihcbiAgICAgICgpID0+IHRoaXMuZnJvbnRlZ2dBcHBTZXJ2aWNlLmZyb250ZWdnQXBwLmdldEVudGl0bGVtZW50cyhvcHRpb25zLCBjdXN0b21BdHRyaWJ1dGVzKSxcbiAgICAgIG9ic2VydmVyXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGVudGl0bGVtZW50cyBkYXRhIG9uIGRlbWFuZFxuICAgKiBAcGFyYW0gY2FsbGJhY2sgY2FsbGVkIG9uIHJlcXVlc3QgY29tcGxldGVkIHdpdGggdHJ1ZSBpZiBzdWNjZWVkZWQsIGZhbHNlIGlmIGZhaWxlZFxuICAgKi9cbiAgcHVibGljIGxvYWRFbnRpdGxlbWVudHMoY2FsbGJhY2s/OiBMb2FkRW50aXRsZW1lbnRzQ2FsbGJhY2spOiB2b2lkIHtcbiAgICB0aGlzLmZyb250ZWdnQXBwU2VydmljZS5mcm9udGVnZ0FwcC5sb2FkRW50aXRsZW1lbnRzKGNhbGxiYWNrKTtcbiAgfVxufVxuIl19
|
|
@@ -4,7 +4,7 @@ import { CommonModule } from '@angular/common';
|
|
|
4
4
|
import * as i1 from '@angular/router';
|
|
5
5
|
import { DefaultUrlSerializer, RouterModule } from '@angular/router';
|
|
6
6
|
import { initialize } from '@frontegg/js';
|
|
7
|
-
import { isAuthRoute, authStoreName, subscriptionsStoreName
|
|
7
|
+
import { isAuthRoute, authStoreName, subscriptionsStoreName } from '@frontegg/redux-store';
|
|
8
8
|
import { BehaviorSubject, Observable } from 'rxjs';
|
|
9
9
|
import { FronteggFrameworks, ContextHolder } from '@frontegg/rest-api';
|
|
10
10
|
export { ContextHolder } from '@frontegg/rest-api';
|
|
@@ -706,13 +706,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
706
706
|
class FronteggEntitlementsService {
|
|
707
707
|
constructor(fronteggAppService) {
|
|
708
708
|
this.fronteggAppService = fronteggAppService;
|
|
709
|
-
this.
|
|
709
|
+
this.userStateSubject = new BehaviorSubject(undefined);
|
|
710
710
|
const state = this.fronteggAppService.fronteggApp.store.getState();
|
|
711
|
-
this.
|
|
711
|
+
this.updateUserStateIfNeeded(state.auth);
|
|
712
712
|
// Memoized entitlements State
|
|
713
713
|
this.fronteggAppService.fronteggApp.store.subscribe(() => {
|
|
714
714
|
const newState = this.fronteggAppService.fronteggApp.store.getState();
|
|
715
|
-
this.
|
|
715
|
+
this.updateUserStateIfNeeded(newState.auth);
|
|
716
716
|
});
|
|
717
717
|
}
|
|
718
718
|
/**
|
|
@@ -720,64 +720,66 @@ class FronteggEntitlementsService {
|
|
|
720
720
|
* No need for deep equal because we already check it internally
|
|
721
721
|
* @param authState
|
|
722
722
|
*/
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
if (this.entitlementsStateSubject.value === entitlementsState) {
|
|
723
|
+
updateUserStateIfNeeded(authState) {
|
|
724
|
+
const entitlementsState = authState.user;
|
|
725
|
+
if (this.userStateSubject.value === entitlementsState) {
|
|
727
726
|
return;
|
|
728
727
|
}
|
|
729
|
-
this.
|
|
728
|
+
this.userStateSubject.next(entitlementsState);
|
|
730
729
|
}
|
|
731
730
|
/**
|
|
732
|
-
* The function gives the ability to return a manipulated data of the
|
|
731
|
+
* The function gives the ability to return a manipulated data of the user state as a subscription.
|
|
733
732
|
*
|
|
734
|
-
* @param dataManipulator Manipulator function that receives
|
|
733
|
+
* @param dataManipulator Manipulator function that receives user state and returns a manipulated data
|
|
735
734
|
* @param observer For receiving manipulated data result
|
|
736
735
|
* @returns a subscription to be able to unsubscribe
|
|
737
736
|
*/
|
|
738
|
-
|
|
737
|
+
getUserManipulatorSubscription(dataManipulator, observer) {
|
|
739
738
|
// used for computing the entitlements result because we don't return the state itself, but a calculated one
|
|
740
|
-
const
|
|
741
|
-
const stateSubscription = this.
|
|
742
|
-
|
|
739
|
+
const userSubject = new BehaviorSubject(undefined);
|
|
740
|
+
const stateSubscription = this.userStateSubject.subscribe(user => {
|
|
741
|
+
userSubject.next(dataManipulator(user));
|
|
743
742
|
});
|
|
744
743
|
// subscribing the consumer observer
|
|
745
|
-
const
|
|
746
|
-
// monkey patched to manage both un-subscriptions: state and
|
|
747
|
-
const originalUnsubscribe =
|
|
748
|
-
|
|
744
|
+
const userResultSubscription = userSubject.asObservable().subscribe(observer);
|
|
745
|
+
// monkey patched to manage both un-subscriptions: state and user manipulated result
|
|
746
|
+
const originalUnsubscribe = userResultSubscription.unsubscribe.bind(userResultSubscription);
|
|
747
|
+
userResultSubscription.unsubscribe = () => {
|
|
749
748
|
originalUnsubscribe();
|
|
750
749
|
stateSubscription.unsubscribe();
|
|
751
750
|
};
|
|
752
|
-
return
|
|
751
|
+
return userResultSubscription;
|
|
753
752
|
}
|
|
754
753
|
/**
|
|
755
754
|
* @param feature
|
|
756
755
|
* @param observer For receiving the feature entitlements result including if the user is entitled to the given feature.
|
|
757
756
|
* Attaching the justification if not entitled
|
|
757
|
+
* @param customAttributes consumer attributes
|
|
758
758
|
* @returns a subscription to be able to unsubscribe
|
|
759
759
|
* @throws when entitlement is not enabled via frontegg options
|
|
760
760
|
*/
|
|
761
|
-
featureEntitlements$(feature, observer) {
|
|
762
|
-
return this.
|
|
761
|
+
featureEntitlements$(feature, observer, customAttributes) {
|
|
762
|
+
return this.getUserManipulatorSubscription(() => { return this.fronteggAppService.fronteggApp.getFeatureEntitlements(feature, customAttributes); }, observer);
|
|
763
763
|
}
|
|
764
764
|
/**
|
|
765
765
|
* @param permission
|
|
766
766
|
* @param observer For receiving the permission entitlements result including if the user is entitled to the given permission.
|
|
767
767
|
* Attaching the justification if not entitled
|
|
768
|
+
* @param customAttributes consumer attributes
|
|
768
769
|
* @returns a subscription to be able to unsubscribe
|
|
769
770
|
*/
|
|
770
|
-
permissionEntitlements$(permission, observer) {
|
|
771
|
-
return this.
|
|
771
|
+
permissionEntitlements$(permission, observer, customAttributes) {
|
|
772
|
+
return this.getUserManipulatorSubscription(() => this.fronteggAppService.fronteggApp.getPermissionEntitlements(permission, customAttributes), observer);
|
|
772
773
|
}
|
|
773
774
|
/**
|
|
774
775
|
* @param options permissionKey or featureKey in an options object
|
|
775
776
|
* @param observer For receiving the permission entitlements result including if the user is entitled to the given permission.
|
|
776
777
|
* Attaching the justification if not entitled
|
|
778
|
+
* @param customAttributes consumer attributes
|
|
777
779
|
* @returns a subscription to be able to unsubscribe
|
|
778
780
|
*/
|
|
779
|
-
entitlements$(options, observer) {
|
|
780
|
-
return this.
|
|
781
|
+
entitlements$(options, observer, customAttributes) {
|
|
782
|
+
return this.getUserManipulatorSubscription(() => this.fronteggAppService.fronteggApp.getEntitlements(options, customAttributes), observer);
|
|
781
783
|
}
|
|
782
784
|
/**
|
|
783
785
|
* Load entitlements data on demand
|