bx-rest 0.9.1 → 0.9.3
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/esm2022/map/im/recent.mjs +28 -21
- package/esm2022/request-navvy/task/operation/elapseditem.mjs +67 -36
- package/fesm2022/bx-rest.mjs +91 -53
- package/fesm2022/bx-rest.mjs.map +1 -1
- package/map/im/recent.d.ts +2 -0
- package/package.json +29 -13
- package/esm2022/typification/base.mjs +0 -5
- package/typification/base.d.ts +0 -4
|
@@ -9,26 +9,8 @@ export class BXRestMapImRecent {
|
|
|
9
9
|
...{
|
|
10
10
|
date_update: toDate(i.date_update),
|
|
11
11
|
counter: toNum(i.counter),
|
|
12
|
-
user:
|
|
13
|
-
|
|
14
|
-
...i.user,
|
|
15
|
-
...{
|
|
16
|
-
id: toNum(i.user.id),
|
|
17
|
-
last_activity_date: i.user.last_activity_date ? toDate(i.user.last_activity_date) : false,
|
|
18
|
-
mobile_last_date: i.user.mobile_last_date ? toDate(i.user.mobile_last_date) : false,
|
|
19
|
-
absent: i.user.absent ? toDate(i.user.absent) : false,
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
: undefined,
|
|
23
|
-
chat: i.chat && BXRestMapImRecent.isIBXRestImDialogRecentGetChatChatDataHttp(i.chat)
|
|
24
|
-
? {
|
|
25
|
-
...i.chat,
|
|
26
|
-
...{
|
|
27
|
-
id: toNum(i.chat.id),
|
|
28
|
-
date_create: toDate(i.chat.date_create)
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
: i.chat,
|
|
12
|
+
user: BXRestMapImRecent.mapUser(i.user),
|
|
13
|
+
chat: BXRestMapImRecent.mapChat(i.chat),
|
|
32
14
|
}
|
|
33
15
|
}))
|
|
34
16
|
: undefined;
|
|
@@ -63,6 +45,31 @@ export class BXRestMapImRecent {
|
|
|
63
45
|
static isIBXRestImDialogRecentGetChatChatDataHttp(item) {
|
|
64
46
|
return 'id' in item;
|
|
65
47
|
}
|
|
48
|
+
static mapUser(user) {
|
|
49
|
+
if (!user || !user.id) {
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
...user,
|
|
54
|
+
id: toNum(user.id),
|
|
55
|
+
last_activity_date: user.last_activity_date ? toDate(user.last_activity_date) : false,
|
|
56
|
+
mobile_last_date: user.mobile_last_date ? toDate(user.mobile_last_date) : false,
|
|
57
|
+
absent: user.absent ? toDate(user.absent) : false,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
static mapChat(chat) {
|
|
61
|
+
if (!chat) {
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
if (BXRestMapImRecent.isIBXRestImDialogRecentGetChatChatDataHttp(chat)) {
|
|
65
|
+
return {
|
|
66
|
+
...chat,
|
|
67
|
+
id: toNum(chat.id),
|
|
68
|
+
date_create: toDate(chat.date_create)
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
return chat;
|
|
72
|
+
}
|
|
66
73
|
}
|
|
67
74
|
__decorate([
|
|
68
75
|
CatchError({ rethrow: true })
|
|
@@ -70,4 +77,4 @@ __decorate([
|
|
|
70
77
|
__decorate([
|
|
71
78
|
CatchError({ rethrow: true })
|
|
72
79
|
], BXRestMapImRecent, "list", null);
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYngtcmVzdC9zcmMvbWFwL2ltL3JlY2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBSUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUtuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFFekQsTUFBTSxPQUFPLGlCQUFpQjtJQUdyQixBQUFQLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBaUQ7UUFFeEQsT0FBTyxLQUFLO1lBQ1YsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNoQixHQUFHLENBQUM7Z0JBQ0osR0FBRztvQkFDRCxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7b0JBQ2xDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztvQkFDekIsSUFBSSxFQUFFLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO29CQUN2QyxJQUFJLEVBQUUsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7aUJBQ3hDO2FBQ0YsQ0FBQyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtJQUVqQixDQUFDO0lBR00sQUFBUCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQWdEO1FBQzFELE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDWixDQUFDLENBQUM7Z0JBQ0EsR0FBRyxLQUFLLEVBQUUsR0FBRztvQkFDWCxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUMzQixHQUFHLENBQUMsRUFBRSxHQUFHOzRCQUNQLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxD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RUQsSUFBSSxpQkFBaUIsQ0FBQywwQ0FBMEMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3ZFLE9BQU87Z0JBQ0wsR0FBRyxJQUFJO2dCQUNQLEVBQUUsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDbEIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQ3RDLENBQUE7UUFDSCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0NBQ0Y7QUE5RVE7SUFETixVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7a0NBZTdCO0FBR007SUFETixVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7bUNBMkI3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgaUJYUmVzdEltRGlhbG9nUmVjZW50R2V0LCBpQlhSZXN0SW1EaWFsb2dSZWNlbnRHZXRDaGF0Q2hhdERhdGFIdHRwLCBpQlhSZXN0SW1EaWFsb2dSZWNlbnRHZXRDaGF0VXNlckRhdGFCYXNlLFxyXG4gIGlCWFJlc3RJbURpYWxvZ1JlY2VudEdldEh0dHAsXHJcbn0gZnJvbSAnLi4vLi4vdHlwaWZpY2F0aW9uL3Jlc3QvaW0vZGlhbG9nL3JlY2VudC9nZXQnXHJcbmltcG9ydCB7IHRvRGF0ZSwgdG9OdW0gfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9iYXNlJ1xyXG5pbXBvcnQge1xyXG4gIGlCWFJlc3RJbURpYWxvZ1JlY2VudExpc3QsXHJcbiAgaUJYUmVzdEltRGlhbG9nUmVjZW50TGlzdEh0dHBcclxufSBmcm9tICcuLi8uLi90eXBpZmljYXRpb24vcmVzdC9pbS9kaWFsb2cvcmVjZW50L2xpc3QnXHJcbmltcG9ydCB7IENhdGNoRXJyb3IgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMvZXJyb3JIYW5kbGVyJ1xyXG5cclxuZXhwb3J0IGNsYXNzIEJYUmVzdE1hcEltUmVjZW50IHtcblxuICBAQ2F0Y2hFcnJvcih7IHJldGhyb3c6IHRydWUgfSlcbiAgc3RhdGljIGdldCh2YWx1ZTogaUJYUmVzdEltRGlhbG9nUmVjZW50R2V0SHR0cFtdIHwgdW5kZWZpbmVkKTogaUJYUmVzdEltRGlhbG9nUmVjZW50R2V0W10gfCB1bmRlZmluZWQge1xuXG4gICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgPyB2YWx1ZS5tYXAoaSA9PiAoe1xuICAgICAgICAgIC4uLmksXG4gICAgICAgICAgLi4ue1xuICAgICAgICAgICAgZGF0ZV91cGRhdGU6IHRvRGF0ZShpLmRhdGVfdXBkYXRlKSxcbiAgICAgICAgICAgIGNvdW50ZXI6IHRvTnVtKGkuY291bnRlciksXG4gICAgICAgICAgICB1c2VyOiBCWFJlc3RNYXBJbVJlY2VudC5tYXBVc2VyKGkudXNlciksXG4gICAgICAgICAgICBjaGF0OiBCWFJlc3RNYXBJbVJlY2VudC5tYXBDaGF0KGkuY2hhdCksXG4gICAgICAgICAgfVxuICAgICAgICB9KSlcbiAgICAgICAgOiB1bmRlZmluZWRcblxuICB9XG5cclxuICBAQ2F0Y2hFcnJvcih7IHJldGhyb3c6IHRydWUgfSlcclxuICBzdGF0aWMgbGlzdCh2YWx1ZTogaUJYUmVzdEltRGlhbG9nUmVjZW50TGlzdEh0dHAgfCB1bmRlZmluZWQpOiBpQlhSZXN0SW1EaWFsb2dSZWNlbnRMaXN0IHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiAodmFsdWUpXHJcbiAgICAgID8ge1xyXG4gICAgICAgIC4uLnZhbHVlLCAuLi57XHJcbiAgICAgICAgICBpdGVtczogdmFsdWUuaXRlbXMubWFwKGkgPT4gKHtcclxuICAgICAgICAgICAgLi4uaSwgLi4ue1xyXG4gICAgICAgICAgICAgIGlkOiB0b051bShpLmlkKSxcclxuICAgICAgICAgICAgICBkYXRlX3VwZGF0ZTogdG9EYXRlKGkuZGF0ZV91cGRhdGUpLFxyXG4gICAgICAgICAgICAgIGxpbmVzOiAoaS5saW5lcykgPyB7Li4uaS5saW5lcywgLi4ue2RhdGVfY3JlYXRlOiB0b0RhdGUoaS5saW5lcy5kYXRlX2NyZWF0ZSl9fSA6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICBtZXNzYWdlOiB7Li4uaS5tZXNzYWdlLCAuLi57ZGF0ZTogdG9EYXRlKGkubWVzc2FnZS5kYXRlKX19LFxyXG4gICAgICAgICAgICAgIGNoYXQ6IChpLmNoYXQpID8gey4uLmkuY2hhdCwgLi4ue2RhdGVfY3JlYXRlOiB0b0RhdGUoaS5jaGF0LmRhdGVfY3JlYXRlKX19IDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIHVzZXI6IChpLnVzZXIpXHJcbiAgICAgICAgICAgICAgICA/IHtcclxuICAgICAgICAgICAgICAgICAgLi4uaS51c2VyLFxyXG4gICAgICAgICAgICAgICAgICAuLi57XHJcbiAgICAgICAgICAgICAgICAgICAgYmlydGhkYXk6IChpLnVzZXIuYmlydGhkYXkpID8gdG9EYXRlKGkudXNlci5iaXJ0aGRheSkgOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBsYXN0X2FjdGl2aXR5X2RhdGU6IChpLnVzZXIubGFzdF9hY3Rpdml0eV9kYXRlKSA/IHRvRGF0ZShpLnVzZXIubGFzdF9hY3Rpdml0eV9kYXRlKSA6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgICBtb2JpbGVfbGFzdF9kYXRlOiAoaS51c2VyLm1vYmlsZV9sYXN0X2RhdGUpID8gdG9EYXRlKGkudXNlci5tb2JpbGVfbGFzdF9kYXRlKSA6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSkpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIDogdW5kZWZpbmVkXHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNJQlhSZXN0SW1EaWFsb2dSZWNlbnRHZXRDaGF0Q2hhdERhdGFIdHRwKGl0ZW06IGlCWFJlc3RJbURpYWxvZ1JlY2VudEdldENoYXRDaGF0RGF0YUh0dHAgfCBpQlhSZXN0SW1EaWFsb2dSZWNlbnRHZXRDaGF0VXNlckRhdGFCYXNlKTogaXRlbSBpcyBpQlhSZXN0SW1EaWFsb2dSZWNlbnRHZXRDaGF0Q2hhdERhdGFIdHRwIHtcbiAgICByZXR1cm4gJ2lkJyBpbiBpdGVtXG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBtYXBVc2VyKHVzZXI6IGlCWFJlc3RJbURpYWxvZ1JlY2VudEdldEh0dHBbJ3VzZXInXSk6IGlCWFJlc3RJbURpYWxvZ1JlY2VudEdldFsndXNlciddIHtcbiAgICBpZiAoIXVzZXIgfHwgIXVzZXIuaWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udXNlcixcbiAgICAgIGlkOiB0b051bSh1c2VyLmlkKSxcbiAgICAgIGxhc3RfYWN0aXZpdHlfZGF0ZTogdXNlci5sYXN0X2FjdGl2aXR5X2RhdGUgPyB0b0RhdGUodXNlci5sYXN0X2FjdGl2aXR5X2RhdGUpIDogZmFsc2UsXG4gICAgICBtb2JpbGVfbGFzdF9kYXRlOiB1c2VyLm1vYmlsZV9sYXN0X2RhdGUgPyB0b0RhdGUodXNlci5tb2JpbGVfbGFzdF9kYXRlKSA6IGZhbHNlLFxuICAgICAgYWJzZW50OiB1c2VyLmFic2VudCA/IHRvRGF0ZSh1c2VyLmFic2VudCkgOiBmYWxzZSxcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBtYXBDaGF0KGNoYXQ6IGlCWFJlc3RJbURpYWxvZ1JlY2VudEdldEh0dHBbJ2NoYXQnXSk6IGlCWFJlc3RJbURpYWxvZ1JlY2VudEdldFsnY2hhdCddIHtcbiAgICBpZiAoIWNoYXQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBpZiAoQlhSZXN0TWFwSW1SZWNlbnQuaXNJQlhSZXN0SW1EaWFsb2dSZWNlbnRHZXRDaGF0Q2hhdERhdGFIdHRwKGNoYXQpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5jaGF0LFxuICAgICAgICBpZDogdG9OdW0oY2hhdC5pZCksXG4gICAgICAgIGRhdGVfY3JlYXRlOiB0b0RhdGUoY2hhdC5kYXRlX2NyZWF0ZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY2hhdFxuICB9XG59XG4iXX0=
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { HttpBXServices } from '../../../services/http/HttpBX';
|
|
2
|
-
import { $elapseditem, $getlist, $isactionallowed, $task } from '../../../consts/part-name-methods';
|
|
2
|
+
import { $elapseditem, $getaccess, $getlist, $isactionallowed, $task, $tasks } from '../../../consts/part-name-methods';
|
|
3
3
|
import { map, take } from 'rxjs/operators';
|
|
4
4
|
import { BXRestMapTaskElapsedItem } from '../../../map/task/elapseditem';
|
|
5
|
-
import {
|
|
5
|
+
import { mergeMap, of, throwError } from 'rxjs';
|
|
6
6
|
import { BXRestNavvyUser } from '../../user';
|
|
7
7
|
import { BXRestNavvyTasks } from '../../tasks';
|
|
8
8
|
import { BXRestNavvyDelegateElapsedItem } from '../delegate/elapseditem';
|
|
@@ -57,42 +57,73 @@ export class BXRestNavvyOperationElapsedItem {
|
|
|
57
57
|
}));
|
|
58
58
|
}
|
|
59
59
|
checkPermissionAddElapsedTimeToTaskArr(tasks, userCurrent = undefined) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
[i]: {
|
|
76
|
-
name: this.http.getNameMethod([$task, $elapseditem, $isactionallowed]),
|
|
77
|
-
param: {
|
|
78
|
-
TASKID: i,
|
|
79
|
-
ITEMID: 1,
|
|
80
|
-
ACTIONID: 1
|
|
81
|
-
}
|
|
60
|
+
// Убираем дубли, чтобы не проверять права по одной задаче несколько раз.
|
|
61
|
+
const ids = [...new Set(tasks.filter(i => !!i))];
|
|
62
|
+
// Если текущий пользователь не передан снаружи, запрашиваем его один раз на весь набор задач.
|
|
63
|
+
const user$ = userCurrent ? of(userCurrent) : this.BXRestNavvyUser.current().res();
|
|
64
|
+
// Старый batch через task.elapseditem.isactionallowed.
|
|
65
|
+
// Вызываем его ниже только для задач, по которым getaccess не вернул ELAPSEDTIME.ADD.
|
|
66
|
+
const loadMissingByActionAllowed = (missingIds, resolved) => {
|
|
67
|
+
return this.http.branch(Object.assign({}, ...missingIds.map(i => {
|
|
68
|
+
return {
|
|
69
|
+
[i]: {
|
|
70
|
+
name: this.http.getNameMethod([$task, $elapseditem, $isactionallowed]),
|
|
71
|
+
param: {
|
|
72
|
+
TASKID: i,
|
|
73
|
+
ITEMID: 1,
|
|
74
|
+
ACTIONID: 1
|
|
82
75
|
}
|
|
83
|
-
};
|
|
84
|
-
}))).pipe(map(v => {
|
|
85
|
-
if (v && v.length) {
|
|
86
|
-
const res = this.http.mapBranchResult(v);
|
|
87
|
-
forForeachNotHave = Object.entries(res).map(([key, value]) => {
|
|
88
|
-
return { id: Number(key), value: value };
|
|
89
|
-
});
|
|
90
|
-
return Object.assign(forForeachHave, forForeachNotHave);
|
|
91
76
|
}
|
|
92
|
-
|
|
93
|
-
|
|
77
|
+
};
|
|
78
|
+
}))).pipe(map(v => {
|
|
79
|
+
if (v && v.length) {
|
|
80
|
+
const res = this.http.mapBranchResult(v);
|
|
81
|
+
const loaded = Object.entries(res).map(([key, value]) => {
|
|
82
|
+
return { id: Number(key), value };
|
|
83
|
+
});
|
|
84
|
+
return [...resolved, ...loaded];
|
|
85
|
+
}
|
|
86
|
+
return undefined;
|
|
87
|
+
}));
|
|
88
|
+
};
|
|
89
|
+
if (!ids.length) {
|
|
90
|
+
return of([]);
|
|
91
|
+
}
|
|
92
|
+
return user$.pipe(take(1), mergeMap(self => {
|
|
93
|
+
if (!self) {
|
|
94
|
+
// Страховочная ветка: если user.current не вернулся, getaccess вызвать нельзя.
|
|
95
|
+
return loadMissingByActionAllowed(ids, []);
|
|
94
96
|
}
|
|
95
|
-
|
|
97
|
+
// Основной путь: одним batch-запросом получаем права ELAPSEDTIME.ADD по всем задачам.
|
|
98
|
+
return this.http.branch(Object.assign({}, ...ids.map(id => {
|
|
99
|
+
return {
|
|
100
|
+
[id]: {
|
|
101
|
+
name: this.http.getNameMethod([$tasks, $task, $getaccess]),
|
|
102
|
+
param: {
|
|
103
|
+
id,
|
|
104
|
+
users: [self.ID]
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
}))).pipe(mergeMap(v => {
|
|
109
|
+
if (v && v.length) {
|
|
110
|
+
const res = this.http.mapBranchResult(v);
|
|
111
|
+
const permissions = ids.map(id => ({
|
|
112
|
+
id,
|
|
113
|
+
value: res[id]?.allowedActions?.[self.ID]?.['ELAPSEDTIME.ADD']
|
|
114
|
+
}));
|
|
115
|
+
// getaccess может вернуть true или false - оба значения считаем готовым ответом.
|
|
116
|
+
// В старый isactionallowed отправляем только задачи без явного ELAPSEDTIME.ADD.
|
|
117
|
+
const resolved = permissions.filter(i => i.value !== undefined);
|
|
118
|
+
const missingIds = permissions.filter(i => i.value === undefined).map(i => i.id);
|
|
119
|
+
if (missingIds.length) {
|
|
120
|
+
return loadMissingByActionAllowed(missingIds, resolved);
|
|
121
|
+
}
|
|
122
|
+
return of(permissions);
|
|
123
|
+
}
|
|
124
|
+
// Если batch getaccess не вернулся, сохраняем поведение старого fallback.
|
|
125
|
+
return loadMissingByActionAllowed(ids, []);
|
|
126
|
+
}));
|
|
96
127
|
}));
|
|
97
128
|
}
|
|
98
129
|
/**
|
|
@@ -291,4 +322,4 @@ export class BXRestNavvyOperationElapsedItem {
|
|
|
291
322
|
});
|
|
292
323
|
}
|
|
293
324
|
}
|
|
294
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxhcHNlZGl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ieC1yZXN0L3NyYy9yZXF1ZXN0LW5hdnZ5L3Rhc2svb3BlcmF0aW9uL2VsYXBzZWRpdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUNuRyxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQzFDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBQ3hFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUM1QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDOUMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFJeEUsTUFBTSxPQUFPLCtCQUErQjtJQU8xQyx5RUFBeUU7SUFFekUsWUFBb0Isc0JBQThDO1FBQTlDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFQakQsU0FBSSxHQUFHLElBQUksY0FBYyxFQUFFLENBQUE7UUFDM0IsYUFBUSxHQUFHLElBQUksOEJBQThCLEVBQUUsQ0FBQTtRQUMvQyxvQkFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUE7UUFDdkMscUJBQWdCLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFBO0lBSzFELENBQUM7SUFFRCxhQUFhLENBQUMsUUFBa0IsRUFBRSxTQUFlLEVBQUUsT0FBYTtRQUM5RCxNQUFNLEtBQUssR0FBK0I7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RUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUMsQ0FBQTtZQUMxRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtJQUNILENBQUM7SUFFTyxlQUFlLENBQUMsTUFBYyxFQUFFLE1BQWM7UUFDcEQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUN6QjtZQUNFLE1BQU0sRUFBRSxNQUFNO1lBQ2QsTUFBTSxFQUFFLE1BQU07WUFDZCxRQUFRLEVBQUUsQ0FBQztTQUNaLENBQUMsQ0FBQTtJQUNOLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgaUJYUmVzdFBhcmFtRWxhcHNlZGl0ZW1HZXQsXHJcbiAgaUJYUmVzdFRhc2tFbGFwc2VkSXRlbUh0dHAsXHJcbiAgaUlzQWN0aW9uQWxsb3dlZFBhcmFtLFxyXG4gIGlCWFJlc3RQYXJhbUFkZEVsYXBzZWRpdGVtLFxyXG4gIGlCWFJlc3RQYXJhbVVwZGF0ZUVsYXBzZWRpdGVtLFxyXG4gIGlCWFJlc3RQYXJhbURlbEVsYXBzZWRpdGVtXHJcbn0gZnJvbSAnLi4vLi4vLi4vdHlwaWZpY2F0aW9uL3Jlc3QvdGFzaydcclxuaW1wb3J0IHsgSHR0cEJYU2VydmljZXMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9odHRwL0h0dHBCWCdcclxuaW1wb3J0IHsgJGVsYXBzZWRpdGVtLCAkZ2V0bGlzdCwgJGlzYWN0aW9uYWxsb3dlZCwgJHRhc2sgfSBmcm9tICcuLi8uLi8uLi9jb25zdHMvcGFydC1uYW1lLW1ldGhvZHMnXHJcbmltcG9ydCB7IG1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xyXG5pbXBvcnQgeyBCWFJlc3RNYXBUYXNrRWxhcHNlZEl0ZW0gfSBmcm9tICcuLi8uLi8uLi9tYXAvdGFzay9lbGFwc2VkaXRlbSdcclxuaW1wb3J0IHsgZm9ya0pvaW4sIG1lcmdlTWFwLCBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5VXNlciB9IGZyb20gJy4uLy4uL3VzZXInXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5VGFza3MgfSBmcm9tICcuLi8uLi90YXNrcydcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlEZWxlZ2F0ZUVsYXBzZWRJdGVtIH0gZnJvbSAnLi4vZGVsZWdhdGUvZWxhcHNlZGl0ZW0nXHJcbmltcG9ydCB7IGlCWFJlc3RVc2VyIH0gZnJvbSAnLi4vLi4vLi4vdHlwaWZpY2F0aW9uL3Jlc3QvdXNlcidcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlFbGFwc2VkSXRlbSB9IGZyb20gJy4uL2VsYXBzZWRpdGVtJ1xyXG5cclxuZXhwb3J0IGNsYXNzIEJYUmVzdE5hdnZ5T3BlcmF0aW9uRWxhcHNlZEl0ZW0ge1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGh0dHAgPSBuZXcgSHR0cEJYU2VydmljZXMoKVxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVsZWdhdGUgPSBuZXcgQlhSZXN0TmF2dnlEZWxlZ2F0ZUVsYXBzZWRJdGVtKClcclxuICBwcml2YXRlIHJlYWRvbmx5IEJYUmVzdE5hdnZ5VXNlciA9IG5ldyBCWFJlc3ROYXZ2eVVzZXIoKVxyXG4gIHByaXZhdGUgcmVhZG9ubHkgQlhSZXN0TmF2dnlUYXNrcyA9IG5ldyBCWFJlc3ROYXZ2eVRhc2tzKClcclxuXHJcbiAgLy8gcHJpdmF0ZSByZWFkb25seSBCWFJlc3ROYXZ2eUVsYXBzZWRJdGVtID0gbmV3IEJYUmVzdE5hdnZ5RWxhcHNlZEl0ZW0oKVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIEJYUmVzdE5hdnZ5RWxhcHNlZEl0ZW06IEJYUmVzdE5hdnZ5RWxhcHNlZEl0ZW0pIHtcclxuICB9XHJcblxyXG4gIGdldEJ5SW50ZXJ2YWwoaWRzVXNlcnM6IG51bWJlcltdLCBkYXRlU3RhcnQ6IERhdGUsIGRhdGVFbmQ6IERhdGUpIHtcclxuICAgIGNvbnN0IHBhcmFtOiBpQlhSZXN0UGFyYW1FbGFwc2VkaXRlbUdldCA9IHtcclxuICAgICAgT1JERVI6IHtcclxuICAgICAgICBJRDogJ0RFU0MnXHJcbiAgICAgIH0sXHJcbiAgICAgIEZJTFRFUjoge1xyXG4gICAgICAgIFVTRVJfSUQ6IGlkc1VzZXJzLFxyXG4gICAgICAgICc+PUNSRUFURURfREFURSc6IGRhdGVTdGFydC50b0xvY2FsZVN0cmluZygncnUtUnUnLCB7XHJcbiAgICAgICAgICB0aW1lWm9uZU5hbWU6ICdzaG9ydCdcclxuICAgICAgICB9KSxcclxuICAgICAgICAnPD1DUkVBVEVEX0RBVEUnOiBkYXRlRW5kLnRvTG9jYWxlU3RyaW5nKCdydS1SdScsIHtcclxuICAgICAgICAgIHRpbWVab25lTmFtZTogJ3Nob3J0J1xyXG4gICAgICAgIH0pLFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5nZXRMaXN0KHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLy8gVE9ETzog0KHQtNC10LvQsNGC0Ywg0L3QvtGA0LzQsNC70YzQvdC+XHJcbiAgZ2V0TGlzdEJ5SURUYXNrKGlkczogbnVtYmVyW10pIHtcclxuICAgIC8vINCg0LDQsdC+0YLQsNC10YIg0YLQvtC70YzQutC+INC/0L7RgtC+0LzRgyDRh9GC0L4gXCJuUGFnZVNpemU6IDk5OTk5XCJcclxuICAgIHJldHVybiB0aGlzLmh0dHAuYnJhbmNoPGlCWFJlc3RQYXJhbUVsYXBzZWRpdGVtR2V0LCBpQlhSZXN0VGFza0VsYXBzZWRJdGVtSHR0cD5cclxuICAgIChcclxuICAgICAgaWRzLm1hcChpID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgbmFtZTogdGhpcy5odHRwLmdldE5hbWVNZXRob2QoWyR0YXNrLCAkZWxhcHNlZGl0ZW0sICRnZXRsaXN0XSksXHJcbiAgICAgICAgICBwYXJhbToge1xyXG4gICAgICAgICAgICBUQVNLSUQ6IGksXHJcbiAgICAgICAgICAgIFBBUkFNUzoge1xyXG4gICAgICAgICAgICAgIE5BVl9QQVJBTVM6IHtcclxuICAgICAgICAgICAgICAgIG5QYWdlU2l6ZTogOTk5OTksXHJcbiAgICAgICAgICAgICAgICBpTnVtUGFnZTogMVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICkucGlwZShcclxuICAgICAgbWFwKHYgPT4ge1xyXG4gICAgICAgIGlmICh2ICYmIHYubGVuZ3RoKSB7XHJcbiAgICAgICAgICBjb25zdCByZXMgPSB0aGlzLmh0dHAubWFwQnJhbmNoUmVzdWx0V2l0aG91dEtleSh2KVxyXG4gICAgICAgICAgcmV0dXJuIEJYUmVzdE1hcFRhc2tFbGFwc2VkSXRlbS5nZXRMaXN0KHJlcylcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgY2hlY2tQZXJtaXNzaW9uQWRkRWxhcHNlZFRpbWVUb1Rhc2tBcnIodGFza3M6IG51bWJlcltdLCB1c2VyQ3VycmVudDogaUJYUmVzdFVzZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQpIHtcclxuICAgIGxldCByZXF1ZXN0OiBSZWNvcmQ8bnVtYmVyLCBPYnNlcnZhYmxlPGJvb2xlYW4+PiA9IE9iamVjdC5hc3NpZ24oe30sIC4uLnRhc2tzLm1hcChpID0+IHtcclxuICAgICAgcmV0dXJuIHtbaV06IHRoaXMuY2hlY2tQZXJtaXNzaW9uQWRkRWxhcHNlZFRpbWVUb1Rhc2soaSwgdXNlckN1cnJlbnQpfVxyXG4gICAgfSkpXHJcbiAgICByZXR1cm4gZm9ya0pvaW4ocmVxdWVzdClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZSgxKSxcclxuICAgICAgICBtZXJnZU1hcCh2ID0+IHtcclxuICAgICAgICAgIGxldCBmb3JGb3JlYWNoID0gT2JqZWN0LmVudHJpZXModikubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHtpZDogTnVtYmVyKGtleSksIHZhbHVlOiB2YWx1ZX1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBpZiAoZm9yRm9yZWFjaC5maW5kKGkgPT4gaS52YWx1ZSA9PT0gdW5kZWZpbmVkKSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGxldCBmb3JGb3JlYWNoSGF2ZSA9IGZvckZvcmVhY2guZmlsdGVyKGkgPT4gaS52YWx1ZSAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICBsZXQgZm9yRm9yZWFjaE5vdEhhdmUgPSBmb3JGb3JlYWNoLmZpbHRlcihpID0+IGkudmFsdWUgPT09IHVuZGVmaW5lZCkgLy8g0YLRg9GCINC/0L7Qu9GD0YfQsNC10Lwg0LLRgdC1IGlkINC90LUg0YHQvtGF0YDQsNC90LXQvdC90YvRhSDRgyDQvdCw0YEg0L/RgNCw0LJcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5icmFuY2g8aUlzQWN0aW9uQWxsb3dlZFBhcmFtLCBib29sZWFuPihcclxuICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHt9LCAuLi5mb3JGb3JlYWNoTm90SGF2ZVxyXG4gICAgICAgICAgICAgICAgLm1hcChpID0+IGkuaWQpXHJcbiAgICAgICAgICAgICAgICAubWFwKGkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIFtpXToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgbmFtZTogdGhpcy5odHRwLmdldE5hbWVNZXRob2QoWyR0YXNrLCAkZWxhcHNlZGl0ZW0sICRpc2FjdGlvbmFsbG93ZWRdKSxcclxuICAgICAgICAgICAgICAgICAgICAgIHBhcmFtOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFRBU0tJRDogaSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgSVRFTUlEOiAxLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBBQ1RJT05JRDogMVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgICAgICkucGlwZShcclxuICAgICAgICAgICAgICBtYXAodiA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodiAmJiB2Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCByZXM6IFJlY29yZDxudW1iZXIsIGJvb2xlYW4+ID0gdGhpcy5odHRwLm1hcEJyYW5jaFJlc3VsdCh2KVxyXG4gICAgICAgICAgICAgICAgICBmb3JGb3JlYWNoTm90SGF2ZSA9IE9iamVjdC5lbnRyaWVzKHJlcykubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge2lkOiBOdW1iZXIoa2V5KSwgdmFsdWU6IHZhbHVlfVxyXG4gICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihmb3JGb3JlYWNoSGF2ZSwgZm9yRm9yZWFjaE5vdEhhdmUpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIG9mKGZvckZvcmVhY2gpXHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog0J/RgNC+0LLQtdGA0LrQsCDQvdCwINCy0L7Qt9C80L7QttC90L7RgdGC0Ywg0LTQvtCx0LDQstC70LXQvdC40LUg0LfQsNC/0LjRgdC4INGC0YDQtdC60LAg0LIg0YLQsNGB0LrRg1xyXG4gICAqXHJcbiAgICogQHBhcmFtIGlkVGFza1xyXG4gICAqIEBwYXJhbSB1c2VyQ3VycmVudFxyXG4gICAqL1xyXG4gIGNoZWNrUGVybWlzc2lvbkFkZEVsYXBzZWRUaW1lVG9UYXNrKGlkVGFzazogbnVtYmVyLCB1c2VyQ3VycmVudDogaUJYUmVzdFVzZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQpIHtcclxuICAgIC8vIGxldCBwZXJtaXNzaW9uID0gUGVybWlzc2lvbi5nZXQoKVxyXG4gICAgLy8gaWYgKHBlcm1pc3Npb24/LnRhc2tzPy5sZW5ndGgpIHtcclxuICAgIC8vICAgbGV0IGZpbmRUYXNrID0gcGVybWlzc2lvbi50YXNrcy5maW5kKGkgPT4gaS5pZCA9PT0gaWRUYXNrKVxyXG4gICAgLy8gICBpZiAoZmluZFRhc2s/LnBlcm1pc3Npb24pIHtcclxuICAgIC8vICAgICByZXR1cm4gb2YoZmluZFRhc2sucGVybWlzc2lvblsnRUxBUFNFRFRJTUUuQUREJ10pXHJcbiAgICAvLyAgIH1cclxuICAgIHJldHVybiAoKHVzZXJDdXJyZW50KSA/IG9mKHVzZXJDdXJyZW50KSA6IHRoaXMuQlhSZXN0TmF2dnlVc2VyLmN1cnJlbnQoKS5yZXMoKSkucGlwZShcclxuICAgICAgbWVyZ2VNYXAoc2VsZiA9PiB7XHJcbiAgICAgICAgaWYgKHNlbGYpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLkJYUmVzdE5hdnZ5VGFza3MudGFzay5nZXRBY2Nlc3MoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBpZDogaWRUYXNrLFxyXG4gICAgICAgICAgICAgIHVzZXJzOiBbc2VsZi5JRF1cclxuICAgICAgICAgICAgfSkucmVzKCkucGlwZShcclxuICAgICAgICAgICAgLy8gdGFwKHYgPT4ge1xyXG4gICAgICAgICAgICAvLyAgIGlmICh2ICYmIHZbc2VsZi5JRF0pIHtcclxuICAgICAgICAgICAgLy8gICAgIFBlcm1pc3Npb24uc2V0KHtcclxuICAgICAgICAgICAgLy8gICAgICAgdGFza3M6IFt7aWQ6IGlkVGFzaywgcGVybWlzc2lvbjogdltzZWxmLklEXSwgZWxhcHNlZEl0ZW06IFtdfV1cclxuICAgICAgICAgICAgLy8gICAgIH0pXHJcbiAgICAgICAgICAgIC8vICAgfVxyXG4gICAgICAgICAgICAvLyB9KSxcclxuICAgICAgICAgICAgbWFwKHYgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiAodiAmJiB2W3NlbGYuSURdKSA/IHZbc2VsZi5JRF1bJ0VMQVBTRURUSU1FLkFERCddIDogZmFsc2VcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpXHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgICAvLyB9XHJcblxyXG4gICAgLy8gcmV0dXJuIG9mKHVuZGVmaW5lZClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqINCf0YDQvtCy0LXRgNC60LAg0L3QsCDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINC/0YDQvtGH0YLQtdC90LjRjyDRgtCw0LrRgdC60LhcclxuICAgKlxyXG4gICAqIEBwYXJhbSBpZFRhc2tcclxuICAgKiBAcGFyYW0gdXNlckN1cnJlbnRcclxuICAgKi9cclxuICBjaGVja1Blcm1pc3Npb25SZWFkVGFzayhpZFRhc2s6IG51bWJlciwgdXNlckN1cnJlbnQ6IGlCWFJlc3RVc2VyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkKSB7XHJcbiAgICAvLyBsZXQgcGVybWlzc2lvbiA9IFBlcm1pc3Npb24uZ2V0KClcclxuICAgIC8vIGlmIChwZXJtaXNzaW9uPy50YXNrcz8ubGVuZ3RoKSB7XHJcbiAgICAvLyAgIGxldCBmaW5kVGFzayA9IHBlcm1pc3Npb24udGFza3MuZmluZChpID0+IGkuaWQgPT09IGlkVGFzaylcclxuICAgIC8vICAgaWYgKGZpbmRUYXNrPy5wZXJtaXNzaW9uKSB7XHJcbiAgICAvLyAgICAgcmV0dXJuIG9mKGZpbmRUYXNrLnBlcm1pc3Npb24uQUNDRVBUKVxyXG4gICAgLy8gICB9XHJcbiAgICAvLyAgIGNvbnNvbGUubG9nKCdpZFRhc2snLCBpZFRhc2spXHJcbiAgICByZXR1cm4gKCh1c2VyQ3VycmVudCkgPyBvZih1c2VyQ3VycmVudCkgOiB0aGlzLkJYUmVzdE5hdnZ5VXNlci5jdXJyZW50KCkucmVzKCkpLnBpcGUoXHJcbiAgICAgIG1lcmdlTWFwKHNlbGYgPT4ge1xyXG4gICAgICAgIGlmIChzZWxmKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5CWFJlc3ROYXZ2eVRhc2tzLnRhc2suZ2V0QWNjZXNzKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgaWQ6IGlkVGFzayxcclxuICAgICAgICAgICAgICB1c2VyczogW3NlbGYuSURdXHJcbiAgICAgICAgICAgIH0pLnJlcygpLnBpcGUoXHJcbiAgICAgICAgICAgIC8vIHRhcCh2ID0+IHtcclxuICAgICAgICAgICAgLy8gICBpZiAodiAmJiB2W3NlbGYuSURdKSB7XHJcbiAgICAgICAgICAgIC8vICAgICBQZXJtaXNzaW9uLnNldCh7XHJcbiAgICAgICAgICAgIC8vICAgICAgIHRhc2tzOiBbe2lkOiBpZFRhc2ssIHBlcm1pc3Npb246IHZbc2VsZi5JRF0sIGVsYXBzZWRJdGVtOiBbXX1dXHJcbiAgICAgICAgICAgIC8vICAgICB9KVxyXG4gICAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgICAgLy8gfSksXHJcbiAgICAgICAgICAgIG1hcCh2ID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gKHYgJiYgdltzZWxmLklEXSkgPyAhIXZbc2VsZi5JRF0gOiBmYWxzZSAvLyDQvtGC0LTQtdC70YzQvdC+0LPQviDRhNC70LDQs9CwINC90LAg0YfRgtC10L3QuNC1INC90LXRgiwg0LLRi9GF0L7QtNC40YIg0YfRgtC+INC10YHQu9C4INC/0YDQsNCy0LAg0L7RgtC00LDQu9C40YHRjCDRgtC+INC4INC/0YDQsNCy0LAg0LXRgdGC0YxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpXHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgICAvLyB9XHJcbiAgICAvL1xyXG4gICAgLy8gcmV0dXJuIG9mKHVuZGVmaW5lZClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqINCX0LDQutC+0L3Rh9C10L3QvdGL0Lkg0LzQtdGC0L7QtCDQtNC+0LHQsNCy0LvQtdC90LjRjyDQt9Cw0L/QuNGB0Lgg0YEg0L/RgNC10LTQstCw0YDQuNGC0LXQu9GM0L3QvtC5INC/0YDQvtCy0LXRgNC60L7QuSDQv9GA0LDQslxyXG4gICAqXHJcbiAgICogVE9ETzog0LTQvtCx0LDQstC40YLRjCDRgdC+0YXRgNCw0L3QtdC90LjQtSDQv9GA0LXQtNCy0LDRgNC40YLQtdC70YzQvdC+INC/0YDQvtCy0LXRgNC10L3QvdGL0YUg0LfQsNC/0LjRgdC10LlcclxuICAgKiBAcGFyYW0gcGFyYW1cclxuICAgKi9cclxuICBhZGQocGFyYW06IGlCWFJlc3RQYXJhbUFkZEVsYXBzZWRpdGVtKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja1Blcm1pc3Npb25SZWFkVGFzayhwYXJhbS5UQVNLSUQpLnBpcGUoXHJcbiAgICAgIG1lcmdlTWFwKGFsbG93ZWRSZWFkVGFzayA9PiB7XHJcbiAgICAgICAgaWYgKGFsbG93ZWRSZWFkVGFzaykge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tQZXJtaXNzaW9uQWRkRWxhcHNlZFRpbWVUb1Rhc2socGFyYW0uVEFTS0lEKS5waXBlKFxyXG4gICAgICAgICAgICBtZXJnZU1hcChhbGxvd2VkID0+IHtcclxuICAgICAgICAgICAgICBpZiAoYWxsb3dlZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuQlhSZXN0TmF2dnlFbGFwc2VkSXRlbS5hZGQocGFyYW0pLnJlcygpXHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcign0J7RgtGB0YPRgtGB0YLQstGD0Y7RgiDQv9GA0LDQstCwINC00L7QsdCw0LLQu9C10L3QuNC1INC30LDQv9C40YHQuCDQt9Cw0YLRgNCw0YfQtdC90L3QvtCz0L4g0LLRgNC10LzQtdC90LgnKSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ9Ce0YLRgdGD0YLRgdGC0LLRg9GO0YIg0L/RgNCw0LLQsCDQvdCwINGH0YLQtdC90LjQtSDQt9Cw0LTQsNGH0LgnKSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog0JfQsNC60L7QvdGH0LXQvdC90YvQuSDQvNC10YLQvtC0INC+0LHQvdC+0LLQu9C10L3QuNGPINC30LDQv9C40YHQuCDRgSDQv9GA0LXQtNCy0LDRgNC40YLQtdC70YzQvdC+0Lkg0L/RgNC+0LLQtdGA0LrQvtC5INC/0YDQsNCyXHJcbiAgICpcclxuICAgKiBUT0RPOiDQtNC+0LHQsNCy0LjRgtGMINGB0L7RhdGA0LDQvdC10L3QuNC1INC/0YDQtdC00LLQsNGA0LjRgtC10LvRjNC90L4g0L/RgNC+0LLQtdGA0LXQvdC90YvRhSDQt9Cw0L/QuNGB0LXQuVxyXG4gICAqIEBwYXJhbSBwYXJhbVxyXG4gICAqL1xyXG4gIHVwZGF0ZShwYXJhbTogaUJYUmVzdFBhcmFtVXBkYXRlRWxhcHNlZGl0ZW0pIHtcclxuICAgIHJldHVybiB0aGlzLmNoZWNrUGVybWlzc2lvblJlYWRUYXNrKHBhcmFtLlRBU0tJRCkucGlwZShcclxuICAgICAgbWVyZ2VNYXAoKGFsbG93ZWRSZWFkVGFzaykgPT4ge1xyXG4gICAgICAgIGlmIChhbGxvd2VkUmVhZFRhc2spIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmlzQWxsb3dlZE1vZGlmeShwYXJhbS5UQVNLSUQsIHBhcmFtLklURU1JRCkucGlwZShcclxuICAgICAgICAgICAgbWVyZ2VNYXAoYWxsb3dlZCA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGFsbG93ZWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLkJYUmVzdE5hdnZ5RWxhcHNlZEl0ZW0udXBkYXRlKHBhcmFtKS5yZXMoKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ9Ce0YLRgdGD0YLRgdGC0LLRg9GO0YIg0L/RgNCw0LLQsCDQvdCwINC40LfQvNC10L3QtdC90LjQtSDQt9Cw0L/QuNGB0Lgg0LfQsNGC0YDQsNGH0LXQvdC90L7Qs9C+INCy0YDQtdC80LXQvdC4JykpXHJcbiAgICAgICAgICAgIH0pKVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ9Ce0YLRgdGD0YLRgdGC0LLRg9GO0YIg0L/RgNCw0LLQsCDQvdCwINGH0YLQtdC90LjQtSDQt9Cw0LTQsNGH0LgnKSlcclxuICAgICAgfSkpXHJcbiAgfVxyXG5cclxuICAvLyBUT0RPOiDRgNCw0LfQvtCx0YDQsNGC0YzRgdGPINGH0YLQviDRjdGC0L4g0LfQsCDQtdCx0LDRgtC90Y8g0LIg0LrQvtC80LzQtdC90YLQsNGFINC4INCy0L/QuNGB0LDRgtGMINC90L7RgNC80LDQu9GM0L3QvtC5INC60L7QvNC10L3RgiDQtdGB0LvQuCDQvtC90LAg0L3Rg9C20L3QsFxyXG4gIGlzQWxsb3dlZE1vZGlmeShpZFRhc2s6IG51bWJlciwgaWRJdGVtOiBudW1iZXIpIHtcclxuICAgIC8vIGxldCBwZXJtaXNzaW9uID0gUGVybWlzc2lvbi5nZXQoKVxyXG4gICAgLy8gaWYgKHBlcm1pc3Npb24/LnRhc2tzPy5sZW5ndGgpIHtcclxuICAgIC8vICAgbGV0IGZpbmRUYXNrID0gcGVybWlzc2lvbi50YXNrcy5maW5kKGkgPT4gaS5pZCA9PT0gaWRUYXNrKVxyXG4gICAgLy8gICBpZiAoZmluZFRhc2spIHtcclxuICAgIC8vICAgICBsZXQgZmluZCA9IGZpbmRUYXNrLmVsYXBzZWRJdGVtLmZpbmQoaSA9PiBpLmlkID09PSBpZEl0ZW0pXHJcbiAgICAvLyAgICAgaWYgKGZpbmQgJiYgZmluZC52ZXJpZmllZC5lZGl0KSB7XHJcbiAgICAvLyAgICAgICByZXR1cm4gb2YoZmluZC5lZGl0KVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgfVxyXG4gICAgLy8gfVxyXG5cclxuICAgIHJldHVybiB0aGlzLkJYUmVzdE5hdnZ5RWxhcHNlZEl0ZW0uaXNBY3Rpb25BbGxvd2VkKHtcclxuICAgICAgVEFTS0lEOiBpZFRhc2ssXHJcbiAgICAgIElURU1JRDogaWRJdGVtLFxyXG4gICAgICBBQ1RJT05JRDogMlxyXG4gICAgfSkucmVzKClcclxuICAgIC8vICAgLnBpcGUoXHJcbiAgICAvLyAgIHRhcCh2ID0+IHtcclxuICAgIC8vICAgICBpZiAodiAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAvLyAgICAgICBQZXJtaXNzaW9uLnNldFRhc2tFbGFwc2VkSXRlbShpZFRhc2ssXHJcbiAgICAvLyAgICAgICAgIHtcclxuICAgIC8vICAgICAgICAgICBpZDogaWRJdGVtLFxyXG4gICAgLy8gICAgICAgICAgIGVkaXQ6IHYsXHJcbiAgICAvLyAgICAgICAgICAgZGVsOiBmYWxzZSxcclxuICAgIC8vICAgICAgICAgICB2ZXJpZmllZDoge1xyXG4gICAgLy8gICAgICAgICAgICAgZWRpdDogdHJ1ZSxcclxuICAgIC8vICAgICAgICAgICAgIGRlbDogZmFsc2UsXHJcbiAgICAvLyAgICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICB9KVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgfSlcclxuICAgIC8vIClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGlzQWN0aW9uQWxsb3dlZCDRgSDRhNC40LrRgdC+0Lwg0L3QsCDQv9GA0L7QstC10YDQutGDINCy0L7Qt9C80L7QttC90L7RgdGC0Lgg0YfRgtC10L3QuNGPINC30LDQtNCw0YfQuCDQt9Cw0L/QuNGB0LhcclxuICAgKiAo0LHQtdC3INC/0YDQvtCy0LXRgNC60Lgg0LTQsNGR0YIg0L7RiNC40LHQutGDKVxyXG4gICAqXHJcbiAgICogaWRBY3Rpb246XHJcbiAgICogMSAtIEFDVElPTl9FTEFQU0VEX1RJTUVfQUREXHJcbiAgICogMiAtIEFDVElPTl9FTEFQU0VEX1RJTUVfTU9ESUZZXHJcbiAgICogMyAtIEFDVElPTl9FTEFQU0VEX1RJTUVfUkVNT1ZFXHJcbiAgICogQHBhcmFtIHBhcmFtXHJcbiAgICovXHJcbiAgaXNBY3Rpb25BbGxvd2VkKHBhcmFtOiBpSXNBY3Rpb25BbGxvd2VkUGFyYW0pIHtcclxuICAgIHJldHVybiB0aGlzLmNoZWNrUGVybWlzc2lvblJlYWRUYXNrKHBhcmFtLlRBU0tJRCkucGlwZShcclxuICAgICAgbWVyZ2VNYXAoY2FuUmVhZCA9PiB7XHJcbiAgICAgICAgaWYgKGNhblJlYWQpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLkJYUmVzdE5hdnZ5RWxhcHNlZEl0ZW0uaXNBY3Rpb25BbGxvd2VkKHBhcmFtKS5yZXMoKVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ9Ce0YLRgdGD0YLRgdGC0LLRg9GO0YIg0L/RgNCw0LLQsCDQvdCwINGH0YLQtdC90LjQtSDQt9Cw0LTQsNGH0LgnKSlcclxuICAgICAgfSlcclxuICAgIClcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiDQn9C+0LvQvdC+0YbQtdC90L3Ri9C5INC80LXRgtC+0LQg0YPQtNCw0LvQtdC90LjRj1xyXG4gICAqXHJcbiAgICogQHBhcmFtIHBhcmFtXHJcbiAgICovXHJcbiAgZGVsKHBhcmFtOiBpQlhSZXN0UGFyYW1EZWxFbGFwc2VkaXRlbSkge1xyXG4gICAgcmV0dXJuIHRoaXMuY2hlY2tQZXJtaXNzaW9uUmVhZFRhc2socGFyYW0uVEFTS0lEKS5waXBlKFxyXG4gICAgICBtZXJnZU1hcChhbGxvd2VkUmVhZFRhc2sgPT4ge1xyXG4gICAgICAgIGlmIChhbGxvd2VkUmVhZFRhc2spIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmlzQWxsb3dlZFJlbW92ZShwYXJhbS5UQVNLSUQsIHBhcmFtLklURU1JRCkucGlwZShcclxuICAgICAgICAgICAgbWVyZ2VNYXAoYWxsb3dlZCA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGFsbG93ZWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLkJYUmVzdE5hdnZ5RWxhcHNlZEl0ZW0uZGVsZXRlKHBhcmFtKS5yZXMoKVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ9Ce0YLRgdGD0YLRgdGC0LLRg9GO0YIg0L/RgNCw0LLQsCDQvdCwINGD0LTQsNC70LXQvdC40LUg0LfQsNC/0LjRgdC4INC30LDRgtGA0LDRh9C10L3QvdC+0LPQviDQstGA0LXQvNC10L3QuCcpKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcign0J7RgtGB0YPRgtGB0YLQstGD0Y7RgiDQv9GA0LDQstCwINC90LAg0YfRgtC10L3QuNC1INC30LDQtNCw0YfQuCcpKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNBbGxvd2VkUmVtb3ZlKGlkVGFzazogbnVtYmVyLCBpZEl0ZW06IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNBY3Rpb25BbGxvd2VkKFxyXG4gICAgICB7XHJcbiAgICAgICAgVEFTS0lEOiBpZFRhc2ssXHJcbiAgICAgICAgSVRFTUlEOiBpZEl0ZW0sXHJcbiAgICAgICAgQUNUSU9OSUQ6IDNcclxuICAgICAgfSlcclxuICB9XHJcbn1cclxuIl19
|
|
325
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxhcHNlZGl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ieC1yZXN0L3NyYy9yZXF1ZXN0LW5hdnZ5L3Rhc2svb3BlcmF0aW9uL2VsYXBzZWRpdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQ3ZILE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDMUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFDeEUsT0FBTyxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDNUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzlDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBSXhFLE1BQU0sT0FBTywrQkFBK0I7SUFPMUMseUVBQXlFO0lBRXpFLFlBQW9CLHNCQUE4QztRQUE5QywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBUGpELFNBQUksR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFBO1FBQzNCLGFBQVEsR0FBRyxJQUFJLDhCQUE4QixFQUFFLENBQUE7UUFDL0Msb0JBQWUsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFBO1FBQ3ZDLHFCQUFnQixHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQTtJQUsxRCxDQUFDO0lBRUQsYUFBYSxDQUFDLFFBQWtCLEVBQUUsU0FBZSxFQUFFLE9BQWE7UUFDOUQsTUFBTSxL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LENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDLENBQUE7WUFDMUUsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUNILENBQUE7SUFDSCxDQUFDO0lBRU8sZUFBZSxDQUFDLE1BQWMsRUFBRSxNQUFjO1FBQ3BELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FDekI7WUFDRSxNQUFNLEVBQUUsTUFBTTtZQUNkLE1BQU0sRUFBRSxNQUFNO1lBQ2QsUUFBUSxFQUFFLENBQUM7U0FDWixDQUFDLENBQUE7SUFDTixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIGlCWFJlc3RQYXJhbUVsYXBzZWRpdGVtR2V0LFxyXG4gIGlCWFJlc3RUYXNrRWxhcHNlZEl0ZW1IdHRwLFxyXG4gIGlCWFJlc3RQYXJhbVRhc2tHZXRBY2Nlc3MsXHJcbiAgaUJYUmVzdFRhc2tHZXRBY2Nlc3MsXHJcbiAgaUlzQWN0aW9uQWxsb3dlZFBhcmFtLFxyXG4gIGlCWFJlc3RQYXJhbUFkZEVsYXBzZWRpdGVtLFxyXG4gIGlCWFJlc3RQYXJhbVVwZGF0ZUVsYXBzZWRpdGVtLFxyXG4gIGlCWFJlc3RQYXJhbURlbEVsYXBzZWRpdGVtXHJcbn0gZnJvbSAnLi4vLi4vLi4vdHlwaWZpY2F0aW9uL3Jlc3QvdGFzaydcclxuaW1wb3J0IHsgSHR0cEJYU2VydmljZXMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9odHRwL0h0dHBCWCdcclxuaW1wb3J0IHsgJGVsYXBzZWRpdGVtLCAkZ2V0YWNjZXNzLCAkZ2V0bGlzdCwgJGlzYWN0aW9uYWxsb3dlZCwgJHRhc2ssICR0YXNrcyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0cy9wYXJ0LW5hbWUtbWV0aG9kcydcclxuaW1wb3J0IHsgbWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXHJcbmltcG9ydCB7IEJYUmVzdE1hcFRhc2tFbGFwc2VkSXRlbSB9IGZyb20gJy4uLy4uLy4uL21hcC90YXNrL2VsYXBzZWRpdGVtJ1xyXG5pbXBvcnQgeyBtZXJnZU1hcCwgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVVzZXIgfSBmcm9tICcuLi8uLi91c2VyJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eVRhc2tzIH0gZnJvbSAnLi4vLi4vdGFza3MnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5RGVsZWdhdGVFbGFwc2VkSXRlbSB9IGZyb20gJy4uL2RlbGVnYXRlL2VsYXBzZWRpdGVtJ1xyXG5pbXBvcnQgeyBpQlhSZXN0VXNlciB9IGZyb20gJy4uLy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L3VzZXInXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5RWxhcHNlZEl0ZW0gfSBmcm9tICcuLi9lbGFwc2VkaXRlbSdcclxuXHJcbmV4cG9ydCBjbGFzcyBCWFJlc3ROYXZ2eU9wZXJhdGlvbkVsYXBzZWRJdGVtIHtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gbmV3IEh0dHBCWFNlcnZpY2VzKClcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlbGVnYXRlID0gbmV3IEJYUmVzdE5hdnZ5RGVsZWdhdGVFbGFwc2VkSXRlbSgpXHJcbiAgcHJpdmF0ZSByZWFkb25seSBCWFJlc3ROYXZ2eVVzZXIgPSBuZXcgQlhSZXN0TmF2dnlVc2VyKClcclxuICBwcml2YXRlIHJlYWRvbmx5IEJYUmVzdE5hdnZ5VGFza3MgPSBuZXcgQlhSZXN0TmF2dnlUYXNrcygpXHJcblxyXG4gIC8vIHByaXZhdGUgcmVhZG9ubHkgQlhSZXN0TmF2dnlFbGFwc2VkSXRlbSA9IG5ldyBCWFJlc3ROYXZ2eUVsYXBzZWRJdGVtKClcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBCWFJlc3ROYXZ2eUVsYXBzZWRJdGVtOiBCWFJlc3ROYXZ2eUVsYXBzZWRJdGVtKSB7XHJcbiAgfVxyXG5cclxuICBnZXRCeUludGVydmFsKGlkc1VzZXJzOiBudW1iZXJbXSwgZGF0ZVN0YXJ0OiBEYXRlLCBkYXRlRW5kOiBEYXRlKSB7XHJcbiAgICBjb25zdCBwYXJhbTogaUJYUmVzdFBhcmFtRWxhcHNlZGl0ZW1HZXQgPSB7XHJcbiAgICAgIE9SREVSOiB7XHJcbiAgICAgICAgSUQ6ICdERVNDJ1xyXG4gICAgICB9LFxyXG4gICAgICBGSUxURVI6IHtcclxuICAgICAgICBVU0VSX0lEOiBpZHNVc2VycyxcclxuICAgICAgICAnPj1DUkVBVEVEX0RBVEUnOiBkYXRlU3RhcnQudG9Mb2NhbGVTdHJpbmcoJ3J1LVJ1Jywge1xyXG4gICAgICAgICAgdGltZVpvbmVOYW1lOiAnc2hvcnQnXHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgJzw9Q1JFQVRFRF9EQVRFJzogZGF0ZUVuZC50b0xvY2FsZVN0cmluZygncnUtUnUnLCB7XHJcbiAgICAgICAgICB0aW1lWm9uZU5hbWU6ICdzaG9ydCdcclxuICAgICAgICB9KSxcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUuZ2V0TGlzdChwYXJhbSlcclxuICB9XHJcblxyXG4gIC8vIFRPRE86INCh0LTQtdC70LDRgtGMINC90L7RgNC80LDQu9GM0L3QvlxyXG4gIGdldExpc3RCeUlEVGFzayhpZHM6IG51bWJlcltdKSB7XHJcbiAgICAvLyDQoNCw0LHQvtGC0LDQtdGCINGC0L7Qu9GM0LrQviDQv9C+0YLQvtC80YMg0YfRgtC+IFwiblBhZ2VTaXplOiA5OTk5OVwiXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmJyYW5jaDxpQlhSZXN0UGFyYW1FbGFwc2VkaXRlbUdldCwgaUJYUmVzdFRhc2tFbGFwc2VkSXRlbUh0dHA+XHJcbiAgICAoXHJcbiAgICAgIGlkcy5tYXAoaSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIG5hbWU6IHRoaXMuaHR0cC5nZXROYW1lTWV0aG9kKFskdGFzaywgJGVsYXBzZWRpdGVtLCAkZ2V0bGlzdF0pLFxyXG4gICAgICAgICAgcGFyYW06IHtcclxuICAgICAgICAgICAgVEFTS0lEOiBpLFxyXG4gICAgICAgICAgICBQQVJBTVM6IHtcclxuICAgICAgICAgICAgICBOQVZfUEFSQU1TOiB7XHJcbiAgICAgICAgICAgICAgICBuUGFnZVNpemU6IDk5OTk5LFxyXG4gICAgICAgICAgICAgICAgaU51bVBhZ2U6IDFcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApLnBpcGUoXHJcbiAgICAgIG1hcCh2ID0+IHtcclxuICAgICAgICBpZiAodiAmJiB2Lmxlbmd0aCkge1xyXG4gICAgICAgICAgY29uc3QgcmVzID0gdGhpcy5odHRwLm1hcEJyYW5jaFJlc3VsdFdpdGhvdXRLZXkodilcclxuICAgICAgICAgIHJldHVybiBCWFJlc3RNYXBUYXNrRWxhcHNlZEl0ZW0uZ2V0TGlzdChyZXMpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWRcclxuICAgICAgfSlcclxuICAgIClcclxuICB9XHJcblxyXG4gIGNoZWNrUGVybWlzc2lvbkFkZEVsYXBzZWRUaW1lVG9UYXNrQXJyKHRhc2tzOiBudW1iZXJbXSwgdXNlckN1cnJlbnQ6IGlCWFJlc3RVc2VyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkKSB7XG4gICAgLy8g0KPQsdC40YDQsNC10Lwg0LTRg9Cx0LvQuCwg0YfRgtC+0LHRiyDQvdC1INC/0YDQvtCy0LXRgNGP0YLRjCDQv9GA0LDQstCwINC/0L4g0L7QtNC90L7QuSDQt9Cw0LTQsNGH0LUg0L3QtdGB0LrQvtC70YzQutC+INGA0LDQty5cbiAgICBjb25zdCBpZHMgPSBbLi4ubmV3IFNldCh0YXNrcy5maWx0ZXIoaSA9PiAhIWkpKV1cbiAgICAvLyDQldGB0LvQuCDRgtC10LrRg9GJ0LjQuSDQv9C+0LvRjNC30L7QstCw0YLQtdC70Ywg0L3QtSDQv9C10YDQtdC00LDQvSDRgdC90LDRgNGD0LbQuCwg0LfQsNC/0YDQsNGI0LjQstCw0LXQvCDQtdCz0L4g0L7QtNC40L0g0YDQsNC3INC90LAg0LLQtdGB0Ywg0L3QsNCx0L7RgCDQt9Cw0LTQsNGHLlxuICAgIGNvbnN0IHVzZXIkID0gdXNlckN1cnJlbnQgPyBvZih1c2VyQ3VycmVudCkgOiB0aGlzLkJYUmVzdE5hdnZ5VXNlci5jdXJyZW50KCkucmVzKClcblxuICAgIC8vINCh0YLQsNGA0YvQuSBiYXRjaCDRh9C10YDQtdC3IHRhc2suZWxhcHNlZGl0ZW0uaXNhY3Rpb25hbGxvd2VkLlxuICAgIC8vINCS0YvQt9GL0LLQsNC10Lwg0LXQs9C+INC90LjQttC1INGC0L7Qu9GM0LrQviDQtNC70Y8g0LfQsNC00LDRhywg0L/QviDQutC+0YLQvtGA0YvQvCBnZXRhY2Nlc3Mg0L3QtSDQstC10YDQvdGD0LsgRUxBUFNFRFRJTUUuQURELlxuICAgIGNvbnN0IGxvYWRNaXNzaW5nQnlBY3Rpb25BbGxvd2VkID0gKG1pc3NpbmdJZHM6IG51bWJlcltdLCByZXNvbHZlZDogeyBpZDogbnVtYmVyLCB2YWx1ZTogYm9vbGVhbiB9W10pID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuYnJhbmNoPGlJc0FjdGlvbkFsbG93ZWRQYXJhbSwgYm9vbGVhbj4oXG4gICAgICAgIE9iamVjdC5hc3NpZ24oe30sIC4uLm1pc3NpbmdJZHMubWFwKGkgPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBbaV06IHtcbiAgICAgICAgICAgICAgbmFtZTogdGhpcy5odHRwLmdldE5hbWVNZXRob2QoWyR0YXNrLCAkZWxhcHNlZGl0ZW0sICRpc2FjdGlvbmFsbG93ZWRdKSxcbiAgICAgICAgICAgICAgcGFyYW06IHtcbiAgICAgICAgICAgICAgICBUQVNLSUQ6IGksXG4gICAgICAgICAgICAgICAgSVRFTUlEOiAxLFxuICAgICAgICAgICAgICAgIEFDVElPTklEOiAxXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pKVxuICAgICAgKS5waXBlKFxuICAgICAgICBtYXAodiA9PiB7XG4gICAgICAgICAgaWYgKHYgJiYgdi5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlczogUmVjb3JkPG51bWJlciwgYm9vbGVhbj4gPSB0aGlzLmh0dHAubWFwQnJhbmNoUmVzdWx0KHYpXG4gICAgICAgICAgICBjb25zdCBsb2FkZWQgPSBPYmplY3QuZW50cmllcyhyZXMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB7aWQ6IE51bWJlcihrZXkpLCB2YWx1ZX1cbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIHJldHVybiBbLi4ucmVzb2x2ZWQsIC4uLmxvYWRlZF1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgfVxuXG4gICAgaWYgKCFpZHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gb2YoW10pXG4gICAgfVxuXG4gICAgcmV0dXJuIHVzZXIkLnBpcGUoXG4gICAgICB0YWtlKDEpLFxuICAgICAgbWVyZ2VNYXAoc2VsZiA9PiB7XG4gICAgICAgIGlmICghc2VsZikge1xuICAgICAgICAgIC8vINCh0YLRgNCw0YXQvtCy0L7Rh9C90LDRjyDQstC10YLQutCwOiDQtdGB0LvQuCB1c2VyLmN1cnJlbnQg0L3QtSDQstC10YDQvdGD0LvRgdGPLCBnZXRhY2Nlc3Mg0LLRi9C30LLQsNGC0Ywg0L3QtdC70YzQt9GPLlxuICAgICAgICAgIHJldHVybiBsb2FkTWlzc2luZ0J5QWN0aW9uQWxsb3dlZChpZHMsIFtdKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8g0J7RgdC90L7QstC90L7QuSDQv9GD0YLRjDog0L7QtNC90LjQvCBiYXRjaC3Qt9Cw0L/RgNC+0YHQvtC8INC/0L7Qu9GD0YfQsNC10Lwg0L/RgNCw0LLQsCBFTEFQU0VEVElNRS5BREQg0L/QviDQstGB0LXQvCDQt9Cw0LTQsNGH0LDQvC5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5icmFuY2g8aUJYUmVzdFBhcmFtVGFza0dldEFjY2VzcywgaUJYUmVzdFRhc2tHZXRBY2Nlc3M+KFxuICAgICAgICAgIE9iamVjdC5hc3NpZ24oe30sIC4uLmlkcy5tYXAoaWQgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgW2lkXToge1xuICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuaHR0cC5nZXROYW1lTWV0aG9kKFskdGFza3MsICR0YXNrLCAkZ2V0YWNjZXNzXSksXG4gICAgICAgICAgICAgICAgcGFyYW06IHtcbiAgICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgICAgdXNlcnM6IFtzZWxmLklEXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pKVxuICAgICAgICApLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAodiA9PiB7XG4gICAgICAgICAgICBpZiAodiAmJiB2Lmxlbmd0aCkge1xuICAgICAgICAgICAgICBjb25zdCByZXMgPSB0aGlzLmh0dHAubWFwQnJhbmNoUmVzdWx0PGlCWFJlc3RUYXNrR2V0QWNjZXNzPih2KVxuICAgICAgICAgICAgICBjb25zdCBwZXJtaXNzaW9ucyA9IGlkcy5tYXAoaWQgPT4gKHtcbiAgICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogcmVzW2lkXT8uYWxsb3dlZEFjdGlvbnM/LltzZWxmLklEXT8uWydFTEFQU0VEVElNRS5BREQnXVxuICAgICAgICAgICAgICB9KSlcblxuICAgICAgICAgICAgICAvLyBnZXRhY2Nlc3Mg0LzQvtC20LXRgiDQstC10YDQvdGD0YLRjCB0cnVlINC40LvQuCBmYWxzZSAtINC+0LHQsCDQt9C90LDRh9C10L3QuNGPINGB0YfQuNGC0LDQtdC8INCz0L7RgtC+0LLRi9C8INC+0YLQstC10YLQvtC8LlxuICAgICAgICAgICAgICAvLyDQkiDRgdGC0LDRgNGL0LkgaXNhY3Rpb25hbGxvd2VkINC+0YLQv9GA0LDQstC70Y/QtdC8INGC0L7Qu9GM0LrQviDQt9Cw0LTQsNGH0Lgg0LHQtdC3INGP0LLQvdC+0LPQviBFTEFQU0VEVElNRS5BREQuXG4gICAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkID0gcGVybWlzc2lvbnMuZmlsdGVyKGkgPT4gaS52YWx1ZSAhPT0gdW5kZWZpbmVkKSBhcyB7IGlkOiBudW1iZXIsIHZhbHVlOiBib29sZWFuIH1bXVxuICAgICAgICAgICAgICBjb25zdCBtaXNzaW5nSWRzID0gcGVybWlzc2lvbnMuZmlsdGVyKGkgPT4gaS52YWx1ZSA9PT0gdW5kZWZpbmVkKS5tYXAoaSA9PiBpLmlkKVxuXG4gICAgICAgICAgICAgIGlmIChtaXNzaW5nSWRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWlzc2luZ0J5QWN0aW9uQWxsb3dlZChtaXNzaW5nSWRzLCByZXNvbHZlZClcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBvZihwZXJtaXNzaW9ucylcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8g0JXRgdC70LggYmF0Y2ggZ2V0YWNjZXNzINC90LUg0LLQtdGA0L3Rg9C70YHRjywg0YHQvtGF0YDQsNC90Y/QtdC8INC/0L7QstC10LTQtdC90LjQtSDRgdGC0LDRgNC+0LPQviBmYWxsYmFjay5cbiAgICAgICAgICAgIHJldHVybiBsb2FkTWlzc2luZ0J5QWN0aW9uQWxsb3dlZChpZHMsIFtdKVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgKVxuICB9XG4gIC8qKlxyXG4gICAqINCf0YDQvtCy0LXRgNC60LAg0L3QsCDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINC00L7QsdCw0LLQu9C10L3QuNC1INC30LDQv9C40YHQuCDRgtGA0LXQutCwINCyINGC0LDRgdC60YNcclxuICAgKlxyXG4gICAqIEBwYXJhbSBpZFRhc2tcclxuICAgKiBAcGFyYW0gdXNlckN1cnJlbnRcclxuICAgKi9cclxuICBjaGVja1Blcm1pc3Npb25BZGRFbGFwc2VkVGltZVRvVGFzayhpZFRhc2s6IG51bWJlciwgdXNlckN1cnJlbnQ6IGlCWFJlc3RVc2VyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkKSB7XG4gICAgLy8gbGV0IHBlcm1pc3Npb24gPSBQZXJtaXNzaW9uLmdldCgpXG4gICAgLy8gaWYgKHBlcm1pc3Npb24/LnRhc2tzPy5sZW5ndGgpIHtcbiAgICAvLyAgIGxldCBmaW5kVGFzayA9IHBlcm1pc3Npb24udGFza3MuZmluZChpID0+IGkuaWQgPT09IGlkVGFzaylcbiAgICAvLyAgIGlmIChmaW5kVGFzaz8ucGVybWlzc2lvbikge1xuICAgIC8vICAgICByZXR1cm4gb2YoZmluZFRhc2sucGVybWlzc2lvblsnRUxBUFNFRFRJTUUuQUREJ10pXG4gICAgLy8gICB9XG4gICAgcmV0dXJuICgodXNlckN1cnJlbnQpID8gb2YodXNlckN1cnJlbnQpIDogdGhpcy5CWFJlc3ROYXZ2eVVzZXIuY3VycmVudCgpLnJlcygpKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoc2VsZiA9PiB7XG4gICAgICAgIGlmIChzZWxmKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuQlhSZXN0TmF2dnlUYXNrcy50YXNrLmdldEFjY2VzcyhcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGlkOiBpZFRhc2ssXG4gICAgICAgICAgICAgIHVzZXJzOiBbc2VsZi5JRF1cbiAgICAgICAgICAgIH0pLnJlcygpLnBpcGUoXG4gICAgICAgICAgICAvLyB0YXAodiA9PiB7XG4gICAgICAgICAgICAvLyAgIGlmICh2ICYmIHZbc2VsZi5JRF0pIHtcbiAgICAgICAgICAgIC8vICAgICBQZXJtaXNzaW9uLnNldCh7XG4gICAgICAgICAgICAvLyAgICAgICB0YXNrczogW3tpZDogaWRUYXNrLCBwZXJtaXNzaW9uOiB2W3NlbGYuSURdLCBlbGFwc2VkSXRlbTogW119XVxuICAgICAgICAgICAgLy8gICAgIH0pXG4gICAgICAgICAgICAvLyAgIH1cbiAgICAgICAgICAgIC8vIH0pLFxuICAgICAgICAgICAgbWFwKHYgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gKHYgJiYgdltzZWxmLklEXSkgPyB2W3NlbGYuSURdWydFTEFQU0VEVElNRS5BREQnXSA6IGZhbHNlXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpXG4gICAgICB9KVxuICAgIClcbiAgICAvLyB9XG5cbiAgICAvLyByZXR1cm4gb2YodW5kZWZpbmVkKVxuICB9XG5cbiAgLyoqXG4gICAqINCf0YDQvtCy0LXRgNC60LAg0L3QsCDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINC/0YDQvtGH0YLQtdC90LjRjyDRgtCw0LrRgdC60LhcbiAgICpcclxuICAgKiBAcGFyYW0gaWRUYXNrXHJcbiAgICogQHBhcmFtIHVzZXJDdXJyZW50XHJcbiAgICovXHJcbiAgY2hlY2tQZXJtaXNzaW9uUmVhZFRhc2soaWRUYXNrOiBudW1iZXIsIHVzZXJDdXJyZW50OiBpQlhSZXN0VXNlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCkge1xyXG4gICAgLy8gbGV0IHBlcm1pc3Npb24gPSBQZXJtaXNzaW9uLmdldCgpXHJcbiAgICAvLyBpZiAocGVybWlzc2lvbj8udGFza3M/Lmxlbmd0aCkge1xyXG4gICAgLy8gICBsZXQgZmluZFRhc2sgPSBwZXJtaXNzaW9uLnRhc2tzLmZpbmQoaSA9PiBpLmlkID09PSBpZFRhc2spXHJcbiAgICAvLyAgIGlmIChmaW5kVGFzaz8ucGVybWlzc2lvbikge1xyXG4gICAgLy8gICAgIHJldHVybiBvZihmaW5kVGFzay5wZXJtaXNzaW9uLkFDQ0VQVClcclxuICAgIC8vICAgfVxyXG4gICAgLy8gICBjb25zb2xlLmxvZygnaWRUYXNrJywgaWRUYXNrKVxyXG4gICAgcmV0dXJuICgodXNlckN1cnJlbnQpID8gb2YodXNlckN1cnJlbnQpIDogdGhpcy5CWFJlc3ROYXZ2eVVzZXIuY3VycmVudCgpLnJlcygpKS5waXBlKFxyXG4gICAgICBtZXJnZU1hcChzZWxmID0+IHtcclxuICAgICAgICBpZiAoc2VsZikge1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuQlhSZXN0TmF2dnlUYXNrcy50YXNrLmdldEFjY2VzcyhcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGlkOiBpZFRhc2ssXHJcbiAgICAgICAgICAgICAgdXNlcnM6IFtzZWxmLklEXVxyXG4gICAgICAgICAgICB9KS5yZXMoKS5waXBlKFxyXG4gICAgICAgICAgICAvLyB0YXAodiA9PiB7XHJcbiAgICAgICAgICAgIC8vICAgaWYgKHYgJiYgdltzZWxmLklEXSkge1xyXG4gICAgICAgICAgICAvLyAgICAgUGVybWlzc2lvbi5zZXQoe1xyXG4gICAgICAgICAgICAvLyAgICAgICB0YXNrczogW3tpZDogaWRUYXNrLCBwZXJtaXNzaW9uOiB2W3NlbGYuSURdLCBlbGFwc2VkSXRlbTogW119XVxyXG4gICAgICAgICAgICAvLyAgICAgfSlcclxuICAgICAgICAgICAgLy8gICB9XHJcbiAgICAgICAgICAgIC8vIH0pLFxyXG4gICAgICAgICAgICBtYXAodiA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuICh2ICYmIHZbc2VsZi5JRF0pID8gISF2W3NlbGYuSURdIDogZmFsc2UgLy8g0L7RgtC00LXQu9GM0L3QvtCz0L4g0YTQu9Cw0LPQsCDQvdCwINGH0YLQtdC90LjQtSDQvdC10YIsINCy0YvRhdC+0LTQuNGCINGH0YLQviDQtdGB0LvQuCDQv9GA0LDQstCwINC+0YLQtNCw0LvQuNGB0Ywg0YLQviDQuCDQv9GA0LDQstCwINC10YHRgtGMXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICAgLy8gfVxyXG4gICAgLy9cclxuICAgIC8vIHJldHVybiBvZih1bmRlZmluZWQpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDQl9Cw0LrQvtC90YfQtdC90L3Ri9C5INC80LXRgtC+0LQg0LTQvtCx0LDQstC70LXQvdC40Y8g0LfQsNC/0LjRgdC4INGBINC/0YDQtdC00LLQsNGA0LjRgtC10LvRjNC90L7QuSDQv9GA0L7QstC10YDQutC+0Lkg0L/RgNCw0LJcclxuICAgKlxyXG4gICAqIFRPRE86INC00L7QsdCw0LLQuNGC0Ywg0YHQvtGF0YDQsNC90LXQvdC40LUg0L/RgNC10LTQstCw0YDQuNGC0LXQu9GM0L3QviDQv9GA0L7QstC10YDQtdC90L3Ri9GFINC30LDQv9C40YHQtdC5XHJcbiAgICogQHBhcmFtIHBhcmFtXHJcbiAgICovXHJcbiAgYWRkKHBhcmFtOiBpQlhSZXN0UGFyYW1BZGRFbGFwc2VkaXRlbSkge1xyXG4gICAgcmV0dXJuIHRoaXMuY2hlY2tQZXJtaXNzaW9uUmVhZFRhc2socGFyYW0uVEFTS0lEKS5waXBlKFxyXG4gICAgICBtZXJnZU1hcChhbGxvd2VkUmVhZFRhc2sgPT4ge1xyXG4gICAgICAgIGlmIChhbGxvd2VkUmVhZFRhc2spIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmNoZWNrUGVybWlzc2lvbkFkZEVsYXBzZWRUaW1lVG9UYXNrKHBhcmFtLlRBU0tJRCkucGlwZShcclxuICAgICAgICAgICAgbWVyZ2VNYXAoYWxsb3dlZCA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGFsbG93ZWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLkJYUmVzdE5hdnZ5RWxhcHNlZEl0ZW0uYWRkKHBhcmFtKS5yZXMoKVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ9Ce0YLRgdGD0YLRgdGC0LLRg9GO0YIg0L/RgNCw0LLQsCDQtNC+0LHQsNCy0LvQtdC90LjQtSDQt9Cw0L/QuNGB0Lgg0LfQsNGC0YDQsNGH0LXQvdC90L7Qs9C+INCy0YDQtdC80LXQvdC4JykpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KSlcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCfQntGC0YHRg9GC0YHRgtCy0YPRjtGCINC/0YDQsNCy0LAg0L3QsCDRh9GC0LXQvdC40LUg0LfQsNC00LDRh9C4JykpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqINCX0LDQutC+0L3Rh9C10L3QvdGL0Lkg0LzQtdGC0L7QtCDQvtCx0L3QvtCy0LvQtdC90LjRjyDQt9Cw0L/QuNGB0Lgg0YEg0L/RgNC10LTQstCw0YDQuNGC0LXQu9GM0L3QvtC5INC/0YDQvtCy0LXRgNC60L7QuSDQv9GA0LDQslxyXG4gICAqXHJcbiAgICogVE9ETzog0LTQvtCx0LDQstC40YLRjCDRgdC+0YXRgNCw0L3QtdC90LjQtSDQv9GA0LXQtNCy0LDRgNC40YLQtdC70YzQvdC+INC/0YDQvtCy0LXRgNC10L3QvdGL0YUg0LfQsNC/0LjRgdC10LlcclxuICAgKiBAcGFyYW0gcGFyYW1cclxuICAgKi9cclxuICB1cGRhdGUocGFyYW06IGlCWFJlc3RQYXJhbVVwZGF0ZUVsYXBzZWRpdGVtKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja1Blcm1pc3Npb25SZWFkVGFzayhwYXJhbS5UQVNLSUQpLnBpcGUoXHJcbiAgICAgIG1lcmdlTWFwKChhbGxvd2VkUmVhZFRhc2spID0+IHtcclxuICAgICAgICBpZiAoYWxsb3dlZFJlYWRUYXNrKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5pc0FsbG93ZWRNb2RpZnkocGFyYW0uVEFTS0lELCBwYXJhbS5JVEVNSUQpLnBpcGUoXHJcbiAgICAgICAgICAgIG1lcmdlTWFwKGFsbG93ZWQgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChhbGxvd2VkKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5CWFJlc3ROYXZ2eUVsYXBzZWRJdGVtLnVwZGF0ZShwYXJhbSkucmVzKClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCfQntGC0YHRg9GC0YHRgtCy0YPRjtGCINC/0YDQsNCy0LAg0L3QsCDQuNC30LzQtdC90LXQvdC40LUg0LfQsNC/0LjRgdC4INC30LDRgtGA0LDRh9C10L3QvdC+0LPQviDQstGA0LXQvNC10L3QuCcpKVxyXG4gICAgICAgICAgICB9KSlcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCfQntGC0YHRg9GC0YHRgtCy0YPRjtGCINC/0YDQsNCy0LAg0L3QsCDRh9GC0LXQvdC40LUg0LfQsNC00LDRh9C4JykpXHJcbiAgICAgIH0pKVxyXG4gIH1cclxuXHJcbiAgLy8gVE9ETzog0YDQsNC30L7QsdGA0LDRgtGM0YHRjyDRh9GC0L4g0Y3RgtC+INC30LAg0LXQsdCw0YLQvdGPINCyINC60L7QvNC80LXQvdGC0LDRhSDQuCDQstC/0LjRgdCw0YLRjCDQvdC+0YDQvNCw0LvRjNC90L7QuSDQutC+0LzQtdC90YIg0LXRgdC70Lgg0L7QvdCwINC90YPQttC90LBcclxuICBpc0FsbG93ZWRNb2RpZnkoaWRUYXNrOiBudW1iZXIsIGlkSXRlbTogbnVtYmVyKSB7XHJcbiAgICAvLyBsZXQgcGVybWlzc2lvbiA9IFBlcm1pc3Npb24uZ2V0KClcclxuICAgIC8vIGlmIChwZXJtaXNzaW9uPy50YXNrcz8ubGVuZ3RoKSB7XHJcbiAgICAvLyAgIGxldCBmaW5kVGFzayA9IHBlcm1pc3Npb24udGFza3MuZmluZChpID0+IGkuaWQgPT09IGlkVGFzaylcclxuICAgIC8vICAgaWYgKGZpbmRUYXNrKSB7XHJcbiAgICAvLyAgICAgbGV0IGZpbmQgPSBmaW5kVGFzay5lbGFwc2VkSXRlbS5maW5kKGkgPT4gaS5pZCA9PT0gaWRJdGVtKVxyXG4gICAgLy8gICAgIGlmIChmaW5kICYmIGZpbmQudmVyaWZpZWQuZWRpdCkge1xyXG4gICAgLy8gICAgICAgcmV0dXJuIG9mKGZpbmQuZWRpdClcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5CWFJlc3ROYXZ2eUVsYXBzZWRJdGVtLmlzQWN0aW9uQWxsb3dlZCh7XHJcbiAgICAgIFRBU0tJRDogaWRUYXNrLFxyXG4gICAgICBJVEVNSUQ6IGlkSXRlbSxcclxuICAgICAgQUNUSU9OSUQ6IDJcclxuICAgIH0pLnJlcygpXHJcbiAgICAvLyAgIC5waXBlKFxyXG4gICAgLy8gICB0YXAodiA9PiB7XHJcbiAgICAvLyAgICAgaWYgKHYgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgLy8gICAgICAgUGVybWlzc2lvbi5zZXRUYXNrRWxhcHNlZEl0ZW0oaWRUYXNrLFxyXG4gICAgLy8gICAgICAgICB7XHJcbiAgICAvLyAgICAgICAgICAgaWQ6IGlkSXRlbSxcclxuICAgIC8vICAgICAgICAgICBlZGl0OiB2LFxyXG4gICAgLy8gICAgICAgICAgIGRlbDogZmFsc2UsXHJcbiAgICAvLyAgICAgICAgICAgdmVyaWZpZWQ6IHtcclxuICAgIC8vICAgICAgICAgICAgIGVkaXQ6IHRydWUsXHJcbiAgICAvLyAgICAgICAgICAgICBkZWw6IGZhbHNlLFxyXG4gICAgLy8gICAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgfSlcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgIH0pXHJcbiAgICAvLyApXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBpc0FjdGlvbkFsbG93ZWQg0YEg0YTQuNC60YHQvtC8INC90LAg0L/RgNC+0LLQtdGA0LrRgyDQstC+0LfQvNC+0LbQvdC+0YHRgtC4INGH0YLQtdC90LjRjyDQt9Cw0LTQsNGH0Lgg0LfQsNC/0LjRgdC4XHJcbiAgICogKNCx0LXQtyDQv9GA0L7QstC10YDQutC4INC00LDRkdGCINC+0YjQuNCx0LrRgylcclxuICAgKlxyXG4gICAqIGlkQWN0aW9uOlxyXG4gICAqIDEgLSBBQ1RJT05fRUxBUFNFRF9USU1FX0FERFxyXG4gICAqIDIgLSBBQ1RJT05fRUxBUFNFRF9USU1FX01PRElGWVxyXG4gICAqIDMgLSBBQ1RJT05fRUxBUFNFRF9USU1FX1JFTU9WRVxyXG4gICAqIEBwYXJhbSBwYXJhbVxyXG4gICAqL1xyXG4gIGlzQWN0aW9uQWxsb3dlZChwYXJhbTogaUlzQWN0aW9uQWxsb3dlZFBhcmFtKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja1Blcm1pc3Npb25SZWFkVGFzayhwYXJhbS5UQVNLSUQpLnBpcGUoXHJcbiAgICAgIG1lcmdlTWFwKGNhblJlYWQgPT4ge1xyXG4gICAgICAgIGlmIChjYW5SZWFkKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5CWFJlc3ROYXZ2eUVsYXBzZWRJdGVtLmlzQWN0aW9uQWxsb3dlZChwYXJhbSkucmVzKClcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCfQntGC0YHRg9GC0YHRgtCy0YPRjtGCINC/0YDQsNCy0LAg0L3QsCDRh9GC0LXQvdC40LUg0LfQsNC00LDRh9C4JykpXHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICog0J/QvtC70L3QvtGG0LXQvdC90YvQuSDQvNC10YLQvtC0INGD0LTQsNC70LXQvdC40Y9cclxuICAgKlxyXG4gICAqIEBwYXJhbSBwYXJhbVxyXG4gICAqL1xyXG4gIGRlbChwYXJhbTogaUJYUmVzdFBhcmFtRGVsRWxhcHNlZGl0ZW0pIHtcclxuICAgIHJldHVybiB0aGlzLmNoZWNrUGVybWlzc2lvblJlYWRUYXNrKHBhcmFtLlRBU0tJRCkucGlwZShcclxuICAgICAgbWVyZ2VNYXAoYWxsb3dlZFJlYWRUYXNrID0+IHtcclxuICAgICAgICBpZiAoYWxsb3dlZFJlYWRUYXNrKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5pc0FsbG93ZWRSZW1vdmUocGFyYW0uVEFTS0lELCBwYXJhbS5JVEVNSUQpLnBpcGUoXHJcbiAgICAgICAgICAgIG1lcmdlTWFwKGFsbG93ZWQgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChhbGxvd2VkKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5CWFJlc3ROYXZ2eUVsYXBzZWRJdGVtLmRlbGV0ZShwYXJhbSkucmVzKClcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCfQntGC0YHRg9GC0YHRgtCy0YPRjtGCINC/0YDQsNCy0LAg0L3QsCDRg9C00LDQu9C10L3QuNC1INC30LDQv9C40YHQuCDQt9Cw0YLRgNCw0YfQtdC90L3QvtCz0L4g0LLRgNC10LzQtdC90LgnKSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ9Ce0YLRgdGD0YLRgdGC0LLRg9GO0YIg0L/RgNCw0LLQsCDQvdCwINGH0YLQtdC90LjQtSDQt9Cw0LTQsNGH0LgnKSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzQWxsb3dlZFJlbW92ZShpZFRhc2s6IG51bWJlciwgaWRJdGVtOiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLmlzQWN0aW9uQWxsb3dlZChcclxuICAgICAge1xyXG4gICAgICAgIFRBU0tJRDogaWRUYXNrLFxyXG4gICAgICAgIElURU1JRDogaWRJdGVtLFxyXG4gICAgICAgIEFDVElPTklEOiAzXHJcbiAgICAgIH0pXHJcbiAgfVxyXG59XHJcbiJdfQ==
|
package/fesm2022/bx-rest.mjs
CHANGED
|
@@ -3922,42 +3922,73 @@ class BXRestNavvyOperationElapsedItem {
|
|
|
3922
3922
|
}));
|
|
3923
3923
|
}
|
|
3924
3924
|
checkPermissionAddElapsedTimeToTaskArr(tasks, userCurrent = undefined) {
|
|
3925
|
-
|
|
3926
|
-
|
|
3927
|
-
|
|
3928
|
-
|
|
3929
|
-
|
|
3930
|
-
|
|
3931
|
-
|
|
3932
|
-
}
|
|
3933
|
-
|
|
3934
|
-
|
|
3935
|
-
|
|
3936
|
-
|
|
3937
|
-
|
|
3938
|
-
|
|
3939
|
-
|
|
3940
|
-
[i]: {
|
|
3941
|
-
name: this.http.getNameMethod([$task, $elapseditem, $isactionallowed]),
|
|
3942
|
-
param: {
|
|
3943
|
-
TASKID: i,
|
|
3944
|
-
ITEMID: 1,
|
|
3945
|
-
ACTIONID: 1
|
|
3946
|
-
}
|
|
3925
|
+
// Убираем дубли, чтобы не проверять права по одной задаче несколько раз.
|
|
3926
|
+
const ids = [...new Set(tasks.filter(i => !!i))];
|
|
3927
|
+
// Если текущий пользователь не передан снаружи, запрашиваем его один раз на весь набор задач.
|
|
3928
|
+
const user$ = userCurrent ? of(userCurrent) : this.BXRestNavvyUser.current().res();
|
|
3929
|
+
// Старый batch через task.elapseditem.isactionallowed.
|
|
3930
|
+
// Вызываем его ниже только для задач, по которым getaccess не вернул ELAPSEDTIME.ADD.
|
|
3931
|
+
const loadMissingByActionAllowed = (missingIds, resolved) => {
|
|
3932
|
+
return this.http.branch(Object.assign({}, ...missingIds.map(i => {
|
|
3933
|
+
return {
|
|
3934
|
+
[i]: {
|
|
3935
|
+
name: this.http.getNameMethod([$task, $elapseditem, $isactionallowed]),
|
|
3936
|
+
param: {
|
|
3937
|
+
TASKID: i,
|
|
3938
|
+
ITEMID: 1,
|
|
3939
|
+
ACTIONID: 1
|
|
3947
3940
|
}
|
|
3948
|
-
};
|
|
3949
|
-
}))).pipe(map(v => {
|
|
3950
|
-
if (v && v.length) {
|
|
3951
|
-
const res = this.http.mapBranchResult(v);
|
|
3952
|
-
forForeachNotHave = Object.entries(res).map(([key, value]) => {
|
|
3953
|
-
return { id: Number(key), value: value };
|
|
3954
|
-
});
|
|
3955
|
-
return Object.assign(forForeachHave, forForeachNotHave);
|
|
3956
3941
|
}
|
|
3957
|
-
|
|
3958
|
-
|
|
3942
|
+
};
|
|
3943
|
+
}))).pipe(map(v => {
|
|
3944
|
+
if (v && v.length) {
|
|
3945
|
+
const res = this.http.mapBranchResult(v);
|
|
3946
|
+
const loaded = Object.entries(res).map(([key, value]) => {
|
|
3947
|
+
return { id: Number(key), value };
|
|
3948
|
+
});
|
|
3949
|
+
return [...resolved, ...loaded];
|
|
3950
|
+
}
|
|
3951
|
+
return undefined;
|
|
3952
|
+
}));
|
|
3953
|
+
};
|
|
3954
|
+
if (!ids.length) {
|
|
3955
|
+
return of([]);
|
|
3956
|
+
}
|
|
3957
|
+
return user$.pipe(take(1), mergeMap(self => {
|
|
3958
|
+
if (!self) {
|
|
3959
|
+
// Страховочная ветка: если user.current не вернулся, getaccess вызвать нельзя.
|
|
3960
|
+
return loadMissingByActionAllowed(ids, []);
|
|
3959
3961
|
}
|
|
3960
|
-
|
|
3962
|
+
// Основной путь: одним batch-запросом получаем права ELAPSEDTIME.ADD по всем задачам.
|
|
3963
|
+
return this.http.branch(Object.assign({}, ...ids.map(id => {
|
|
3964
|
+
return {
|
|
3965
|
+
[id]: {
|
|
3966
|
+
name: this.http.getNameMethod([$tasks, $task, $getaccess]),
|
|
3967
|
+
param: {
|
|
3968
|
+
id,
|
|
3969
|
+
users: [self.ID]
|
|
3970
|
+
}
|
|
3971
|
+
}
|
|
3972
|
+
};
|
|
3973
|
+
}))).pipe(mergeMap(v => {
|
|
3974
|
+
if (v && v.length) {
|
|
3975
|
+
const res = this.http.mapBranchResult(v);
|
|
3976
|
+
const permissions = ids.map(id => ({
|
|
3977
|
+
id,
|
|
3978
|
+
value: res[id]?.allowedActions?.[self.ID]?.['ELAPSEDTIME.ADD']
|
|
3979
|
+
}));
|
|
3980
|
+
// getaccess может вернуть true или false - оба значения считаем готовым ответом.
|
|
3981
|
+
// В старый isactionallowed отправляем только задачи без явного ELAPSEDTIME.ADD.
|
|
3982
|
+
const resolved = permissions.filter(i => i.value !== undefined);
|
|
3983
|
+
const missingIds = permissions.filter(i => i.value === undefined).map(i => i.id);
|
|
3984
|
+
if (missingIds.length) {
|
|
3985
|
+
return loadMissingByActionAllowed(missingIds, resolved);
|
|
3986
|
+
}
|
|
3987
|
+
return of(permissions);
|
|
3988
|
+
}
|
|
3989
|
+
// Если batch getaccess не вернулся, сохраняем поведение старого fallback.
|
|
3990
|
+
return loadMissingByActionAllowed(ids, []);
|
|
3991
|
+
}));
|
|
3961
3992
|
}));
|
|
3962
3993
|
}
|
|
3963
3994
|
/**
|
|
@@ -5756,26 +5787,8 @@ class BXRestMapImRecent {
|
|
|
5756
5787
|
...{
|
|
5757
5788
|
date_update: toDate(i.date_update),
|
|
5758
5789
|
counter: toNum(i.counter),
|
|
5759
|
-
user:
|
|
5760
|
-
|
|
5761
|
-
...i.user,
|
|
5762
|
-
...{
|
|
5763
|
-
id: toNum(i.user.id),
|
|
5764
|
-
last_activity_date: i.user.last_activity_date ? toDate(i.user.last_activity_date) : false,
|
|
5765
|
-
mobile_last_date: i.user.mobile_last_date ? toDate(i.user.mobile_last_date) : false,
|
|
5766
|
-
absent: i.user.absent ? toDate(i.user.absent) : false,
|
|
5767
|
-
}
|
|
5768
|
-
}
|
|
5769
|
-
: undefined,
|
|
5770
|
-
chat: i.chat && BXRestMapImRecent.isIBXRestImDialogRecentGetChatChatDataHttp(i.chat)
|
|
5771
|
-
? {
|
|
5772
|
-
...i.chat,
|
|
5773
|
-
...{
|
|
5774
|
-
id: toNum(i.chat.id),
|
|
5775
|
-
date_create: toDate(i.chat.date_create)
|
|
5776
|
-
}
|
|
5777
|
-
}
|
|
5778
|
-
: i.chat,
|
|
5790
|
+
user: BXRestMapImRecent.mapUser(i.user),
|
|
5791
|
+
chat: BXRestMapImRecent.mapChat(i.chat),
|
|
5779
5792
|
}
|
|
5780
5793
|
}))
|
|
5781
5794
|
: undefined;
|
|
@@ -5810,6 +5823,31 @@ class BXRestMapImRecent {
|
|
|
5810
5823
|
static isIBXRestImDialogRecentGetChatChatDataHttp(item) {
|
|
5811
5824
|
return 'id' in item;
|
|
5812
5825
|
}
|
|
5826
|
+
static mapUser(user) {
|
|
5827
|
+
if (!user || !user.id) {
|
|
5828
|
+
return undefined;
|
|
5829
|
+
}
|
|
5830
|
+
return {
|
|
5831
|
+
...user,
|
|
5832
|
+
id: toNum(user.id),
|
|
5833
|
+
last_activity_date: user.last_activity_date ? toDate(user.last_activity_date) : false,
|
|
5834
|
+
mobile_last_date: user.mobile_last_date ? toDate(user.mobile_last_date) : false,
|
|
5835
|
+
absent: user.absent ? toDate(user.absent) : false,
|
|
5836
|
+
};
|
|
5837
|
+
}
|
|
5838
|
+
static mapChat(chat) {
|
|
5839
|
+
if (!chat) {
|
|
5840
|
+
return undefined;
|
|
5841
|
+
}
|
|
5842
|
+
if (BXRestMapImRecent.isIBXRestImDialogRecentGetChatChatDataHttp(chat)) {
|
|
5843
|
+
return {
|
|
5844
|
+
...chat,
|
|
5845
|
+
id: toNum(chat.id),
|
|
5846
|
+
date_create: toDate(chat.date_create)
|
|
5847
|
+
};
|
|
5848
|
+
}
|
|
5849
|
+
return chat;
|
|
5850
|
+
}
|
|
5813
5851
|
}
|
|
5814
5852
|
__decorate([
|
|
5815
5853
|
CatchError({ rethrow: true })
|