@ts-core/angular 18.0.1 → 19.0.1
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/application/ApplicationBaseComponent.d.ts +1 -1
- package/fesm2022/ts-core-angular.mjs +310 -271
- package/fesm2022/ts-core-angular.mjs.map +1 -1
- package/login/LoginTokenStorage.d.ts +1 -1
- package/notification/INotificationContent.d.ts +1 -1
- package/package.json +13 -15
- package/public-api.d.ts +1 -0
- package/service/RouterBaseService.d.ts +0 -4
- package/service/ServiceWorkerService.d.ts +3 -1
- package/storage/JSONValueStorage.d.ts +5 -0
- package/theme/ThemeAssetDirective.d.ts +1 -1
- package/theme/ThemeToggleDirective.d.ts +1 -1
- package/window/IWindowContent.d.ts +1 -1
- package/esm2022/ApplicationInjector.mjs +0 -9
- package/esm2022/VIModule.mjs +0 -190
- package/esm2022/application/ApplicationBaseComponent.mjs +0 -96
- package/esm2022/application/ApplicationComponent.mjs +0 -64
- package/esm2022/application/MessageBaseComponent.mjs +0 -60
- package/esm2022/asset/AssetBackgroundDirective.mjs +0 -155
- package/esm2022/asset/AssetBackgroundPipe.mjs +0 -22
- package/esm2022/asset/AssetFilePipe.mjs +0 -22
- package/esm2022/asset/AssetIconPipe.mjs +0 -22
- package/esm2022/asset/AssetImagePipe.mjs +0 -22
- package/esm2022/asset/AssetModule.mjs +0 -25
- package/esm2022/asset/AssetSoundPipe.mjs +0 -22
- package/esm2022/asset/AssetVideoPipe.mjs +0 -22
- package/esm2022/bottomSheet/BottomSheetService.mjs +0 -4
- package/esm2022/cookie/CookieModule.mjs +0 -47
- package/esm2022/cookie/CookieOptions.mjs +0 -9
- package/esm2022/cookie/CookieService.mjs +0 -69
- package/esm2022/directive/AspectRatioResizeDirective.mjs +0 -135
- package/esm2022/directive/AutoScrollBottomDirective.mjs +0 -122
- package/esm2022/directive/ClickToCopyDirective.mjs +0 -53
- package/esm2022/directive/ClickToSelectDirective.mjs +0 -55
- package/esm2022/directive/FocusDirective.mjs +0 -60
- package/esm2022/directive/HTMLContentTitleDirective.mjs +0 -74
- package/esm2022/directive/HTMLTitleDirective.mjs +0 -73
- package/esm2022/directive/InfiniteScrollDirective.mjs +0 -72
- package/esm2022/directive/IsBrowserDirective.mjs +0 -24
- package/esm2022/directive/IsServerDirective.mjs +0 -24
- package/esm2022/directive/ResizeDirective.mjs +0 -84
- package/esm2022/directive/ScrollCheckDirective.mjs +0 -106
- package/esm2022/directive/ScrollDirective.mjs +0 -121
- package/esm2022/directive/SelectOnFocusDirective.mjs +0 -48
- package/esm2022/directive/StructureDirective.mjs +0 -80
- package/esm2022/language/LanguageDirective.mjs +0 -103
- package/esm2022/language/LanguageHasDirective.mjs +0 -87
- package/esm2022/language/LanguageModule.mjs +0 -61
- package/esm2022/language/LanguagePipe.mjs +0 -88
- package/esm2022/language/LanguagePipeHas.mjs +0 -64
- package/esm2022/language/LanguagePipeHasPure.mjs +0 -41
- package/esm2022/language/LanguagePipePure.mjs +0 -40
- package/esm2022/language/LanguageRequireResolver.mjs +0 -37
- package/esm2022/language/LanguageResolver.mjs +0 -21
- package/esm2022/list/IListItem.mjs +0 -2
- package/esm2022/list/ListItem.mjs +0 -148
- package/esm2022/list/ListItems.mjs +0 -107
- package/esm2022/list/select/ISelectListItem.mjs +0 -2
- package/esm2022/list/select/RouterSelectListItems.mjs +0 -60
- package/esm2022/list/select/SelectListItem.mjs +0 -67
- package/esm2022/list/select/SelectListItems.mjs +0 -130
- package/esm2022/login/LoginBaseService.mjs +0 -191
- package/esm2022/login/LoginGuard.mjs +0 -41
- package/esm2022/login/LoginIfCanGuard.mjs +0 -55
- package/esm2022/login/LoginNotGuard.mjs +0 -41
- package/esm2022/login/LoginRequireResolver.mjs +0 -40
- package/esm2022/login/LoginResolver.mjs +0 -24
- package/esm2022/login/LoginTokenStorage.mjs +0 -18
- package/esm2022/manager/FocusManager.mjs +0 -54
- package/esm2022/manager/ResizeManager.mjs +0 -90
- package/esm2022/menu/MenuItem.mjs +0 -20
- package/esm2022/menu/MenuItemBase.mjs +0 -56
- package/esm2022/menu/MenuItems.mjs +0 -111
- package/esm2022/menu/NavigationMenuItem.mjs +0 -20
- package/esm2022/module/LazyModuleLoader.mjs +0 -97
- package/esm2022/notification/INotification.mjs +0 -16
- package/esm2022/notification/INotificationConfig.mjs +0 -2
- package/esm2022/notification/INotificationContent.mjs +0 -141
- package/esm2022/notification/NotificationConfig.mjs +0 -27
- package/esm2022/notification/NotificationService.mjs +0 -4
- package/esm2022/notification/NotificationServiceEvent.mjs +0 -8
- package/esm2022/pipe/CamelCasePipe.mjs +0 -23
- package/esm2022/pipe/FinancePipe.mjs +0 -53
- package/esm2022/pipe/MomentDateAdaptivePipe.mjs +0 -51
- package/esm2022/pipe/MomentDateFromNowPipe.mjs +0 -22
- package/esm2022/pipe/MomentDatePipe.mjs +0 -71
- package/esm2022/pipe/MomentTimePipe.mjs +0 -35
- package/esm2022/pipe/NgModelErrorPipe.mjs +0 -43
- package/esm2022/pipe/PrettifyPipe.mjs +0 -38
- package/esm2022/pipe/SanitizePipe.mjs +0 -48
- package/esm2022/pipe/StartCasePipe.mjs +0 -23
- package/esm2022/pipe/TimePipe.mjs +0 -38
- package/esm2022/pipe/TruncatePipe.mjs +0 -23
- package/esm2022/public-api.mjs +0 -139
- package/esm2022/question/IQuestion.mjs +0 -14
- package/esm2022/question/QuestionManager.mjs +0 -107
- package/esm2022/service/PipeBaseService.mjs +0 -140
- package/esm2022/service/PlatformService.mjs +0 -44
- package/esm2022/service/RouterBaseService.mjs +0 -244
- package/esm2022/service/ServiceWorkerService.mjs +0 -107
- package/esm2022/service/route/CanDeactivateGuard.mjs +0 -11
- package/esm2022/service/route/IRouterDeactivatable.mjs +0 -2
- package/esm2022/storage/BooleanValueStorage.mjs +0 -15
- package/esm2022/storage/DateValueStorage.mjs +0 -46
- package/esm2022/storage/IValueStorage.mjs +0 -2
- package/esm2022/storage/LocalStorageService.mjs +0 -73
- package/esm2022/storage/ValueStorage.mjs +0 -84
- package/esm2022/theme/ThemeAssetBackgroundDirective.mjs +0 -51
- package/esm2022/theme/ThemeAssetDirective.mjs +0 -253
- package/esm2022/theme/ThemeAssetIconDirective.mjs +0 -48
- package/esm2022/theme/ThemeAssetImageDirective.mjs +0 -49
- package/esm2022/theme/ThemeModule.mjs +0 -81
- package/esm2022/theme/ThemeStyleDirective.mjs +0 -125
- package/esm2022/theme/ThemeStyleHoverDirective.mjs +0 -107
- package/esm2022/theme/ThemeToggleDirective.mjs +0 -63
- package/esm2022/transport/TransportLazy.mjs +0 -93
- package/esm2022/transport/TransportLazyModule.mjs +0 -30
- package/esm2022/transport/TransportLazyModuleLoadedEvent.mjs +0 -18
- package/esm2022/ts-core-angular.mjs +0 -5
- package/esm2022/user/IUser.mjs +0 -9
- package/esm2022/user/UserBaseService.mjs +0 -124
- package/esm2022/util/ViewUtil.mjs +0 -589
- package/esm2022/window/IWindow.mjs +0 -31
- package/esm2022/window/IWindowConfig.mjs +0 -7
- package/esm2022/window/IWindowContent.mjs +0 -143
- package/esm2022/window/WindowBase.mjs +0 -177
- package/esm2022/window/WindowClosedError.mjs +0 -19
- package/esm2022/window/WindowConfig.mjs +0 -218
- package/esm2022/window/WindowService.mjs +0 -4
- package/esm2022/window/WindowServiceEvent.mjs +0 -9
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { DestroyableContainer } from '@ts-core/common';
|
|
2
|
-
import { ObservableData } from '@ts-core/common';
|
|
3
|
-
import * as _ from 'lodash';
|
|
4
|
-
import { takeUntil, Subject, filter, map } from 'rxjs';
|
|
5
|
-
import { LoginBaseServiceEvent } from '../login/LoginBaseService';
|
|
6
|
-
export class UserBaseService extends DestroyableContainer {
|
|
7
|
-
login;
|
|
8
|
-
// --------------------------------------------------------------------------
|
|
9
|
-
//
|
|
10
|
-
// Properties
|
|
11
|
-
//
|
|
12
|
-
// --------------------------------------------------------------------------
|
|
13
|
-
_user;
|
|
14
|
-
observer;
|
|
15
|
-
// --------------------------------------------------------------------------
|
|
16
|
-
//
|
|
17
|
-
// Constructor
|
|
18
|
-
//
|
|
19
|
-
// --------------------------------------------------------------------------
|
|
20
|
-
constructor(login) {
|
|
21
|
-
super();
|
|
22
|
-
this.login = login;
|
|
23
|
-
this.observer = new Subject();
|
|
24
|
-
}
|
|
25
|
-
// --------------------------------------------------------------------------
|
|
26
|
-
//
|
|
27
|
-
// Protected Methods
|
|
28
|
-
//
|
|
29
|
-
// --------------------------------------------------------------------------
|
|
30
|
-
initialize() {
|
|
31
|
-
if (this.login.isLoggedIn) {
|
|
32
|
-
this.loginedHandler();
|
|
33
|
-
}
|
|
34
|
-
this.login.events.pipe(takeUntil(this.destroyed)).subscribe(data => {
|
|
35
|
-
if (data.type === LoginBaseServiceEvent.LOGIN_COMPLETE) {
|
|
36
|
-
this.loginedHandler();
|
|
37
|
-
}
|
|
38
|
-
else if (data.type === LoginBaseServiceEvent.LOGOUT_FINISHED) {
|
|
39
|
-
this.logoutedHandler();
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
initializeUser(data) {
|
|
44
|
-
this._user = this.createUser(data);
|
|
45
|
-
}
|
|
46
|
-
deinitializeUser() {
|
|
47
|
-
this._user = null;
|
|
48
|
-
}
|
|
49
|
-
loginedHandler() {
|
|
50
|
-
this.initializeUser(this.login.loginData);
|
|
51
|
-
this.observer.next(new ObservableData(UserBaseServiceEvent.LOGINED, this.user));
|
|
52
|
-
}
|
|
53
|
-
logoutedHandler() {
|
|
54
|
-
this.deinitializeUser();
|
|
55
|
-
this.observer.next(new ObservableData(UserBaseServiceEvent.LOGOUTED));
|
|
56
|
-
}
|
|
57
|
-
// --------------------------------------------------------------------------
|
|
58
|
-
//
|
|
59
|
-
// Public Methods
|
|
60
|
-
//
|
|
61
|
-
// --------------------------------------------------------------------------
|
|
62
|
-
isUser(value) {
|
|
63
|
-
if (_.isNil(value) || _.isNil(this.user)) {
|
|
64
|
-
return false;
|
|
65
|
-
}
|
|
66
|
-
if (_.isString(value) || _.isNumber(value)) {
|
|
67
|
-
return value === this.user.id;
|
|
68
|
-
}
|
|
69
|
-
return value.id === this.user.id;
|
|
70
|
-
}
|
|
71
|
-
userUpdate(data) {
|
|
72
|
-
if (!this.hasUser) {
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
this.user.update(data);
|
|
76
|
-
this.observer.next(new ObservableData(UserBaseServiceEvent.CHANGED, data));
|
|
77
|
-
}
|
|
78
|
-
destroy() {
|
|
79
|
-
if (this.isDestroyed) {
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
super.destroy();
|
|
83
|
-
if (!_.isNil(this.observer)) {
|
|
84
|
-
this.observer.complete();
|
|
85
|
-
this.observer = null;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
// --------------------------------------------------------------------------
|
|
89
|
-
//
|
|
90
|
-
// Public Properties
|
|
91
|
-
//
|
|
92
|
-
// --------------------------------------------------------------------------
|
|
93
|
-
get events() {
|
|
94
|
-
return this.observer.asObservable();
|
|
95
|
-
}
|
|
96
|
-
get logined() {
|
|
97
|
-
return this.events.pipe(filter(item => item.type === UserBaseServiceEvent.LOGINED), map(item => item.data));
|
|
98
|
-
}
|
|
99
|
-
get changed() {
|
|
100
|
-
return this.events.pipe(filter(item => item.type === UserBaseServiceEvent.CHANGED), map(item => item.data));
|
|
101
|
-
}
|
|
102
|
-
get logouted() {
|
|
103
|
-
return this.events.pipe(filter(item => item.type === UserBaseServiceEvent.LOGOUTED), map(() => null));
|
|
104
|
-
}
|
|
105
|
-
get hasUser() {
|
|
106
|
-
return !_.isNil(this._user);
|
|
107
|
-
}
|
|
108
|
-
get isLogined() {
|
|
109
|
-
return this.hasUser;
|
|
110
|
-
}
|
|
111
|
-
get user() {
|
|
112
|
-
return this._user;
|
|
113
|
-
}
|
|
114
|
-
get id() {
|
|
115
|
-
return this.hasUser ? this.user.id : null;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
export var UserBaseServiceEvent;
|
|
119
|
-
(function (UserBaseServiceEvent) {
|
|
120
|
-
UserBaseServiceEvent["LOGINED"] = "LOGINED";
|
|
121
|
-
UserBaseServiceEvent["CHANGED"] = "CHANGED";
|
|
122
|
-
UserBaseServiceEvent["LOGOUTED"] = "LOGOUTED";
|
|
123
|
-
})(UserBaseServiceEvent || (UserBaseServiceEvent = {}));
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlckJhc2VTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3VzZXIvVXNlckJhc2VTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQWMsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25FLE9BQU8sRUFBb0IscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUdwRixNQUFNLE9BQWdCLGVBQWlELFNBQVEsb0JBQW9CO0lBZ0J6RTtJQWZ0Qiw2RUFBNkU7SUFDN0UsRUFBRTtJQUNGLGNBQWM7SUFDZCxFQUFFO0lBQ0YsNkVBQTZFO0lBRW5FLEtBQUssQ0FBSTtJQUNULFFBQVEsQ0FBb0U7SUFFdEYsNkVBQTZFO0lBQzdFLEVBQUU7SUFDRixlQUFlO0lBQ2YsRUFBRTtJQUNGLDZFQUE2RTtJQUU3RSxZQUFzQixLQUF1QjtRQUN6QyxLQUFLLEVBQUUsQ0FBQztRQURVLFVBQUssR0FBTCxLQUFLLENBQWtCO1FBRXpDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsNkVBQTZFO0lBQzdFLEVBQUU7SUFDRixxQkFBcUI7SUFDckIsRUFBRTtJQUNGLDZFQUE2RTtJQUVuRSxVQUFVO1FBQ2hCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDMUIsQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFD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SSxDQUFDO0lBQzlDLENBQUM7Q0FDSjtBQUVELE1BQU0sQ0FBTixJQUFZLG9CQUlYO0FBSkQsV0FBWSxvQkFBb0I7SUFDNUIsMkNBQW1CLENBQUE7SUFDbkIsMkNBQW1CLENBQUE7SUFDbkIsNkNBQXFCLENBQUE7QUFDekIsQ0FBQyxFQUpXLG9CQUFvQixLQUFwQixvQkFBb0IsUUFJL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXN0cm95YWJsZUNvbnRhaW5lciB9IGZyb20gJ0B0cy1jb3JlL2NvbW1vbic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlRGF0YSB9IGZyb20gJ0B0cy1jb3JlL2NvbW1vbic7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0YWtlVW50aWwsIFN1YmplY3QsIGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMb2dpbkJhc2VTZXJ2aWNlLCBMb2dpbkJhc2VTZXJ2aWNlRXZlbnQgfSBmcm9tICcuLi9sb2dpbi9Mb2dpbkJhc2VTZXJ2aWNlJztcbmltcG9ydCB7IElVc2VyLCBVc2VyVWlkIH0gZnJvbSAnLi9JVXNlcic7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBVc2VyQmFzZVNlcnZpY2U8VSBleHRlbmRzIElVc2VyID0gYW55LCBWID0gdm9pZD4gZXh0ZW5kcyBEZXN0cm95YWJsZUNvbnRhaW5lciB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHJvcGVydGllc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByb3RlY3RlZCBfdXNlcjogVTtcbiAgICBwcm90ZWN0ZWQgb2JzZXJ2ZXI6IFN1YmplY3Q8T2JzZXJ2YWJsZURhdGE8ViB8IFVzZXJCYXNlU2VydmljZUV2ZW50LCBVIHwgUGFydGlhbDxVPj4+O1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0Q29uc3RydWN0b3JcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgbG9naW46IExvZ2luQmFzZVNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5vYnNlcnZlciA9IG5ldyBTdWJqZWN0KCk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHJvdGVjdGVkIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcm90ZWN0ZWQgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubG9naW4uaXNMb2dnZWRJbikge1xuICAgICAgICAgICAgdGhpcy5sb2dpbmVkSGFuZGxlcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sb2dpbi5ldmVudHMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgICBpZiAoZGF0YS50eXBlID09PSBMb2dpbkJhc2VTZXJ2aWNlRXZlbnQuTE9HSU5fQ09NUExFVEUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2luZWRIYW5kbGVyKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEudHlwZSA9PT0gTG9naW5CYXNlU2VydmljZUV2ZW50LkxPR09VVF9GSU5JU0hFRCkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nb3V0ZWRIYW5kbGVyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBpbml0aWFsaXplVXNlcihkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdXNlciA9IHRoaXMuY3JlYXRlVXNlcihkYXRhKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZGVpbml0aWFsaXplVXNlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdXNlciA9IG51bGw7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGxvZ2luZWRIYW5kbGVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmluaXRpYWxpemVVc2VyKHRoaXMubG9naW4ubG9naW5EYXRhKTtcbiAgICAgICAgdGhpcy5vYnNlcnZlci5uZXh0KG5ldyBPYnNlcnZhYmxlRGF0YShVc2VyQmFzZVNlcnZpY2VFdmVudC5MT0dJTkVELCB0aGlzLnVzZXIpKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbG9nb3V0ZWRIYW5kbGVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlaW5pdGlhbGl6ZVVzZXIoKTtcbiAgICAgICAgdGhpcy5vYnNlcnZlci5uZXh0KG5ldyBPYnNlcnZhYmxlRGF0YShVc2VyQmFzZVNlcnZpY2VFdmVudC5MT0dPVVRFRCkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBjcmVhdGVVc2VyKGRhdGE6IGFueSk6IFU7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRQdWJsaWMgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBpc1VzZXIodmFsdWU6IFBhcnRpYWw8VT4gfCBVc2VyVWlkKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChfLmlzTmlsKHZhbHVlKSB8fCBfLmlzTmlsKHRoaXMudXNlcikpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXy5pc1N0cmluZyh2YWx1ZSkgfHwgXy5pc051bWJlcih2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdGhpcy51c2VyLmlkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZS5pZCA9PT0gdGhpcy51c2VyLmlkO1xuICAgIH1cblxuICAgIHB1YmxpYyB1c2VyVXBkYXRlKGRhdGE6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaGFzVXNlcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXNlci51cGRhdGUoZGF0YSk7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXIubmV4dChuZXcgT2JzZXJ2YWJsZURhdGEoVXNlckJhc2VTZXJ2aWNlRXZlbnQuQ0hBTkdFRCwgZGF0YSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyLmRlc3Ryb3koKTtcblxuICAgICAgICBpZiAoIV8uaXNOaWwodGhpcy5vYnNlcnZlcikpIHtcbiAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHVibGljIFByb3BlcnRpZXNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgZ2V0IGV2ZW50cygpOiBPYnNlcnZhYmxlPE9ic2VydmFibGVEYXRhPFYgfCBVc2VyQmFzZVNlcnZpY2VFdmVudCwgVSB8IFBhcnRpYWw8VT4+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm9ic2VydmVyLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbG9naW5lZCgpOiBPYnNlcnZhYmxlPFU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXZlbnRzLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIoaXRlbSA9PiBpdGVtLnR5cGUgPT09IFVzZXJCYXNlU2VydmljZUV2ZW50LkxPR0lORUQpLFxuICAgICAgICAgICAgbWFwKGl0ZW0gPT4gaXRlbS5kYXRhIGFzIFUpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjaGFuZ2VkKCk6IE9ic2VydmFibGU8UGFydGlhbDxVPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ldmVudHMucGlwZShcbiAgICAgICAgICAgIGZpbHRlcihpdGVtID0+IGl0ZW0udHlwZSA9PT0gVXNlckJhc2VTZXJ2aWNlRXZlbnQuQ0hBTkdFRCksXG4gICAgICAgICAgICBtYXAoaXRlbSA9PiBpdGVtLmRhdGEpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsb2dvdXRlZCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXZlbnRzLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIoaXRlbSA9PiBpdGVtLnR5cGUgPT09IFVzZXJCYXNlU2VydmljZUV2ZW50LkxPR09VVEVEKSxcbiAgICAgICAgICAgIG1hcCgoKSA9PiBudWxsKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzVXNlcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICFfLmlzTmlsKHRoaXMuX3VzZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNMb2dpbmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNVc2VyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdXNlcigpOiBVIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpZCgpOiBVc2VyVWlkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzVXNlciA/IHRoaXMudXNlci5pZCA6IG51bGw7XG4gICAgfVxufVxuXG5leHBvcnQgZW51bSBVc2VyQmFzZVNlcnZpY2VFdmVudCB7XG4gICAgTE9HSU5FRCA9ICdMT0dJTkVEJyxcbiAgICBDSEFOR0VEID0gJ0NIQU5HRUQnLFxuICAgIExPR09VVEVEID0gJ0xPR09VVEVEJ1xufVxuIl19
|