@libs-ui/services-http-request 0.1.1-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/README.md +3 -0
- package/api-mockup.d.ts +85 -0
- package/esm2022/api-mockup.mjs +210 -0
- package/esm2022/http-request.service.mjs +234 -0
- package/esm2022/index.mjs +4 -0
- package/esm2022/interfaces/guild-auto-update-arguments-value.interface.mjs +2 -0
- package/esm2022/interfaces/http-request-config.interface.mjs +3 -0
- package/esm2022/interfaces/index.mjs +3 -0
- package/esm2022/libs-ui-services-http-request.mjs +5 -0
- package/fesm2022/libs-ui-services-http-request.mjs +451 -0
- package/fesm2022/libs-ui-services-http-request.mjs.map +1 -0
- package/http-request.service.d.ts +23 -0
- package/index.d.ts +3 -0
- package/interfaces/guild-auto-update-arguments-value.interface.d.ts +22 -0
- package/interfaces/http-request-config.interface.d.ts +14 -0
- package/interfaces/index.d.ts +2 -0
- package/package.json +28 -0
package/README.md
ADDED
package/api-mockup.d.ts
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { HttpParams } from '@angular/common/http';
|
|
2
|
+
import { IHttpResponse } from '@libs-ui/interfaces-types';
|
|
3
|
+
import { UtilsHttpParamsRequest } from '@libs-ui/utils';
|
|
4
|
+
import { Observable } from 'rxjs';
|
|
5
|
+
/**
|
|
6
|
+
* Trả về các phương thức để xử lý danh sách dữ liệu mock
|
|
7
|
+
* @param data - Mảng dữ liệu mặc định để mock
|
|
8
|
+
* @param functionGetData - Hàm tùy chọn để lấy dữ liệu động thay vì sử dụng data mặc định
|
|
9
|
+
* @returns Đối tượng chứa các phương thức:
|
|
10
|
+
* - list: Trả về Promise với toàn bộ dữ liệu (có delay 250ms)
|
|
11
|
+
* - listObservable: Trả về Observable với toàn bộ dữ liệu (có delay 250ms)
|
|
12
|
+
* - listPaging: Trả về Promise với dữ liệu đã phân trang dựa trên params (có delay 250ms)
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* const mockData = [{ id: 1, name: 'Item 1' }, { id: 2, name: 'Item 2' }];
|
|
17
|
+
* const listService = returnListObject(mockData);
|
|
18
|
+
*
|
|
19
|
+
* // Lấy toàn bộ dữ liệu
|
|
20
|
+
* const allData = await listService.list();
|
|
21
|
+
*
|
|
22
|
+
* // Lấy dữ liệu phân trang
|
|
23
|
+
* const params = new UtilsHttpParamsRequest();
|
|
24
|
+
* params.set('page', '1');
|
|
25
|
+
* params.set('per_page', '10');
|
|
26
|
+
* const pagedData = await listService.listPaging(params);
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare const returnListObject: (data?: Array<any>, functionGetData?: () => Array<any>) => {
|
|
30
|
+
list: <TypeResponse = any>() => Promise<IHttpResponse<TypeResponse>>;
|
|
31
|
+
listObservable: <TypeResponse = any>() => Observable<IHttpResponse<TypeResponse>>;
|
|
32
|
+
listPaging: <TypeResponse = any>(params: UtilsHttpParamsRequest) => Promise<IHttpResponse<TypeResponse>>;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Tạo một đối tượng mock detail với các phương thức để lấy bản ghi riêng lẻ theo khóa.
|
|
36
|
+
* Hỗ trợ cả mảng dữ liệu tĩnh và các hàm dữ liệu động.
|
|
37
|
+
*
|
|
38
|
+
* @template TypeResponse - Kiểu dữ liệu phản hồi mong đợi
|
|
39
|
+
* @template TypeParams - Kiểu tham số HTTP (mặc định là any)
|
|
40
|
+
*
|
|
41
|
+
* @param httpParams - Tham số HTTP chứa:
|
|
42
|
+
* - keys: Khóa (hoặc các khóa) cần tìm kiếm
|
|
43
|
+
* - fieldKey: Tên trường để so khớp (mặc định là 'id')
|
|
44
|
+
* - dataResponseOject: Cờ boolean để định dạng đối tượng phản hồi
|
|
45
|
+
* @param data - Mảng dữ liệu tĩnh tùy chọn để tìm kiếm
|
|
46
|
+
* @param functionGetData - Hàm tùy chọn trả về dữ liệu (có thể là Promise hoặc Observable)
|
|
47
|
+
* @param ignoreSplit - Nếu true, coi keys như một giá trị đơn thay vì tách chuỗi
|
|
48
|
+
* @param splitOperator - Toán tử tùy chỉnh để tách keys (mặc định là dấu phẩy)
|
|
49
|
+
*
|
|
50
|
+
* @returns Đối tượng với các phương thức:
|
|
51
|
+
* - detailByData: Tìm kiếm thông qua mảng dữ liệu tĩnh được cung cấp
|
|
52
|
+
* - detailByFunction: Gọi functionGetData để lấy dữ liệu mới, sau đó tìm kiếm
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```typescript
|
|
56
|
+
* const params = new UtilsHttpParamsRequest({fromObject:{keys:'1',fieldKey:'id'}});
|
|
57
|
+
* const mockDetail = returnDetailObject<User>(params, userData);
|
|
58
|
+
* const user = await mockDetail.detailByData();
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare const returnDetailObject: <TypeResponse, TypeParams = any>(httpParams: UtilsHttpParamsRequest<TypeParams> | HttpParams, data?: Array<any>, functionGetData?: () => Promise<IHttpResponse<TypeResponse>> | Observable<IHttpResponse<TypeResponse>>, ignoreSplit?: boolean, splitOperator?: string) => {
|
|
62
|
+
detailByData: <TypeResponse_1 = any>(keys?: any) => Promise<IHttpResponse<TypeResponse_1>>;
|
|
63
|
+
detailByFunction: <TypeResponse_1 = any>(keys?: any) => Promise<IHttpResponse<TypeResponse_1>>;
|
|
64
|
+
};
|
|
65
|
+
export declare const getConfigListDataDemo: (httpParamsDetail?: UtilsHttpParamsRequest<any>, objectData?: Record<string, string>, functionBuildObject?: (numIncrement: string) => Record<string, string>) => {
|
|
66
|
+
list: <TypeResponse = any>(params: UtilsHttpParamsRequest) => Promise<IHttpResponse<TypeResponse>>;
|
|
67
|
+
detailByData: <TypeResponse = any>(keys?: any) => Promise<IHttpResponse<TypeResponse>>;
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Hàm phân trang dữ liệu từ một mảng
|
|
71
|
+
* @param data - Mảng dữ liệu cần phân trang
|
|
72
|
+
* @param page - Số trang hiện tại (bắt đầu từ 1)
|
|
73
|
+
* @param per_page - Số lượng item trên mỗi trang
|
|
74
|
+
* @returns Đối tượng chứa dữ liệu đã phân trang và thông tin phân trang
|
|
75
|
+
*/
|
|
76
|
+
export declare const pagingToList: (data: Array<any>, page: number, per_page: number) => {
|
|
77
|
+
code: number;
|
|
78
|
+
data: any[];
|
|
79
|
+
paging: {
|
|
80
|
+
page: number;
|
|
81
|
+
per_page: number;
|
|
82
|
+
total_items: number;
|
|
83
|
+
total_pages: number;
|
|
84
|
+
};
|
|
85
|
+
};
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import { UtilsHttpParamsRequest, get, isNil, set, isEqual } from '@libs-ui/utils';
|
|
2
|
+
import { delay, lastValueFrom, of, timer } from 'rxjs';
|
|
3
|
+
/**
|
|
4
|
+
* Trả về các phương thức để xử lý danh sách dữ liệu mock
|
|
5
|
+
* @param data - Mảng dữ liệu mặc định để mock
|
|
6
|
+
* @param functionGetData - Hàm tùy chọn để lấy dữ liệu động thay vì sử dụng data mặc định
|
|
7
|
+
* @returns Đối tượng chứa các phương thức:
|
|
8
|
+
* - list: Trả về Promise với toàn bộ dữ liệu (có delay 250ms)
|
|
9
|
+
* - listObservable: Trả về Observable với toàn bộ dữ liệu (có delay 250ms)
|
|
10
|
+
* - listPaging: Trả về Promise với dữ liệu đã phân trang dựa trên params (có delay 250ms)
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const mockData = [{ id: 1, name: 'Item 1' }, { id: 2, name: 'Item 2' }];
|
|
15
|
+
* const listService = returnListObject(mockData);
|
|
16
|
+
*
|
|
17
|
+
* // Lấy toàn bộ dữ liệu
|
|
18
|
+
* const allData = await listService.list();
|
|
19
|
+
*
|
|
20
|
+
* // Lấy dữ liệu phân trang
|
|
21
|
+
* const params = new UtilsHttpParamsRequest();
|
|
22
|
+
* params.set('page', '1');
|
|
23
|
+
* params.set('per_page', '10');
|
|
24
|
+
* const pagedData = await listService.listPaging(params);
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export const returnListObject = (data, functionGetData) => {
|
|
28
|
+
return {
|
|
29
|
+
list: async () => {
|
|
30
|
+
if (functionGetData) {
|
|
31
|
+
data = functionGetData();
|
|
32
|
+
}
|
|
33
|
+
await lastValueFrom(timer(250));
|
|
34
|
+
return {
|
|
35
|
+
code: 200,
|
|
36
|
+
data: data || [],
|
|
37
|
+
paging: {},
|
|
38
|
+
};
|
|
39
|
+
},
|
|
40
|
+
listObservable: () => {
|
|
41
|
+
if (functionGetData) {
|
|
42
|
+
data = functionGetData();
|
|
43
|
+
}
|
|
44
|
+
return of({
|
|
45
|
+
code: 200,
|
|
46
|
+
data: data || [],
|
|
47
|
+
paging: {},
|
|
48
|
+
}).pipe(delay(250));
|
|
49
|
+
},
|
|
50
|
+
listPaging: async (params) => {
|
|
51
|
+
if (functionGetData) {
|
|
52
|
+
data = functionGetData();
|
|
53
|
+
}
|
|
54
|
+
const page = parseInt(params.get('page') || '1');
|
|
55
|
+
const per_page = parseInt(params.get('per_page') || '30');
|
|
56
|
+
const result = pagingToList(data, page, per_page);
|
|
57
|
+
await lastValueFrom(timer(250));
|
|
58
|
+
return result;
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Tạo một đối tượng mock detail với các phương thức để lấy bản ghi riêng lẻ theo khóa.
|
|
64
|
+
* Hỗ trợ cả mảng dữ liệu tĩnh và các hàm dữ liệu động.
|
|
65
|
+
*
|
|
66
|
+
* @template TypeResponse - Kiểu dữ liệu phản hồi mong đợi
|
|
67
|
+
* @template TypeParams - Kiểu tham số HTTP (mặc định là any)
|
|
68
|
+
*
|
|
69
|
+
* @param httpParams - Tham số HTTP chứa:
|
|
70
|
+
* - keys: Khóa (hoặc các khóa) cần tìm kiếm
|
|
71
|
+
* - fieldKey: Tên trường để so khớp (mặc định là 'id')
|
|
72
|
+
* - dataResponseOject: Cờ boolean để định dạng đối tượng phản hồi
|
|
73
|
+
* @param data - Mảng dữ liệu tĩnh tùy chọn để tìm kiếm
|
|
74
|
+
* @param functionGetData - Hàm tùy chọn trả về dữ liệu (có thể là Promise hoặc Observable)
|
|
75
|
+
* @param ignoreSplit - Nếu true, coi keys như một giá trị đơn thay vì tách chuỗi
|
|
76
|
+
* @param splitOperator - Toán tử tùy chỉnh để tách keys (mặc định là dấu phẩy)
|
|
77
|
+
*
|
|
78
|
+
* @returns Đối tượng với các phương thức:
|
|
79
|
+
* - detailByData: Tìm kiếm thông qua mảng dữ liệu tĩnh được cung cấp
|
|
80
|
+
* - detailByFunction: Gọi functionGetData để lấy dữ liệu mới, sau đó tìm kiếm
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```typescript
|
|
84
|
+
* const params = new UtilsHttpParamsRequest({fromObject:{keys:'1',fieldKey:'id'}});
|
|
85
|
+
* const mockDetail = returnDetailObject<User>(params, userData);
|
|
86
|
+
* const user = await mockDetail.detailByData();
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
export const returnDetailObject = (httpParams, data, functionGetData, ignoreSplit, splitOperator) => {
|
|
90
|
+
const keysPrams = httpParams.get('keys');
|
|
91
|
+
const fieldKey = httpParams.get('fieldKey') || 'id';
|
|
92
|
+
const dataResponseOject = httpParams.get('dataResponseOject');
|
|
93
|
+
return {
|
|
94
|
+
detailByData: async (keys) => {
|
|
95
|
+
return filterData(fieldKey, data, keys ?? keysPrams, dataResponseOject, ignoreSplit, splitOperator);
|
|
96
|
+
},
|
|
97
|
+
detailByFunction: async (keys) => {
|
|
98
|
+
if (!functionGetData) {
|
|
99
|
+
return await filterData(fieldKey, undefined, undefined, dataResponseOject, ignoreSplit, splitOperator);
|
|
100
|
+
}
|
|
101
|
+
let dataResult = functionGetData();
|
|
102
|
+
try {
|
|
103
|
+
if (dataResult['subscribe']) {
|
|
104
|
+
dataResult = await lastValueFrom(dataResult);
|
|
105
|
+
}
|
|
106
|
+
if (dataResult['then']) {
|
|
107
|
+
dataResult = await dataResult;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
catch (_) {
|
|
111
|
+
dataResult = { data: [] };
|
|
112
|
+
}
|
|
113
|
+
data = dataResult.data;
|
|
114
|
+
return await filterData(fieldKey, data, keys || keysPrams, dataResponseOject, ignoreSplit, splitOperator);
|
|
115
|
+
},
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
const filterData = (fieldKey, data, keys, dataResponseOject, ignoreSplit, splitOperator) => {
|
|
119
|
+
if (!data || typeof data !== 'object' || isNil(keys) || keys === '') {
|
|
120
|
+
return {
|
|
121
|
+
code: 200,
|
|
122
|
+
data: undefined,
|
|
123
|
+
paging: {},
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
data = data || [];
|
|
127
|
+
if (!(data instanceof Array)) {
|
|
128
|
+
data = [data];
|
|
129
|
+
}
|
|
130
|
+
const result = [];
|
|
131
|
+
if (!ignoreSplit && typeof keys === 'string') {
|
|
132
|
+
keys = keys.split(splitOperator || ',');
|
|
133
|
+
}
|
|
134
|
+
if (typeof keys === 'number' || typeof keys === 'boolean' || (typeof keys === 'string' && ignoreSplit)) {
|
|
135
|
+
keys = [keys];
|
|
136
|
+
}
|
|
137
|
+
keys.forEach((key) => {
|
|
138
|
+
const resultFilter = data?.filter((elData) => isEqual(get(elData, fieldKey), key, { ignoreExactlyDataType: true }));
|
|
139
|
+
if (resultFilter && resultFilter.length) {
|
|
140
|
+
result.push(...resultFilter);
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
return {
|
|
144
|
+
code: 200,
|
|
145
|
+
data: result.length ? (dataResponseOject ? result[0] : result) : undefined,
|
|
146
|
+
paging: {},
|
|
147
|
+
};
|
|
148
|
+
};
|
|
149
|
+
const per_page = 20;
|
|
150
|
+
const total_items = per_page * 150 + 15;
|
|
151
|
+
export const getConfigListDataDemo = (httpParamsDetail = new UtilsHttpParamsRequest(), objectData, functionBuildObject) => {
|
|
152
|
+
if (!objectData) {
|
|
153
|
+
objectData = {
|
|
154
|
+
id: '',
|
|
155
|
+
name: 'item positon index ',
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
const data = [...Array(total_items).keys()].map((_, index) => {
|
|
159
|
+
if (functionBuildObject) {
|
|
160
|
+
return functionBuildObject(`${+index + 1}`);
|
|
161
|
+
}
|
|
162
|
+
const obj = {};
|
|
163
|
+
Object.keys(objectData).forEach((key) => {
|
|
164
|
+
set(obj, key, `${objectData[key]}${+index + 1}`);
|
|
165
|
+
});
|
|
166
|
+
return obj;
|
|
167
|
+
});
|
|
168
|
+
const listService = returnListObject(data);
|
|
169
|
+
const detailService = returnDetailObject(httpParamsDetail, data, undefined, false, ';');
|
|
170
|
+
return {
|
|
171
|
+
list: listService.listPaging,
|
|
172
|
+
detailByData: detailService.detailByData,
|
|
173
|
+
};
|
|
174
|
+
};
|
|
175
|
+
/**
|
|
176
|
+
* Hàm phân trang dữ liệu từ một mảng
|
|
177
|
+
* @param data - Mảng dữ liệu cần phân trang
|
|
178
|
+
* @param page - Số trang hiện tại (bắt đầu từ 1)
|
|
179
|
+
* @param per_page - Số lượng item trên mỗi trang
|
|
180
|
+
* @returns Đối tượng chứa dữ liệu đã phân trang và thông tin phân trang
|
|
181
|
+
*/
|
|
182
|
+
export const pagingToList = (data, page, per_page) => {
|
|
183
|
+
if (!data || !Array.isArray(data)) {
|
|
184
|
+
return {
|
|
185
|
+
code: 200,
|
|
186
|
+
data: [],
|
|
187
|
+
paging: {
|
|
188
|
+
page: page,
|
|
189
|
+
per_page: per_page,
|
|
190
|
+
total_items: 0,
|
|
191
|
+
total_pages: 0,
|
|
192
|
+
},
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
const start = (page - 1) * per_page;
|
|
196
|
+
const end = start + per_page;
|
|
197
|
+
const total_pages = Math.ceil(data.length / per_page);
|
|
198
|
+
const dataByPage = data.slice(start, end);
|
|
199
|
+
return {
|
|
200
|
+
code: 200,
|
|
201
|
+
data: dataByPage,
|
|
202
|
+
paging: {
|
|
203
|
+
page: page > total_pages ? total_pages : page,
|
|
204
|
+
per_page: per_page,
|
|
205
|
+
total_items: data.length,
|
|
206
|
+
total_pages: total_pages,
|
|
207
|
+
},
|
|
208
|
+
};
|
|
209
|
+
};
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLW1vY2t1cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvc2VydmljZXMvaHR0cC1yZXF1ZXN0L3NyYy9hcGktbW9ja3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRixPQUFPLEVBQWMsS0FBSyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRW5FOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUVILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQzlCLElBQWlCLEVBQ2pCLGVBQWtDLEVBS2xDLEVBQUU7SUFDRixPQUFPO1FBQ0wsSUFBSSxFQUFFLEtBQUssSUFBOEQsRUFBRTtZQUN6RSxJQUFJLGVBQWUsRUFBRSxDQUFDO2dCQUNwQixJQUFJLEdBQUcsZUFBZSxFQUFFLENBQUM7WUFDM0IsQ0FBQztZQUNELE1BQU0sYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLEdBQUc7Z0JBQ1QsSUFBSSxFQUFHLElBQVksSUFBSSxFQUFFO2dCQUN6QixNQUFNLEVBQUUsRUFBRTthQUNYLENBQUM7UUFDSixDQUFDO1FBQ0QsY0FBYyxFQUFFLEdBQWdFLEVBQUU7WUFDaEYsSUFBSSxlQUFlLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxHQUFHLGVBQWUsRUFBRSxDQUFDO1lBQzNCLENBQUM7WUFFRCxPQUFPLEVBQUUsQ0FBQztnQkFDUixJQUFJLEVBQUUsR0FBRztnQkFDVCxJQUFJLEVBQUcsSUFBWSxJQUFJLEVBQUU7Z0JBQ3pCLE1BQU0sRUFBRSxFQUFFO2FBQ1gsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FB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QztJQUMxQyxPQUFPO1FBQ0wsSUFBSSxFQUFFLEdBQUc7UUFDVCxJQUFJLEVBQUUsVUFBVTtRQUNoQixNQUFNLEVBQUU7WUFDTixJQUFJLEVBQUUsSUFBSSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQzdDLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFdBQVcsRUFBRSxJQUFJLENBQUMsTUFBTTtZQUN4QixXQUFXLEVBQUUsV0FBVztTQUN6QjtLQUNGLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlcyc7XG5pbXBvcnQgeyBVdGlsc0h0dHBQYXJhbXNSZXF1ZXN0LCBnZXQsIGlzTmlsLCBzZXQsIGlzRXF1YWwgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBkZWxheSwgbGFzdFZhbHVlRnJvbSwgb2YsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogVHLhuqMgduG7gSBjw6FjIHBoxrDGoW5nIHRo4bupYyDEkeG7gyB44butIGzDvSBkYW5oIHPDoWNoIGThu68gbGnhu4d1IG1vY2tcbiAqIEBwYXJhbSBkYXRhIC0gTeG6o25nIGThu68gbGnhu4d1IG3hurdjIMSR4buLbmggxJHhu4MgbW9ja1xuICogQHBhcmFtIGZ1bmN0aW9uR2V0RGF0YSAtIEjDoG0gdMO5eSBjaOG7jW4gxJHhu4MgbOG6pXkgZOG7ryBsaeG7h3UgxJHhu5luZyB0aGF5IHbDrCBz4butIGThu6VuZyBkYXRhIG3hurdjIMSR4buLbmhcbiAqIEByZXR1cm5zIMSQ4buRaSB0xrDhu6NuZyBjaOG7qWEgY8OhYyBwaMawxqFuZyB0aOG7qWM6XG4gKiAgIC0gbGlzdDogVHLhuqMgduG7gSBQcm9taXNlIHbhu5tpIHRvw6BuIGLhu5kgZOG7ryBsaeG7h3UgKGPDsyBkZWxheSAyNTBtcylcbiAqICAgLSBsaXN0T2JzZXJ2YWJsZTogVHLhuqMgduG7gSBPYnNlcnZhYmxlIHbhu5tpIHRvw6BuIGLhu5kgZOG7ryBsaeG7h3UgKGPDsyBkZWxheSAyNTBtcylcbiAqICAgLSBsaXN0UGFnaW5nOiBUcuG6oyB24buBIFByb21pc2UgduG7m2kgZOG7ryBsaeG7h3UgxJHDoyBwaMOibiB0cmFuZyBk4buxYSB0csOqbiBwYXJhbXMgKGPDsyBkZWxheSAyNTBtcylcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbW9ja0RhdGEgPSBbeyBpZDogMSwgbmFtZTogJ0l0ZW0gMScgfSwgeyBpZDogMiwgbmFtZTogJ0l0ZW0gMicgfV07XG4gKiBjb25zdCBsaXN0U2VydmljZSA9IHJldHVybkxpc3RPYmplY3QobW9ja0RhdGEpO1xuICpcbiAqIC8vIEzhuqV5IHRvw6BuIGLhu5kgZOG7ryBsaeG7h3VcbiAqIGNvbnN0IGFsbERhdGEgPSBhd2FpdCBsaXN0U2VydmljZS5saXN0KCk7XG4gKlxuICogLy8gTOG6pXkgZOG7ryBsaeG7h3UgcGjDom4gdHJhbmdcbiAqIGNvbnN0IHBhcmFtcyA9IG5ldyBVdGlsc0h0dHBQYXJhbXNSZXF1ZXN0KCk7XG4gKiBwYXJhbXMuc2V0KCdwYWdlJywgJzEnKTtcbiAqIHBhcmFtcy5zZXQoJ3Blcl9wYWdlJywgJzEwJyk7XG4gKiBjb25zdCBwYWdlZERhdGEgPSBhd2FpdCBsaXN0U2VydmljZS5saXN0UGFnaW5nKHBhcmFtcyk7XG4gKiBgYGBcbiAqL1xuXG5leHBvcnQgY29uc3QgcmV0dXJuTGlzdE9iamVjdCA9IChcbiAgZGF0YT86IEFycmF5PGFueT4sXG4gIGZ1bmN0aW9uR2V0RGF0YT86ICgpID0+IEFycmF5PGFueT5cbik6IHtcbiAgbGlzdDogPFR5cGVSZXNwb25zZSA9IGFueT4oKSA9PiBQcm9taXNlPElIdHRwUmVzcG9uc2U8VHlwZVJlc3BvbnNlPj47XG4gIGxpc3RPYnNlcnZhYmxlOiA8VHlwZVJlc3BvbnNlID0gYW55PigpID0+IE9ic2VydmFibGU8SUh0dHBSZXNwb25zZTxUeXBlUmVzcG9uc2U+PjtcbiAgbGlzdFBhZ2luZzogPFR5cGVSZXNwb25zZSA9IGFueT4ocGFyYW1zOiBVdGlsc0h0dHBQYXJhbXNSZXF1ZXN0KSA9PiBQcm9taXNlPElIdHRwUmVzcG9uc2U8VHlwZVJlc3BvbnNlPj47XG59ID0+IHtcbiAgcmV0dXJuIHtcbiAgICBsaXN0OiBhc3luYyA8VHlwZVJlc3BvbnNlID0gYW55PigpOiBQcm9taXNlPElIdHRwUmVzcG9uc2U8VHlwZVJlc3BvbnNlPj4gPT4ge1xuICAgICAgaWYgKGZ1bmN0aW9uR2V0RGF0YSkge1xuICAgICAgICBkYXRhID0gZnVuY3Rpb25HZXREYXRhKCk7XG4gICAgICB9XG4gICAgICBhd2FpdCBsYXN0VmFsdWVGcm9tKHRpbWVyKDI1MCkpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29kZTogMjAwLFxuICAgICAgICBkYXRhOiAoZGF0YSBhcyBhbnkpIHx8IFtdLFxuICAgICAgICBwYWdpbmc6IHt9LFxuICAgICAgfTtcbiAgICB9LFxuICAgIGxpc3RPYnNlcnZhYmxlOiA8VHlwZVJlc3BvbnNlID0gYW55PigpOiBPYnNlcnZhYmxlPElIdHRwUmVzcG9uc2U8VHlwZVJlc3BvbnNlPj4gPT4ge1xuICAgICAgaWYgKGZ1bmN0aW9uR2V0RGF0YSkge1xuICAgICAgICBkYXRhID0gZnVuY3Rpb25HZXREYXRhKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvZih7XG4gICAgICAgIGNvZGU6IDIwMCxcbiAgICAgICAgZGF0YTogKGRhdGEgYXMgYW55KSB8fCBbXSxcbiAgICAgICAgcGFnaW5nOiB7fSxcbiAgICAgIH0pLnBpcGUoZGVsYXkoMjUwKSk7XG4gICAgfSxcbiAgICBsaXN0UGFnaW5nOiBhc3luYyA8VHlwZVJlc3BvbnNlID0gYW55PihwYXJhbXM6IFV0aWxzSHR0cFBhcmFtc1JlcXVlc3QpOiBQcm9taXNlPElIdHRwUmVzcG9uc2U8VHlwZVJlc3BvbnNlPj4gPT4ge1xuICAgICAgaWYgKGZ1bmN0aW9uR2V0RGF0YSkge1xuICAgICAgICBkYXRhID0gZnVuY3Rpb25HZXREYXRhKCk7XG4gICAgICB9XG4gICAgICBjb25zdCBwYWdlID0gcGFyc2VJbnQocGFyYW1zLmdldCgncGFnZScpIHx8ICcxJyk7XG4gICAgICBjb25zdCBwZXJfcGFnZSA9IHBhcnNlSW50KHBhcmFtcy5nZXQoJ3Blcl9wYWdlJykgfHwgJzMwJyk7XG4gICAgICBjb25zdCByZXN1bHQgPSBwYWdpbmdUb0xpc3QoZGF0YSBhcyBBcnJheTxhbnk+LCBwYWdlLCBwZXJfcGFnZSk7XG5cbiAgICAgIGF3YWl0IGxhc3RWYWx1ZUZyb20odGltZXIoMjUwKSk7XG5cbiAgICAgIHJldHVybiByZXN1bHQgYXMgSUh0dHBSZXNwb25zZTxUeXBlUmVzcG9uc2U+O1xuICAgIH0sXG4gIH07XG59O1xuXG4vKipcbiAqIFThuqFvIG3hu5l0IMSR4buRaSB0xrDhu6NuZyBtb2NrIGRldGFpbCB24bubaSBjw6FjIHBoxrDGoW5nIHRo4bupYyDEkeG7gyBs4bqleSBi4bqjbiBnaGkgcmnDqm5nIGzhursgdGhlbyBraMOzYS5cbiAqIEjhu5cgdHLhu6MgY+G6oyBt4bqjbmcgZOG7ryBsaeG7h3UgdMSpbmggdsOgIGPDoWMgaMOgbSBk4buvIGxp4buHdSDEkeG7mW5nLlxuICpcbiAqIEB0ZW1wbGF0ZSBUeXBlUmVzcG9uc2UgLSBLaeG7g3UgZOG7ryBsaeG7h3UgcGjhuqNuIGjhu5NpIG1vbmcgxJHhu6NpXG4gKiBAdGVtcGxhdGUgVHlwZVBhcmFtcyAtIEtp4buDdSB0aGFtIHPhu5EgSFRUUCAobeG6t2MgxJHhu4tuaCBsw6AgYW55KVxuICpcbiAqIEBwYXJhbSBodHRwUGFyYW1zIC0gVGhhbSBz4buRIEhUVFAgY2jhu6lhOlxuICogICAtIGtleXM6IEtow7NhIChob+G6t2MgY8OhYyBraMOzYSkgY+G6p24gdMOsbSBraeG6v21cbiAqICAgLSBmaWVsZEtleTogVMOqbiB0csaw4budbmcgxJHhu4Mgc28ga2jhu5twICht4bq3YyDEkeG7i25oIGzDoCAnaWQnKVxuICogICAtIGRhdGFSZXNwb25zZU9qZWN0OiBD4budIGJvb2xlYW4gxJHhu4MgxJHhu4tuaCBk4bqhbmcgxJHhu5FpIHTGsOG7o25nIHBo4bqjbiBo4buTaVxuICogQHBhcmFtIGRhdGEgLSBN4bqjbmcgZOG7ryBsaeG7h3UgdMSpbmggdMO5eSBjaOG7jW4gxJHhu4MgdMOsbSBraeG6v21cbiAqIEBwYXJhbSBmdW5jdGlvbkdldERhdGEgLSBIw6BtIHTDuXkgY2jhu41uIHRy4bqjIHbhu4EgZOG7ryBsaeG7h3UgKGPDsyB0aOG7gyBsw6AgUHJvbWlzZSBob+G6t2MgT2JzZXJ2YWJsZSlcbiAqIEBwYXJhbSBpZ25vcmVTcGxpdCAtIE7hur91IHRydWUsIGNvaSBrZXlzIG5oxrAgbeG7mXQgZ2nDoSB0cuG7iyDEkcahbiB0aGF5IHbDrCB0w6FjaCBjaHXhu5dpXG4gKiBAcGFyYW0gc3BsaXRPcGVyYXRvciAtIFRvw6FuIHThu60gdMO5eSBjaOG7iW5oIMSR4buDIHTDoWNoIGtleXMgKG3hurdjIMSR4buLbmggbMOgIGThuqV1IHBo4bqpeSlcbiAqXG4gKiBAcmV0dXJucyDEkOG7kWkgdMaw4bujbmcgduG7m2kgY8OhYyBwaMawxqFuZyB0aOG7qWM6XG4gKiAgIC0gZGV0YWlsQnlEYXRhOiBUw6xtIGtp4bq/bSB0aMO0bmcgcXVhIG3huqNuZyBk4buvIGxp4buHdSB0xKluaCDEkcaw4bujYyBjdW5nIGPhuqVwXG4gKiAgIC0gZGV0YWlsQnlGdW5jdGlvbjogR+G7jWkgZnVuY3Rpb25HZXREYXRhIMSR4buDIGzhuqV5IGThu68gbGnhu4d1IG3hu5tpLCBzYXUgxJHDsyB0w6xtIGtp4bq/bVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBwYXJhbXMgPSBuZXcgVXRpbHNIdHRwUGFyYW1zUmVxdWVzdCh7ZnJvbU9iamVjdDp7a2V5czonMScsZmllbGRLZXk6J2lkJ319KTtcbiAqIGNvbnN0IG1vY2tEZXRhaWwgPSByZXR1cm5EZXRhaWxPYmplY3Q8VXNlcj4ocGFyYW1zLCB1c2VyRGF0YSk7XG4gKiBjb25zdCB1c2VyID0gYXdhaXQgbW9ja0RldGFpbC5kZXRhaWxCeURhdGEoKTtcbiAqIGBgYFxuICovXG5cbmV4cG9ydCBjb25zdCByZXR1cm5EZXRhaWxPYmplY3QgPSA8VHlwZVJlc3BvbnNlLCBUeXBlUGFyYW1zID0gYW55PihcbiAgaHR0cFBhcmFtczogVXRpbHNIdHRwUGFyYW1zUmVxdWVzdDxUeXBlUGFyYW1zPiB8IEh0dHBQYXJhbXMsXG4gIGRhdGE/OiBBcnJheTxhbnk+LFxuICBmdW5jdGlvbkdldERhdGE/OiAoKSA9PiBQcm9taXNlPElIdHRwUmVzcG9uc2U8VHlwZVJlc3BvbnNlPj4gfCBPYnNlcnZhYmxlPElIdHRwUmVzcG9uc2U8VHlwZVJlc3BvbnNlPj4sXG4gIGlnbm9yZVNwbGl0PzogYm9vbGVhbixcbiAgc3BsaXRPcGVyYXRvcj86IHN0cmluZ1xuKToge1xuICBkZXRhaWxCeURhdGE6IDxUeXBlUmVzcG9uc2UgPSBhbnk+KGtleXM/OiBhbnkpID0+IFByb21pc2U8SUh0dHBSZXNwb25zZTxUeXBlUmVzcG9uc2U+PjtcbiAgZGV0YWlsQnlGdW5jdGlvbjogPFR5cGVSZXNwb25zZSA9IGFueT4oa2V5cz86IGFueSkgPT4gUHJvbWlzZTxJSHR0cFJlc3BvbnNlPFR5cGVSZXNwb25zZT4+O1xufSA9PiB7XG4gIGNvbnN0IGtleXNQcmFtczogYW55ID0gaHR0cFBhcmFtcy5nZXQoJ2tleXMnKTtcbiAgY29uc3QgZmllbGRLZXk6IHN0cmluZyA9IGh0dHBQYXJhbXMuZ2V0KCdmaWVsZEtleScpIHx8ICdpZCc7XG4gIGNvbnN0IGRhdGFSZXNwb25zZU9qZWN0OiBhbnkgPSBodHRwUGFyYW1zLmdldCgnZGF0YVJlc3BvbnNlT2plY3QnKTtcblxuICByZXR1cm4ge1xuICAgIGRldGFpbEJ5RGF0YTogYXN5bmMgPFR5cGVSZXNwb25zZT4oa2V5cz86IGFueSk6IFByb21pc2U8SUh0dHBSZXNwb25zZTxUeXBlUmVzcG9uc2U+PiA9PiB7XG4gICAgICByZXR1cm4gZmlsdGVyRGF0YTxUeXBlUmVzcG9uc2U+KGZpZWxkS2V5LCBkYXRhLCBrZXlzID8/IGtleXNQcmFtcywgZGF0YVJlc3BvbnNlT2plY3QsIGlnbm9yZVNwbGl0LCBzcGxpdE9wZXJhdG9yKTtcbiAgICB9LFxuXG4gICAgZGV0YWlsQnlGdW5jdGlvbjogYXN5bmMgPFR5cGVSZXNwb25zZT4oa2V5cz86IGFueSk6IFByb21pc2U8SUh0dHBSZXNwb25zZTxUeXBlUmVzcG9uc2U+PiA9PiB7XG4gICAgICBpZiAoIWZ1bmN0aW9uR2V0RGF0YSkge1xuICAgICAgICByZXR1cm4gYXdhaXQgZmlsdGVyRGF0YTxUeXBlUmVzcG9uc2U+KGZpZWxkS2V5LCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgZGF0YVJlc3BvbnNlT2plY3QsIGlnbm9yZVNwbGl0LCBzcGxpdE9wZXJhdG9yKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGRhdGFSZXN1bHQ6IGFueSA9IGZ1bmN0aW9uR2V0RGF0YSgpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBpZiAoZGF0YVJlc3VsdFsnc3Vic2NyaWJlJ10pIHtcbiAgICAgICAgICBkYXRhUmVzdWx0ID0gYXdhaXQgbGFzdFZhbHVlRnJvbShkYXRhUmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YVJlc3VsdFsndGhlbiddKSB7XG4gICAgICAgICAgZGF0YVJlc3VsdCA9IGF3YWl0IGRhdGFSZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgICAgZGF0YVJlc3VsdCA9IHsgZGF0YTogW10gfTtcbiAgICAgIH1cblxuICAgICAgZGF0YSA9IGRhdGFSZXN1bHQuZGF0YTtcblxuICAgICAgcmV0dXJuIGF3YWl0IGZpbHRlckRhdGE8VHlwZVJlc3BvbnNlPihmaWVsZEtleSwgZGF0YSwga2V5cyB8fCBrZXlzUHJhbXMsIGRhdGFSZXNwb25zZU9qZWN0LCBpZ25vcmVTcGxpdCwgc3BsaXRPcGVyYXRvcik7XG4gICAgfSxcbiAgfTtcbn07XG5cbmNvbnN0IGZpbHRlckRhdGEgPSA8VHlwZVJlc3BvbnNlPihmaWVsZEtleTogc3RyaW5nLCBkYXRhPzogQXJyYXk8YW55Piwga2V5cz86IGFueSwgZGF0YVJlc3BvbnNlT2plY3Q/OiBib29sZWFuLCBpZ25vcmVTcGxpdD86IGJvb2xlYW4sIHNwbGl0T3BlcmF0b3I/OiBzdHJpbmcpOiBJSHR0cFJlc3BvbnNlPFR5cGVSZXNwb25zZT4gPT4ge1xuICBpZiAoIWRhdGEgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnIHx8IGlzTmlsKGtleXMpIHx8IGtleXMgPT09ICcnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvZGU6IDIwMCxcbiAgICAgIGRhdGE6IHVuZGVmaW5lZCxcbiAgICAgIHBhZ2luZzoge30sXG4gICAgfTtcbiAgfVxuXG4gIGRhdGEgPSBkYXRhIHx8IFtdO1xuXG4gIGlmICghKGRhdGEgaW5zdGFuY2VvZiBBcnJheSkpIHtcbiAgICBkYXRhID0gW2RhdGFdO1xuICB9XG4gIGNvbnN0IHJlc3VsdDogYW55ID0gW107XG5cbiAgaWYgKCFpZ25vcmVTcGxpdCAmJiB0eXBlb2Yga2V5cyA9PT0gJ3N0cmluZycpIHtcbiAgICBrZXlzID0ga2V5cy5zcGxpdChzcGxpdE9wZXJhdG9yIHx8ICcsJyk7XG4gIH1cblxuICBpZiAodHlwZW9mIGtleXMgPT09ICdudW1iZXInIHx8IHR5cGVvZiBrZXlzID09PSAnYm9vbGVhbicgfHwgKHR5cGVvZiBrZXlzID09PSAnc3RyaW5nJyAmJiBpZ25vcmVTcGxpdCkpIHtcbiAgICBrZXlzID0gW2tleXNdO1xuICB9XG5cbiAga2V5cy5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHJlc3VsdEZpbHRlciA9IGRhdGE/LmZpbHRlcigoZWxEYXRhOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSA9PiBpc0VxdWFsKGdldChlbERhdGEsIGZpZWxkS2V5KSwga2V5LCB7IGlnbm9yZUV4YWN0bHlEYXRhVHlwZTogdHJ1ZSB9KSk7XG5cbiAgICBpZiAocmVzdWx0RmlsdGVyICYmIHJlc3VsdEZpbHRlci5sZW5ndGgpIHtcbiAgICAgIHJlc3VsdC5wdXNoKC4uLnJlc3VsdEZpbHRlcik7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIGNvZGU6IDIwMCxcbiAgICBkYXRhOiByZXN1bHQubGVuZ3RoID8gKGRhdGFSZXNwb25zZU9qZWN0ID8gcmVzdWx0WzBdIDogcmVzdWx0KSA6IHVuZGVmaW5lZCxcbiAgICBwYWdpbmc6IHt9LFxuICB9O1xufTtcblxuY29uc3QgcGVyX3BhZ2UgPSAyMDtcbmNvbnN0IHRvdGFsX2l0ZW1zID0gcGVyX3BhZ2UgKiAxNTAgKyAxNTtcblxuZXhwb3J0IGNvbnN0IGdldENvbmZpZ0xpc3REYXRhRGVtbyA9IChodHRwUGFyYW1zRGV0YWlsOiBVdGlsc0h0dHBQYXJhbXNSZXF1ZXN0PGFueT4gPSBuZXcgVXRpbHNIdHRwUGFyYW1zUmVxdWVzdCgpLCBvYmplY3REYXRhPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiwgZnVuY3Rpb25CdWlsZE9iamVjdD86IChudW1JbmNyZW1lbnQ6IHN0cmluZykgPT4gUmVjb3JkPHN0cmluZywgc3RyaW5nPikgPT4ge1xuICBpZiAoIW9iamVjdERhdGEpIHtcbiAgICBvYmplY3REYXRhID0ge1xuICAgICAgaWQ6ICcnLFxuICAgICAgbmFtZTogJ2l0ZW0gcG9zaXRvbiBpbmRleCAnLFxuICAgIH07XG4gIH1cblxuICBjb25zdCBkYXRhID0gWy4uLkFycmF5KHRvdGFsX2l0ZW1zKS5rZXlzKCldLm1hcCgoXywgaW5kZXgpID0+IHtcbiAgICBpZiAoZnVuY3Rpb25CdWlsZE9iamVjdCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uQnVpbGRPYmplY3QoYCR7K2luZGV4ICsgMX1gKTtcbiAgICB9XG4gICAgY29uc3Qgb2JqOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgT2JqZWN0LmtleXMob2JqZWN0RGF0YSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBzZXQob2JqLCBrZXksIGAke29iamVjdERhdGFba2V5XX0keytpbmRleCArIDF9YCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG9iajtcbiAgfSk7XG5cbiAgY29uc3QgbGlzdFNlcnZpY2UgPSByZXR1cm5MaXN0T2JqZWN0KGRhdGEpO1xuICBjb25zdCBkZXRhaWxTZXJ2aWNlID0gcmV0dXJuRGV0YWlsT2JqZWN0KGh0dHBQYXJhbXNEZXRhaWwsIGRhdGEsIHVuZGVmaW5lZCwgZmFsc2UsICc7Jyk7XG4gIHJldHVybiB7XG4gICAgbGlzdDogbGlzdFNlcnZpY2UubGlzdFBhZ2luZyxcbiAgICBkZXRhaWxCeURhdGE6IGRldGFpbFNlcnZpY2UuZGV0YWlsQnlEYXRhLFxuICB9O1xufTtcblxuLyoqXG4gKiBIw6BtIHBow6JuIHRyYW5nIGThu68gbGnhu4d1IHThu6sgbeG7mXQgbeG6o25nXG4gKiBAcGFyYW0gZGF0YSAtIE3huqNuZyBk4buvIGxp4buHdSBj4bqnbiBwaMOibiB0cmFuZ1xuICogQHBhcmFtIHBhZ2UgLSBT4buRIHRyYW5nIGhp4buHbiB04bqhaSAoYuG6r3QgxJHhuqd1IHThu6sgMSlcbiAqIEBwYXJhbSBwZXJfcGFnZSAtIFPhu5EgbMaw4bujbmcgaXRlbSB0csOqbiBt4buXaSB0cmFuZ1xuICogQHJldHVybnMgxJDhu5FpIHTGsOG7o25nIGNo4bupYSBk4buvIGxp4buHdSDEkcOjIHBow6JuIHRyYW5nIHbDoCB0aMO0bmcgdGluIHBow6JuIHRyYW5nXG4gKi9cbmV4cG9ydCBjb25zdCBwYWdpbmdUb0xpc3QgPSAoZGF0YTogQXJyYXk8YW55PiwgcGFnZTogbnVtYmVyLCBwZXJfcGFnZTogbnVtYmVyKSA9PiB7XG4gIGlmICghZGF0YSB8fCAhQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgIHJldHVybiB7XG4gICAgICBjb2RlOiAyMDAsXG4gICAgICBkYXRhOiBbXSxcbiAgICAgIHBhZ2luZzoge1xuICAgICAgICBwYWdlOiBwYWdlLFxuICAgICAgICBwZXJfcGFnZTogcGVyX3BhZ2UsXG4gICAgICAgIHRvdGFsX2l0ZW1zOiAwLFxuICAgICAgICB0b3RhbF9wYWdlczogMCxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuICBjb25zdCBzdGFydCA9IChwYWdlIC0gMSkgKiBwZXJfcGFnZTtcbiAgY29uc3QgZW5kID0gc3RhcnQgKyBwZXJfcGFnZTtcbiAgY29uc3QgdG90YWxfcGFnZXMgPSBNYXRoLmNlaWwoZGF0YS5sZW5ndGggLyBwZXJfcGFnZSk7XG4gIGNvbnN0IGRhdGFCeVBhZ2UgPSBkYXRhLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICByZXR1cm4ge1xuICAgIGNvZGU6IDIwMCxcbiAgICBkYXRhOiBkYXRhQnlQYWdlLFxuICAgIHBhZ2luZzoge1xuICAgICAgcGFnZTogcGFnZSA+IHRvdGFsX3BhZ2VzID8gdG90YWxfcGFnZXMgOiBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlcl9wYWdlLFxuICAgICAgdG90YWxfaXRlbXM6IGRhdGEubGVuZ3RoLFxuICAgICAgdG90YWxfcGFnZXM6IHRvdGFsX3BhZ2VzLFxuICAgIH0sXG4gIH07XG59O1xuIl19
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
import { HttpParams } from '@angular/common/http';
|
|
3
|
+
import { inject, Injectable, Injector } from '@angular/core';
|
|
4
|
+
import { UtilsCache, get, getKeyCacheByArrayObject, isEmpty, set } from '@libs-ui/utils';
|
|
5
|
+
import { lastValueFrom } from 'rxjs';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class LibsUiHttpRequestService {
|
|
8
|
+
injector = inject(Injector);
|
|
9
|
+
/** Chứa dữ liệu cache memory */
|
|
10
|
+
serviceStore = new Map();
|
|
11
|
+
async callApi(httpRequestConfig) {
|
|
12
|
+
if (!httpRequestConfig || !httpRequestConfig.functionName) {
|
|
13
|
+
throw 'http request config not exactly httpRequestConfig';
|
|
14
|
+
}
|
|
15
|
+
const serviceOther = get(httpRequestConfig, 'serviceOther'); // TODO: sẽ xóa khi migrate hết component
|
|
16
|
+
if (serviceOther) {
|
|
17
|
+
set(httpRequestConfig, 'objectInstance', serviceOther);
|
|
18
|
+
}
|
|
19
|
+
const { objectInstance, keyCache, functionName, argumentsValue, serviceClass } = httpRequestConfig;
|
|
20
|
+
if (!objectInstance && !serviceClass) {
|
|
21
|
+
throw `http request config not exactly objectInstance or serviceName`;
|
|
22
|
+
}
|
|
23
|
+
const instance = objectInstance || this.injector.get(serviceClass);
|
|
24
|
+
if (!instance) {
|
|
25
|
+
throw `http request notfound service instance`;
|
|
26
|
+
}
|
|
27
|
+
const methodInstance = instance[functionName];
|
|
28
|
+
if (!methodInstance) {
|
|
29
|
+
throw `http request config notfound methodInstance name: ${String(functionName)}`;
|
|
30
|
+
}
|
|
31
|
+
const keyCacheMD5 = getKeyCacheByArrayObject(keyCache || '', argumentsValue);
|
|
32
|
+
const cacheData = await this.getCacheData(httpRequestConfig, keyCacheMD5);
|
|
33
|
+
if (cacheData) {
|
|
34
|
+
return Promise.resolve(cacheData);
|
|
35
|
+
}
|
|
36
|
+
let callResponse = methodInstance.apply(instance, argumentsValue);
|
|
37
|
+
if (!callResponse.then) {
|
|
38
|
+
callResponse = lastValueFrom(callResponse);
|
|
39
|
+
}
|
|
40
|
+
const res = await callResponse;
|
|
41
|
+
return await this.setCacheData(res, httpRequestConfig, keyCacheMD5);
|
|
42
|
+
}
|
|
43
|
+
async getCacheData(httpRequestConfig, keyCache) {
|
|
44
|
+
const { cacheType, convertResponseData } = httpRequestConfig;
|
|
45
|
+
if (!cacheType || !keyCache) {
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
if (cacheType === 'service') {
|
|
49
|
+
const data = this.serviceStore.get(keyCache);
|
|
50
|
+
return data ? (convertResponseData ? convertResponseData(data) : data) : data;
|
|
51
|
+
}
|
|
52
|
+
const data = await UtilsCache.GetAsync(keyCache, undefined, true);
|
|
53
|
+
return data ? (convertResponseData ? convertResponseData(data) : data) : data;
|
|
54
|
+
}
|
|
55
|
+
async setCacheData(data, httpRequestConfig, keyCache) {
|
|
56
|
+
const { cacheType, clearCache, convertResponseData } = httpRequestConfig;
|
|
57
|
+
if (!cacheType || !keyCache) {
|
|
58
|
+
return convertResponseData ? convertResponseData(data) : data;
|
|
59
|
+
}
|
|
60
|
+
if (clearCache === true) {
|
|
61
|
+
this.clearCache(cacheType, keyCache);
|
|
62
|
+
}
|
|
63
|
+
if (cacheType === 'service') {
|
|
64
|
+
this.serviceStore.set(keyCache, data);
|
|
65
|
+
return convertResponseData ? convertResponseData(data) : data;
|
|
66
|
+
}
|
|
67
|
+
await UtilsCache.SetAsync(keyCache, data, (httpRequestConfig.timeCache || 5) * 60, true);
|
|
68
|
+
return convertResponseData ? convertResponseData(data) : data;
|
|
69
|
+
}
|
|
70
|
+
clearCache(cacheType, keyCache) {
|
|
71
|
+
if (cacheType === 'service') {
|
|
72
|
+
this.serviceStore.delete(keyCache);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
UtilsCache.ClearAsync(keyCache, true);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* @return trả về trạng thái đã load hết item chưa (ví dụ: dựa vào tham số này để quyết định có tiếp tục gọi api khi scroll ko) .
|
|
79
|
+
*/
|
|
80
|
+
updateArguments(argumentsValue, objectGetDataUpdate, pagingStore, keySearch, searchOnline, loadedLastItem, guideAutoUpdateArgumentsValue) {
|
|
81
|
+
if (!argumentsValue || !(argumentsValue instanceof Array) || loadedLastItem) {
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
if (!guideAutoUpdateArgumentsValue) {
|
|
85
|
+
return this.updateArgumentsDefault(argumentsValue, true, pagingStore, keySearch, searchOnline);
|
|
86
|
+
}
|
|
87
|
+
const { paging, search, other, detailById, sortOrderType, sortOrderBy } = guideAutoUpdateArgumentsValue;
|
|
88
|
+
if (search) {
|
|
89
|
+
search.fieldGetValue = 'keySearch';
|
|
90
|
+
this.processUpdateArgumentsValeConfig(argumentsValue, { keySearch }, search);
|
|
91
|
+
}
|
|
92
|
+
if (objectGetDataUpdate?.['storeParamsCallApi'] && typeof objectGetDataUpdate?.['storeParamsCallApi'] === 'object' && !(objectGetDataUpdate?.['storeParamsCallApi']).instanceSort) {
|
|
93
|
+
objectGetDataUpdate['storeParamsCallApi'] = { ...objectGetDataUpdate['storeParamsCallApi'], instanceSort: {} };
|
|
94
|
+
}
|
|
95
|
+
if (sortOrderBy) {
|
|
96
|
+
this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, sortOrderBy);
|
|
97
|
+
}
|
|
98
|
+
if (sortOrderType) {
|
|
99
|
+
this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, sortOrderType);
|
|
100
|
+
}
|
|
101
|
+
if (other && other.length) {
|
|
102
|
+
other.forEach((config) => this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, config));
|
|
103
|
+
}
|
|
104
|
+
if (detailById) {
|
|
105
|
+
detailById.fieldGetValue = detailById.fieldGetValue || detailById.fieldGetValue.trim() || 'key';
|
|
106
|
+
this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, detailById);
|
|
107
|
+
}
|
|
108
|
+
if (isEmpty(paging)) {
|
|
109
|
+
return this.updateArgumentsDefault(argumentsValue, false, pagingStore || this.fakeResponsePagingApi()['paging'], keySearch, searchOnline);
|
|
110
|
+
}
|
|
111
|
+
const { page, before, after } = paging;
|
|
112
|
+
if (page && objectGetDataUpdate) {
|
|
113
|
+
page.preprocessor = (value) => {
|
|
114
|
+
return ++value;
|
|
115
|
+
};
|
|
116
|
+
const valuePage = +this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, page);
|
|
117
|
+
const valueLastPage = +get(objectGetDataUpdate, 'paging.total_pages');
|
|
118
|
+
if ((valuePage && Number(valuePage).valueOf() > Number(valueLastPage).valueOf()) || valueLastPage === 0) {
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
if (before && objectGetDataUpdate && !this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, before) && !get(objectGetDataUpdate, 'paging.fake')) {
|
|
123
|
+
set(objectGetDataUpdate, 'paging.fake', false);
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
if (after && objectGetDataUpdate && !this.processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, after) && !get(objectGetDataUpdate, 'paging.fake')) {
|
|
127
|
+
set(objectGetDataUpdate, 'paging.fake', false);
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
if (!argumentsValue || !argumentsValue.length) {
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
updateArgumentsDefault(argumentsValue, updateSearch, pagingStore, keySearch, searchOnline) {
|
|
136
|
+
if (!argumentsValue || !argumentsValue.length) {
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
for (const index in argumentsValue) {
|
|
140
|
+
let argumentValue = argumentsValue[index];
|
|
141
|
+
if (!(argumentValue instanceof HttpParams)) {
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
const pageValue = argumentValue.get('page');
|
|
145
|
+
if (searchOnline && updateSearch) {
|
|
146
|
+
argumentValue = argumentValue.set('search', keySearch);
|
|
147
|
+
argumentsValue[index] = argumentValue;
|
|
148
|
+
}
|
|
149
|
+
if (argumentValue.has('before')) {
|
|
150
|
+
argumentValue = argumentValue.set('before', pagingStore?.before);
|
|
151
|
+
argumentsValue[index] = argumentValue;
|
|
152
|
+
}
|
|
153
|
+
if (argumentValue.has('after')) {
|
|
154
|
+
argumentValue = argumentValue.set('after', pagingStore?.after);
|
|
155
|
+
argumentsValue[index] = argumentValue;
|
|
156
|
+
}
|
|
157
|
+
if (Number(pageValue).valueOf() === -1) {
|
|
158
|
+
return true;
|
|
159
|
+
}
|
|
160
|
+
if (!pagingStore || pageValue === undefined) {
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
const { page, total_pages } = pagingStore;
|
|
164
|
+
const nextPage = (page || 0) + 1;
|
|
165
|
+
if (nextPage && Number(nextPage).valueOf() > Number(total_pages).valueOf()) {
|
|
166
|
+
return true;
|
|
167
|
+
}
|
|
168
|
+
argumentsValue[index] = argumentValue.set('page', nextPage);
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
processUpdateArgumentsValeConfig(argumentsValue, objectGetDataUpdate, config) {
|
|
174
|
+
if (!config || !objectGetDataUpdate) {
|
|
175
|
+
return undefined;
|
|
176
|
+
}
|
|
177
|
+
if (config.log?.logInputs) {
|
|
178
|
+
console.log('config', config);
|
|
179
|
+
console.log('objectGetDataUpdate', objectGetDataUpdate);
|
|
180
|
+
console.log('argumentsValue', argumentsValue);
|
|
181
|
+
console.log('--------------------------------');
|
|
182
|
+
}
|
|
183
|
+
const { fieldUpdate, fieldGetValue, preprocessor } = config;
|
|
184
|
+
if (!fieldUpdate || !fieldGetValue) {
|
|
185
|
+
return undefined;
|
|
186
|
+
}
|
|
187
|
+
let value = get(objectGetDataUpdate, fieldGetValue);
|
|
188
|
+
if (config.log?.logGetValue) {
|
|
189
|
+
console.log(`value of objectGetDataUpdate[${fieldGetValue}]: `, value);
|
|
190
|
+
}
|
|
191
|
+
if (preprocessor) {
|
|
192
|
+
value = preprocessor(value);
|
|
193
|
+
}
|
|
194
|
+
if (fieldUpdate) {
|
|
195
|
+
let resultOfFieldUpdate = get(argumentsValue, fieldUpdate);
|
|
196
|
+
if (resultOfFieldUpdate instanceof HttpParams) {
|
|
197
|
+
resultOfFieldUpdate = resultOfFieldUpdate.set(config.subFieldUpdate || 'search', value);
|
|
198
|
+
set(argumentsValue, fieldUpdate, resultOfFieldUpdate);
|
|
199
|
+
return value;
|
|
200
|
+
}
|
|
201
|
+
if (resultOfFieldUpdate instanceof Array) {
|
|
202
|
+
resultOfFieldUpdate.push(value);
|
|
203
|
+
return value;
|
|
204
|
+
}
|
|
205
|
+
if (resultOfFieldUpdate instanceof Object) {
|
|
206
|
+
set(resultOfFieldUpdate, config.subFieldUpdate || 'search', value);
|
|
207
|
+
return value;
|
|
208
|
+
}
|
|
209
|
+
set(argumentsValue, fieldUpdate, value);
|
|
210
|
+
return value;
|
|
211
|
+
}
|
|
212
|
+
return value;
|
|
213
|
+
}
|
|
214
|
+
fakeResponsePagingApi() {
|
|
215
|
+
return {
|
|
216
|
+
paging: {
|
|
217
|
+
page: 0,
|
|
218
|
+
total_pages: 1,
|
|
219
|
+
before: '',
|
|
220
|
+
after: '',
|
|
221
|
+
fake: true,
|
|
222
|
+
},
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiHttpRequestService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
226
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiHttpRequestService, providedIn: 'root' });
|
|
227
|
+
}
|
|
228
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiHttpRequestService, decorators: [{
|
|
229
|
+
type: Injectable,
|
|
230
|
+
args: [{
|
|
231
|
+
providedIn: 'root',
|
|
232
|
+
}]
|
|
233
|
+
}] });
|
|
234
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1yZXF1ZXN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2h0dHAtcmVxdWVzdC9zcmMvaHR0cC1yZXF1ZXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsd0JBQXdCLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBTXJDLE1BQU0sT0FBTyx3QkFBd0I7SUFDM0IsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwQyxnQ0FBZ0M7SUFDeEIsWUFBWSxHQUFxQixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRTVDLEtBQUssQ0FBQyxPQUFPLENBQVUsaUJBQXFDO1FBQ2pFLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzFELE1BQU0sbURBQW1ELENBQUM7UUFDNUQsQ0FBQztRQUNELE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBVSxpQkFBaUIsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLHlDQUF5QztRQUUvRyxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBRUQsTUFBTSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQztR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Q1QsSUFBSSxFQUFFLElBQUk7YUFDWDtTQUNGLENBQUM7SUFDSixDQUFDO3dHQWhSVSx3QkFBd0I7NEdBQXhCLHdCQUF3QixjQUZ2QixNQUFNOzs0RkFFUCx3QkFBd0I7a0JBSHBDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElQYWdpbmcgfSBmcm9tICdAbGlicy11aS9pbnRlcmZhY2VzLXR5cGVzJztcbmltcG9ydCB7IFV0aWxzQ2FjaGUsIGdldCwgZ2V0S2V5Q2FjaGVCeUFycmF5T2JqZWN0LCBpc0VtcHR5LCBzZXQgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBsYXN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJR3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWUsIElHdWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZUNvbmZpZywgSUh0dHBSZXF1ZXN0Q29uZmlnIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2luZGV4JztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUh0dHBSZXF1ZXN0U2VydmljZSB7XG4gIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICAvKiogQ2jhu6lhIGThu68gbGnhu4d1IGNhY2hlIG1lbW9yeSAqL1xuICBwcml2YXRlIHNlcnZpY2VTdG9yZTogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXAoKTtcblxuICBwdWJsaWMgYXN5bmMgY2FsbEFwaTxUID0gYW55PihodHRwUmVxdWVzdENvbmZpZzogSUh0dHBSZXF1ZXN0Q29uZmlnKTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKCFodHRwUmVxdWVzdENvbmZpZyB8fCAhaHR0cFJlcXVlc3RDb25maWcuZnVuY3Rpb25OYW1lKSB7XG4gICAgICB0aHJvdyAnaHR0cCByZXF1ZXN0IGNvbmZpZyBub3QgZXhhY3RseSBodHRwUmVxdWVzdENvbmZpZyc7XG4gICAgfVxuICAgIGNvbnN0IHNlcnZpY2VPdGhlciA9IGdldDx1bmtub3duPihodHRwUmVxdWVzdENvbmZpZywgJ3NlcnZpY2VPdGhlcicpOyAvLyBUT0RPOiBz4bq9IHjDs2Ega2hpIG1pZ3JhdGUgaOG6v3QgY29tcG9uZW50XG5cbiAgICBpZiAoc2VydmljZU90aGVyKSB7XG4gICAgICBzZXQoaHR0cFJlcXVlc3RDb25maWcsICdvYmplY3RJbnN0YW5jZScsIHNlcnZpY2VPdGhlcik7XG4gICAgfVxuXG4gICAgY29uc3QgeyBvYmplY3RJbnN0YW5jZSwga2V5Q2FjaGUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRzVmFsdWUsIHNlcnZpY2VDbGFzcyB9ID0gaHR0cFJlcXVlc3RDb25maWc7XG5cbiAgICBpZiAoIW9iamVjdEluc3RhbmNlICYmICFzZXJ2aWNlQ2xhc3MpIHtcbiAgICAgIHRocm93IGBodHRwIHJlcXVlc3QgY29uZmlnIG5vdCBleGFjdGx5IG9iamVjdEluc3RhbmNlIG9yIHNlcnZpY2VOYW1lYDtcbiAgICB9XG4gICAgY29uc3QgaW5zdGFuY2U6IGFueSA9IG9iamVjdEluc3RhbmNlIHx8IHRoaXMuaW5qZWN0b3IuZ2V0PFQ+KHNlcnZpY2VDbGFzcyBhcyBhbnkpO1xuICAgIGlmICghaW5zdGFuY2UpIHtcbiAgICAgIHRocm93IGBodHRwIHJlcXVlc3Qgbm90Zm91bmQgc2VydmljZSBpbnN0YW5jZWA7XG4gICAgfVxuICAgIGNvbnN0IG1ldGhvZEluc3RhbmNlID0gaW5zdGFuY2VbZnVuY3Rpb25OYW1lXTtcblxuICAgIGlmICghbWV0aG9kSW5zdGFuY2UpIHtcbiAgICAgIHRocm93IGBodHRwIHJlcXVlc3QgY29uZmlnIG5vdGZvdW5kIG1ldGhvZEluc3RhbmNlIG5hbWU6ICR7U3RyaW5nKGZ1bmN0aW9uTmFtZSl9YDtcbiAgICB9XG4gICAgY29uc3Qga2V5Q2FjaGVNRDU6IHN0cmluZyA9IGdldEtleUNhY2hlQnlBcnJheU9iamVjdChrZXlDYWNoZSB8fCAnJywgYXJndW1lbnRzVmFsdWUpO1xuICAgIGNvbnN0IGNhY2hlRGF0YSA9IGF3YWl0IHRoaXMuZ2V0Q2FjaGVEYXRhKGh0dHBSZXF1ZXN0Q29uZmlnLCBrZXlDYWNoZU1ENSk7XG5cbiAgICBpZiAoY2FjaGVEYXRhKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGNhY2hlRGF0YSk7XG4gICAgfVxuXG4gICAgbGV0IGNhbGxSZXNwb25zZSA9IG1ldGhvZEluc3RhbmNlLmFwcGx5KGluc3RhbmNlLCBhcmd1bWVudHNWYWx1ZSk7XG4gICAgaWYgKCFjYWxsUmVzcG9uc2UudGhlbikge1xuICAgICAgY2FsbFJlc3BvbnNlID0gbGFzdFZhbHVlRnJvbShjYWxsUmVzcG9uc2UpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGNhbGxSZXNwb25zZTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLnNldENhY2hlRGF0YShyZXMsIGh0dHBSZXF1ZXN0Q29uZmlnLCBrZXlDYWNoZU1ENSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldENhY2hlRGF0YShodHRwUmVxdWVzdENvbmZpZzogSUh0dHBSZXF1ZXN0Q29uZmlnLCBrZXlDYWNoZTogc3RyaW5nKSB7XG4gICAgY29uc3QgeyBjYWNoZVR5cGUsIGNvbnZlcnRSZXNwb25zZURhdGEgfSA9IGh0dHBSZXF1ZXN0Q29uZmlnO1xuXG4gICAgaWYgKCFjYWNoZVR5cGUgfHwgIWtleUNhY2hlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAoY2FjaGVUeXBlID09PSAnc2VydmljZScpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLnNlcnZpY2VTdG9yZS5nZXQoa2V5Q2FjaGUpO1xuXG4gICAgICByZXR1cm4gZGF0YSA/IChjb252ZXJ0UmVzcG9uc2VEYXRhID8gY29udmVydFJlc3BvbnNlRGF0YShkYXRhKSA6IGRhdGEpIDogZGF0YTtcbiAgICB9XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IFV0aWxzQ2FjaGUuR2V0QXN5bmMoa2V5Q2FjaGUsIHVuZGVmaW5lZCwgdHJ1ZSk7XG5cbiAgICByZXR1cm4gZGF0YSA/IChjb252ZXJ0UmVzcG9uc2VEYXRhID8gY29udmVydFJlc3BvbnNlRGF0YShkYXRhKSA6IGRhdGEpIDogZGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2V0Q2FjaGVEYXRhKGRhdGE6IGFueSwgaHR0cFJlcXVlc3RDb25maWc6IElIdHRwUmVxdWVzdENvbmZpZywga2V5Q2FjaGU6IHN0cmluZykge1xuICAgIGNvbnN0IHsgY2FjaGVUeXBlLCBjbGVhckNhY2hlLCBjb252ZXJ0UmVzcG9uc2VEYXRhIH0gPSBodHRwUmVxdWVzdENvbmZpZztcblxuICAgIGlmICghY2FjaGVUeXBlIHx8ICFrZXlDYWNoZSkge1xuICAgICAgcmV0dXJuIGNvbnZlcnRSZXNwb25zZURhdGEgPyBjb252ZXJ0UmVzcG9uc2VEYXRhKGRhdGEpIDogZGF0YTtcbiAgICB9XG4gICAgaWYgKGNsZWFyQ2FjaGUgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuY2xlYXJDYWNoZShjYWNoZVR5cGUsIGtleUNhY2hlKTtcbiAgICB9XG4gICAgaWYgKGNhY2hlVHlwZSA9PT0gJ3NlcnZpY2UnKSB7XG4gICAgICB0aGlzLnNlcnZpY2VTdG9yZS5zZXQoa2V5Q2FjaGUsIGRhdGEpO1xuXG4gICAgICByZXR1cm4gY29udmVydFJlc3BvbnNlRGF0YSA/IGNvbnZlcnRSZXNwb25zZURhdGEoZGF0YSkgOiBkYXRhO1xuICAgIH1cbiAgICBhd2FpdCBVdGlsc0NhY2hlLlNldEFzeW5jKGtleUNhY2hlLCBkYXRhLCAoaHR0cFJlcXVlc3RDb25maWcudGltZUNhY2hlIHx8IDUpICogNjAsIHRydWUpO1xuXG4gICAgcmV0dXJuIGNvbnZlcnRSZXNwb25zZURhdGEgPyBjb252ZXJ0UmVzcG9uc2VEYXRhKGRhdGEpIDogZGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJDYWNoZShjYWNoZVR5cGU6ICdzZXJ2aWNlJyB8ICdsb2NhbC1zdG9yZScsIGtleUNhY2hlOiBzdHJpbmcpIHtcbiAgICBpZiAoY2FjaGVUeXBlID09PSAnc2VydmljZScpIHtcbiAgICAgIHRoaXMuc2VydmljZVN0b3JlLmRlbGV0ZShrZXlDYWNoZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgVXRpbHNDYWNoZS5DbGVhckFzeW5jKGtleUNhY2hlLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHRy4bqjIHbhu4EgdHLhuqFuZyB0aMOhaSDEkcOjIGxvYWQgaOG6v3QgaXRlbSBjaMawYSAodsOtIGThu6U6IGThu7FhIHbDoG8gdGhhbSBz4buRIG7DoHkgxJHhu4MgcXV54bq/dCDEkeG7i25oIGPDsyB0aeG6v3AgdOG7pWMgZ+G7jWkgYXBpIGtoaSBzY3JvbGwga28pIC5cbiAgICovXG4gIHB1YmxpYyB1cGRhdGVBcmd1bWVudHMoXG4gICAgYXJndW1lbnRzVmFsdWU6IEFycmF5PGFueT4sXG4gICAgb2JqZWN0R2V0RGF0YVVwZGF0ZTogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICBwYWdpbmdTdG9yZTogSVBhZ2luZyxcbiAgICBrZXlTZWFyY2g6IHN0cmluZyxcbiAgICBzZWFyY2hPbmxpbmU6IGJvb2xlYW4sXG4gICAgbG9hZGVkTGFzdEl0ZW06IGJvb2xlYW4sXG4gICAgZ3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWU/OiBJR3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWVcbiAgKTogYm9vbGVhbiB7XG4gICAgaWYgKCFhcmd1bWVudHNWYWx1ZSB8fCAhKGFyZ3VtZW50c1ZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHx8IGxvYWRlZExhc3RJdGVtKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIWd1aWRlQXV0b1VwZGF0ZUFyZ3VtZW50c1ZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVBcmd1bWVudHNEZWZhdWx0KGFyZ3VtZW50c1ZhbHVlLCB0cnVlLCBwYWdpbmdTdG9yZSwga2V5U2VhcmNoLCBzZWFyY2hPbmxpbmUpO1xuICAgIH1cbiAgICBjb25zdCB7IHBhZ2luZywgc2VhcmNoLCBvdGhlciwgZGV0YWlsQnlJZCwgc29ydE9yZGVyVHlwZSwgc29ydE9yZGVyQnkgfSA9IGd1aWRlQXV0b1VwZGF0ZUFyZ3VtZW50c1ZhbHVlO1xuXG4gICAgaWYgKHNlYXJjaCkge1xuICAgICAgc2VhcmNoLmZpZWxkR2V0VmFsdWUgPSAna2V5U2VhcmNoJztcbiAgICAgIHRoaXMucHJvY2Vzc1VwZGF0ZUFyZ3VtZW50c1ZhbGVDb25maWcoYXJndW1lbnRzVmFsdWUsIHsga2V5U2VhcmNoIH0sIHNlYXJjaCk7XG4gICAgfVxuICAgIGlmIChvYmplY3RHZXREYXRhVXBkYXRlPy5bJ3N0b3JlUGFyYW1zQ2FsbEFwaSddICYmIHR5cGVvZiBvYmplY3RHZXREYXRhVXBkYXRlPy5bJ3N0b3JlUGFyYW1zQ2FsbEFwaSddID09PSAnb2JqZWN0JyAmJiAhKG9iamVjdEdldERhdGFVcGRhdGU/Llsnc3RvcmVQYXJhbXNDYWxsQXBpJ10gYXMgYW55KS5pbnN0YW5jZVNvcnQpIHtcbiAgICAgIG9iamVjdEdldERhdGFVcGRhdGVbJ3N0b3JlUGFyYW1zQ2FsbEFwaSddID0geyAuLi5vYmplY3RHZXREYXRhVXBkYXRlWydzdG9yZVBhcmFtc0NhbGxBcGknXSwgaW5zdGFuY2VTb3J0OiB7fSB9O1xuICAgIH1cbiAgICBpZiAoc29ydE9yZGVyQnkpIHtcbiAgICAgIHRoaXMucHJvY2Vzc1VwZGF0ZUFyZ3VtZW50c1ZhbGVDb25maWcoYXJndW1lbnRzVmFsdWUsIG9iamVjdEdldERhdGFVcGRhdGUsIHNvcnRPcmRlckJ5KTtcbiAgICB9XG4gICAgaWYgKHNvcnRPcmRlclR5cGUpIHtcbiAgICAgIHRoaXMucHJvY2Vzc1VwZGF0ZUFyZ3VtZW50c1ZhbGVDb25maWcoYXJndW1lbnRzVmFsdWUsIG9iamVjdEdldERhdGFVcGRhdGUsIHNvcnRPcmRlclR5cGUpO1xuICAgIH1cbiAgICBpZiAob3RoZXIgJiYgb3RoZXIubGVuZ3RoKSB7XG4gICAgICBvdGhlci5mb3JFYWNoKChjb25maWcpID0+IHRoaXMucHJvY2Vzc1VwZGF0ZUFyZ3VtZW50c1ZhbGVDb25maWcoYXJndW1lbnRzVmFsdWUsIG9iamVjdEdldERhdGFVcGRhdGUsIGNvbmZpZykpO1xuICAgIH1cbiAgICBpZiAoZGV0YWlsQnlJZCkge1xuICAgICAgZGV0YWlsQnlJZC5maWVsZEdldFZhbHVlID0gZGV0YWlsQnlJZC5maWVsZEdldFZhbHVlIHx8IGRldGFpbEJ5SWQuZmllbGRHZXRWYWx1ZS50cmltKCkgfHwgJ2tleSc7XG4gICAgICB0aGlzLnByb2Nlc3NVcGRhdGVBcmd1bWVudHNWYWxlQ29uZmlnKGFyZ3VtZW50c1ZhbHVlLCBvYmplY3RHZXREYXRhVXBkYXRlLCBkZXRhaWxCeUlkKTtcbiAgICB9XG5cbiAgICBpZiAoaXNFbXB0eShwYWdpbmcpKSB7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVBcmd1bWVudHNEZWZhdWx0KGFyZ3VtZW50c1ZhbHVlLCBmYWxzZSwgcGFnaW5nU3RvcmUgfHwgdGhpcy5mYWtlUmVzcG9uc2VQYWdpbmdBcGkoKVsncGFnaW5nJ10sIGtleVNlYXJjaCwgc2VhcmNoT25saW5lKTtcbiAgICB9XG4gICAgY29uc3QgeyBwYWdlLCBiZWZvcmUsIGFmdGVyIH0gPSBwYWdpbmc7XG5cbiAgICBpZiAocGFnZSAmJiBvYmplY3RHZXREYXRhVXBkYXRlKSB7XG4gICAgICBwYWdlLnByZXByb2Nlc3NvciA9ICh2YWx1ZTogbnVtYmVyKTogbnVtYmVyID0+IHtcbiAgICAgICAgcmV0dXJuICsrdmFsdWU7XG4gICAgICB9O1xuICAgICAgY29uc3QgdmFsdWVQYWdlID0gK3RoaXMucHJvY2Vzc1VwZGF0ZUFyZ3VtZW50c1ZhbGVDb25maWcoYXJndW1lbnRzVmFsdWUsIG9iamVjdEdldERhdGFVcGRhdGUsIHBhZ2UpO1xuICAgICAgY29uc3QgdmFsdWVMYXN0UGFnZSA9ICtnZXQob2JqZWN0R2V0RGF0YVVwZGF0ZSBhcyBhbnksICdwYWdpbmcudG90YWxfcGFnZXMnKTtcblxuICAgICAgaWYgKCh2YWx1ZVBhZ2UgJiYgTnVtYmVyKHZhbHVlUGFnZSkudmFsdWVPZigpID4gTnVtYmVyKHZhbHVlTGFzdFBhZ2UpLnZhbHVlT2YoKSkgfHwgdmFsdWVMYXN0UGFnZSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGJlZm9yZSAmJiBvYmplY3RHZXREYXRhVXBkYXRlICYmICF0aGlzLnByb2Nlc3NVcGRhdGVBcmd1bWVudHNWYWxlQ29uZmlnKGFyZ3VtZW50c1ZhbHVlLCBvYmplY3RHZXREYXRhVXBkYXRlLCBiZWZvcmUpICYmICFnZXQob2JqZWN0R2V0RGF0YVVwZGF0ZSwgJ3BhZ2luZy5mYWtlJykpIHtcbiAgICAgIHNldChvYmplY3RHZXREYXRhVXBkYXRlLCAncGFnaW5nLmZha2UnLCBmYWxzZSk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoYWZ0ZXIgJiYgb2JqZWN0R2V0RGF0YVVwZGF0ZSAmJiAhdGhpcy5wcm9jZXNzVXBkYXRlQXJndW1lbnRzVmFsZUNvbmZpZyhhcmd1bWVudHNWYWx1ZSwgb2JqZWN0R2V0RGF0YVVwZGF0ZSwgYWZ0ZXIpICYmICFnZXQob2JqZWN0R2V0RGF0YVVwZGF0ZSwgJ3BhZ2luZy5mYWtlJykpIHtcbiAgICAgIHNldChvYmplY3RHZXREYXRhVXBkYXRlLCAncGFnaW5nLmZha2UnLCBmYWxzZSk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICghYXJndW1lbnRzVmFsdWUgfHwgIWFyZ3VtZW50c1ZhbHVlLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVBcmd1bWVudHNEZWZhdWx0KGFyZ3VtZW50c1ZhbHVlOiBBcnJheTxhbnk+LCB1cGRhdGVTZWFyY2g6IGJvb2xlYW4sIHBhZ2luZ1N0b3JlOiBJUGFnaW5nLCBrZXlTZWFyY2g6IHN0cmluZywgc2VhcmNoT25saW5lOiBib29sZWFuKSB7XG4gICAgaWYgKCFhcmd1bWVudHNWYWx1ZSB8fCAhYXJndW1lbnRzVmFsdWUubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGluZGV4IGluIGFyZ3VtZW50c1ZhbHVlKSB7XG4gICAgICBsZXQgYXJndW1lbnRWYWx1ZSA9IGFyZ3VtZW50c1ZhbHVlW2luZGV4XTtcblxuICAgICAgaWYgKCEoYXJndW1lbnRWYWx1ZSBpbnN0YW5jZW9mIEh0dHBQYXJhbXMpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgcGFnZVZhbHVlID0gYXJndW1lbnRWYWx1ZS5nZXQoJ3BhZ2UnKTtcblxuICAgICAgaWYgKHNlYXJjaE9ubGluZSAmJiB1cGRhdGVTZWFyY2gpIHtcbiAgICAgICAgYXJndW1lbnRWYWx1ZSA9IGFyZ3VtZW50VmFsdWUuc2V0KCdzZWFyY2gnLCBrZXlTZWFyY2gpO1xuICAgICAgICBhcmd1bWVudHNWYWx1ZVtpbmRleF0gPSBhcmd1bWVudFZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKGFyZ3VtZW50VmFsdWUuaGFzKCdiZWZvcmUnKSkge1xuICAgICAgICBhcmd1bWVudFZhbHVlID0gYXJndW1lbnRWYWx1ZS5zZXQoJ2JlZm9yZScsIHBhZ2luZ1N0b3JlPy5iZWZvcmUpO1xuICAgICAgICBhcmd1bWVudHNWYWx1ZVtpbmRleF0gPSBhcmd1bWVudFZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKGFyZ3VtZW50VmFsdWUuaGFzKCdhZnRlcicpKSB7XG4gICAgICAgIGFyZ3VtZW50VmFsdWUgPSBhcmd1bWVudFZhbHVlLnNldCgnYWZ0ZXInLCBwYWdpbmdTdG9yZT8uYWZ0ZXIpO1xuICAgICAgICBhcmd1bWVudHNWYWx1ZVtpbmRleF0gPSBhcmd1bWVudFZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKE51bWJlcihwYWdlVmFsdWUpLnZhbHVlT2YoKSA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoIXBhZ2luZ1N0b3JlIHx8IHBhZ2VWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHBhZ2UsIHRvdGFsX3BhZ2VzIH0gPSBwYWdpbmdTdG9yZTtcbiAgICAgIGNvbnN0IG5leHRQYWdlID0gKHBhZ2UgfHwgMCkgKyAxO1xuXG4gICAgICBpZiAobmV4dFBhZ2UgJiYgTnVtYmVyKG5leHRQYWdlKS52YWx1ZU9mKCkgPiBOdW1iZXIodG90YWxfcGFnZXMpLnZhbHVlT2YoKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGFyZ3VtZW50c1ZhbHVlW2luZGV4XSA9IGFyZ3VtZW50VmFsdWUuc2V0KCdwYWdlJywgbmV4dFBhZ2UpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzVXBkYXRlQXJndW1lbnRzVmFsZUNvbmZpZyhhcmd1bWVudHNWYWx1ZTogQXJyYXk8YW55Piwgb2JqZWN0R2V0RGF0YVVwZGF0ZTogYW55LCBjb25maWc6IElHdWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZUNvbmZpZykge1xuICAgIGlmICghY29uZmlnIHx8ICFvYmplY3RHZXREYXRhVXBkYXRlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmxvZz8ubG9nSW5wdXRzKSB7XG4gICAgICBjb25zb2xlLmxvZygnY29uZmlnJywgY29uZmlnKTtcbiAgICAgIGNvbnNvbGUubG9nKCdvYmplY3RHZXREYXRhVXBkYXRlJywgb2JqZWN0R2V0RGF0YVVwZGF0ZSk7XG4gICAgICBjb25zb2xlLmxvZygnYXJndW1lbnRzVmFsdWUnLCBhcmd1bWVudHNWYWx1ZSk7XG4gICAgICBjb25zb2xlLmxvZygnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nKTtcbiAgICB9XG4gICAgY29uc3QgeyBmaWVsZFVwZGF0ZSwgZmllbGRHZXRWYWx1ZSwgcHJlcHJvY2Vzc29yIH0gPSBjb25maWc7XG5cbiAgICBpZiAoIWZpZWxkVXBkYXRlIHx8ICFmaWVsZEdldFZhbHVlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGxldCB2YWx1ZSA9IGdldChvYmplY3RHZXREYXRhVXBkYXRlLCBmaWVsZEdldFZhbHVlKTtcbiAgICBpZiAoY29uZmlnLmxvZz8ubG9nR2V0VmFsdWUpIHtcbiAgICAgIGNvbnNvbGUubG9nKGB2YWx1ZSBvZiBvYmplY3RHZXREYXRhVXBkYXRlWyR7ZmllbGRHZXRWYWx1ZX1dOiBgLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHByZXByb2Nlc3Nvcikge1xuICAgICAgdmFsdWUgPSBwcmVwcm9jZXNzb3IodmFsdWUpO1xuICAgIH1cbiAgICBpZiAoZmllbGRVcGRhdGUpIHtcbiAgICAgIGxldCByZXN1bHRPZkZpZWxkVXBkYXRlID0gZ2V0KGFyZ3VtZW50c1ZhbHVlLCBmaWVsZFVwZGF0ZSBhcyBhbnkpO1xuXG4gICAgICBpZiAocmVzdWx0T2ZGaWVsZFVwZGF0ZSBpbnN0YW5jZW9mIEh0dHBQYXJhbXMpIHtcbiAgICAgICAgcmVzdWx0T2ZGaWVsZFVwZGF0ZSA9IHJlc3VsdE9mRmllbGRVcGRhdGUuc2V0KGNvbmZpZy5zdWJGaWVsZFVwZGF0ZSB8fCAnc2VhcmNoJywgdmFsdWUpO1xuICAgICAgICBzZXQoYXJndW1lbnRzVmFsdWUsIGZpZWxkVXBkYXRlIGFzIGFueSwgcmVzdWx0T2ZGaWVsZFVwZGF0ZSk7XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdE9mRmllbGRVcGRhdGUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICByZXN1bHRPZkZpZWxkVXBkYXRlLnB1c2godmFsdWUpO1xuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHRPZkZpZWxkVXBkYXRlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgIHNldChyZXN1bHRPZkZpZWxkVXBkYXRlLCBjb25maWcuc3ViRmllbGRVcGRhdGUgfHwgJ3NlYXJjaCcsIHZhbHVlKTtcblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBzZXQoYXJndW1lbnRzVmFsdWUsIGZpZWxkVXBkYXRlIGFzIGFueSwgdmFsdWUpO1xuXG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGZha2VSZXNwb25zZVBhZ2luZ0FwaSgpOiB7IHBhZ2luZzogSVBhZ2luZyB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgcGFnaW5nOiB7XG4gICAgICAgIHBhZ2U6IDAsXG4gICAgICAgIHRvdGFsX3BhZ2VzOiAxLFxuICAgICAgICBiZWZvcmU6ICcnLFxuICAgICAgICBhZnRlcjogJycsXG4gICAgICAgIGZha2U6IHRydWUsXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './http-request.service';
|
|
2
|
+
export * from './api-mockup';
|
|
3
|
+
export * from './interfaces';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2h0dHAtcmVxdWVzdC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vaHR0cC1yZXF1ZXN0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hcGktbW9ja3VwJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcyc7XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpbGQtYXV0by11cGRhdGUtYXJndW1lbnRzLXZhbHVlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvc2VydmljZXMvaHR0cC1yZXF1ZXN0L3NyYy9pbnRlcmZhY2VzL2d1aWxkLWF1dG8tdXBkYXRlLWFyZ3VtZW50cy12YWx1ZS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSUd1aWRlQXV0b1VwZGF0ZUFyZ3VtZW50c1ZhbHVlIHtcbiAgcGFnaW5nOiB7XG4gICAgcGFnZT86IElHdWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZUNvbmZpZztcbiAgICBiZWZvcmU/OiBJR3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWVDb25maWc7XG4gICAgYWZ0ZXI/OiBJR3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWVDb25maWc7XG4gIH07XG4gIHNlYXJjaD86IElHdWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZUNvbmZpZztcbiAgc29ydE9yZGVyVHlwZT86IElHdWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZUNvbmZpZztcbiAgc29ydE9yZGVyQnk/OiBJR3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWVDb25maWc7XG4gIGRldGFpbEJ5SWQ/OiBJR3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWVDb25maWc7XG4gIG90aGVyPzogQXJyYXk8SUd1aWRlQXV0b1VwZGF0ZUFyZ3VtZW50c1ZhbHVlQ29uZmlnPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3VpZGVBdXRvVXBkYXRlQXJndW1lbnRzVmFsdWVDb25maWcge1xuICBmaWVsZFVwZGF0ZTogc3RyaW5nO1xuICBzdWJGaWVsZFVwZGF0ZT86IHN0cmluZzsgLy8gbuG6v3Ugb3V0cHV0IGPhu6dhIGZpZWxkVXBkYXRlIGzDoCBt4buZdCDEkeG7kWkgdMaw4bujbmcgSHR0cFBhcmFtcy4geGVtIGRlbW8gbGlzdC12aWV3XG4gIGZpZWxkR2V0VmFsdWU6IHN0cmluZzsgLy8gduG7m2kgdHLGsOG7nW5nIGjhu6NwIGPhu6dhIGRldGFsQnlJZCB2w6Agc2VhcmNoIHRow6wgxJHhu4MgdHLGsOG7nW5nIG7DoHkgZ2nDoSB0cuG7iyBsw6AuICcnXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHByZXByb2Nlc3Nvcj86ICh2YWx1ZTogYW55KSA9PiBhbnk7XG4gIGxvZz86IHtcbiAgICBsb2dJbnB1dHM/OiBib29sZWFuO1xuICAgIGxvZ0dldFZhbHVlPzogYm9vbGVhbjtcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
export {};
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1yZXF1ZXN0LWNvbmZpZy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2h0dHAtcmVxdWVzdC9zcmMvaW50ZXJmYWNlcy9odHRwLXJlcXVlc3QtY29uZmlnLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5cbmltcG9ydCB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElHdWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZSB9IGZyb20gJy4vZ3VpbGQtYXV0by11cGRhdGUtYXJndW1lbnRzLXZhbHVlLmludGVyZmFjZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUh0dHBSZXF1ZXN0Q29uZmlnPFQgPSBhbnk+IHtcbiAgc2VydmljZUNsYXNzPzogVHlwZTxUPjsgLy8gdMOqbiBjbGFzcyBj4bunYSBjb21wb25lbnQgZ+G7jWkgaHR0cCByZXF1ZXN0XG4gIG9iamVjdEluc3RhbmNlPzogVDsgLy8gbMOgIDEgb2JqZWN0IGtow7RuZyDEkcaw4bujYyBpbmplY3QgdHJvbmcgaHR0cFJlcXVlc3Q7IMSRxrDhu6NjIHPhu60gZOG7pW5nIMSR4buDIGzhuqV5IGRhdGEgdOG7qyAxIMSR4buRaSB0xrDhu6NuZyBraMO0bmcgcGjhuqNpIGzDoCBzZXJ2aWNlIGluamVjdFxuICBmdW5jdGlvbk5hbWU/OiBrZXlvZiBUOyAvLyB0w6puIGjDoG0gbXXhu5FuIGfhu41pIHRyb25nIHNlcnZpY2VcbiAgYXJndW1lbnRzVmFsdWU6IEFycmF5PGFueT47IC8vIGNo4bupYSBk4buvIGxp4buHdSBj4bunYSBwYXJhbXMgdHJ1eeG7gW4gdsOgbywgbeG6o25nIGPDsyBr4buDdSBk4buvIGxp4buHdSBraMO0bmcgY+G6p24gZ2nhu5FuZyBuaGF1IHZkOiBow6BtIGZ1bmN0aW9uKHNlYXJjaDpzdHJpbmcsYWdlOm51bWJlcixwYWdlOk9iamVjdCk9ey4uLn0gdGjDrCBzZXJ2aWNlU3BlY2lmaWNQYXJhbXMgPSBbJ3BhcmFtJywxNix7cGFnZToxLHBhZ2U6cGVyX3BhZ2U6MjV9XVxuICBjYWNoZVR5cGU/OiAnc2VydmljZScgfCAnbG9jYWwtc3RvcmUnO1xuICBrZXlDYWNoZT86IHN0cmluZzsgLy8gc+G7rSBk4bulbmcgbuG6v3Ugc+G7rSBk4bulbmcgY2FjaGUuIGtoaSB04bqhbyBi4buZIGNvbmZpZyBz4butIGThu6VuZyDEkeG7kWkgdMaw4bujbmcgdXVpZCDEkeG7gyBs4bqleSBt4buZdCBpZCBzZXQgdsOgbyBiaeG6v24gbsOgeS4gdsOgIGJp4bq/biBuw6B5IHPhur0ga28gdGhheSDEkeG7lWkgdHJvbmcgcXXDoSB0csOsbmggc+G7rSBk4bulbmdcbiAgdGltZUNhY2hlPzogbnVtYmVyOyAvLyDEkcahbiB24buLIHBow7p0XG4gIGNsZWFyQ2FjaGU/OiBib29sZWFuO1xuICBndWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZT86IElHdWlkZUF1dG9VcGRhdGVBcmd1bWVudHNWYWx1ZTsgLy8ga2hhaSBiw6FvIGtow7RuZyBz4butIGThu6VuZyBjaG8gSHR0cFJlcXVlc3RTZXJ2aWNlLiBEw7luZyBjaG8gY8OhIGNvbXBvbmVudCBtdeG7kW4gbOG6pXkgdGjDtG5nIHRpbiB1cGRhdGUgYXJndW1lbnRzIMSR4buDIGxvYWQgbW9yZSBraGkgc2Nyb2xsIGJvdHRvbS4gVsOtIGThu6UgbmjGsCBNb0xpYlNoYXJlQ29tcG9uZW50c0xpc3RWaWV3VGVtcGxhdGVzQ29tcG9uZW50QWJzdHJhY3RcbiAgY29udmVydFJlc3BvbnNlRGF0YT86IChyZXNwb25zZTogYW55KSA9PiBhbnk7XG59XG4iXX0=
|