@dealpos-npm/ng-dealpos-library 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Injectable } from "@angular/core";
|
|
2
|
-
import { Observable,
|
|
2
|
+
import { Observable, throwError } from "rxjs";
|
|
3
3
|
import { HttpHeaders, } from "@angular/common/http";
|
|
4
4
|
import { catchError, timeout } from "rxjs/operators";
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
@@ -11,18 +11,13 @@ export class HttpService {
|
|
|
11
11
|
this.http = http;
|
|
12
12
|
this.toastr = toastr;
|
|
13
13
|
this.router = router;
|
|
14
|
-
this.a = 0;
|
|
15
|
-
alert('Dealpos');
|
|
16
|
-
}
|
|
17
|
-
testToastr() {
|
|
18
|
-
this.toastr.success("1", "1");
|
|
19
14
|
}
|
|
20
15
|
PostToUrlEncode(url, params, time = 100000) {
|
|
21
16
|
let headers = new HttpHeaders();
|
|
22
17
|
headers = headers.set("Content-Type", "application/x-www-form-urlencoded");
|
|
23
18
|
return new Observable((observer) => {
|
|
24
19
|
this.http
|
|
25
|
-
.post(url, params, { headers: headers })
|
|
20
|
+
.post((url), params, { headers: headers })
|
|
26
21
|
.pipe(timeout(time))
|
|
27
22
|
.subscribe((data) => {
|
|
28
23
|
observer.next(data);
|
|
@@ -38,7 +33,7 @@ export class HttpService {
|
|
|
38
33
|
const options = { responseType: "text", headers: httpHeaders };
|
|
39
34
|
return new Observable((observer) => {
|
|
40
35
|
this.http
|
|
41
|
-
.get("/API/Token/GetZendeskJWT", options)
|
|
36
|
+
.get(("/API/Token/GetZendeskJWT"), options)
|
|
42
37
|
.pipe(timeout(time))
|
|
43
38
|
.subscribe((data) => {
|
|
44
39
|
observer.next(data);
|
|
@@ -56,7 +51,7 @@ export class HttpService {
|
|
|
56
51
|
const options = { responseType: "text", headers: httpHeaders };
|
|
57
52
|
return new Observable((observer) => {
|
|
58
53
|
this.http
|
|
59
|
-
.post(url, data, options)
|
|
54
|
+
.post((url), data, options)
|
|
60
55
|
.pipe(timeout(time))
|
|
61
56
|
.subscribe((res) => {
|
|
62
57
|
observer.next(res);
|
|
@@ -81,21 +76,30 @@ export class HttpService {
|
|
|
81
76
|
let options = {
|
|
82
77
|
headers: httpHeaders,
|
|
83
78
|
};
|
|
84
|
-
return this.http.get(url, options)
|
|
79
|
+
return this.http.get((url), options)
|
|
85
80
|
.pipe(catchError(err => {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
81
|
+
let unauthorized = this.unauthorizedErrorHandling(err);
|
|
82
|
+
if (!unauthorized) {
|
|
83
|
+
// show toastr error
|
|
84
|
+
let errMessage = this.errorMessageHandling(err);
|
|
85
|
+
this.toastr.error(errMessage.Message != "" ? errMessage.Message : "An unknown error has occured!", errMessage.header);
|
|
86
|
+
this.paymentErrorHandling(err);
|
|
92
87
|
}
|
|
93
|
-
return
|
|
88
|
+
return throwError(() => err);
|
|
94
89
|
}));
|
|
95
90
|
}
|
|
96
91
|
getNews(url) {
|
|
97
92
|
return this.http.get(url);
|
|
98
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* Handles payment errors by navigating to the subscription page if the error status is 402.
|
|
96
|
+
* @param err - The HttpErrorResponse object containing the error information.
|
|
97
|
+
*/
|
|
98
|
+
paymentErrorHandling(err) {
|
|
99
|
+
if (err.status == 402) {
|
|
100
|
+
this.router.navigate(['/menu/Profile/Main/My_Subscription']);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
99
103
|
/**
|
|
100
104
|
* METHOD POST
|
|
101
105
|
* This should cast the httpResponse to the data model we expect
|
|
@@ -115,10 +119,26 @@ export class HttpService {
|
|
|
115
119
|
httpHeaders = httpHeaders.append("Authorization", "Bearer " + token);
|
|
116
120
|
}
|
|
117
121
|
let options = {
|
|
118
|
-
headers: httpHeaders
|
|
122
|
+
headers: httpHeaders
|
|
123
|
+
};
|
|
124
|
+
Date.prototype.toJSON = function () {
|
|
125
|
+
let v = this.getFullYear() +
|
|
126
|
+
'-' + pad(this.getMonth() + 1) +
|
|
127
|
+
'-' + pad(this.getDate()) +
|
|
128
|
+
'T' + pad(this.getHours()) +
|
|
129
|
+
':' + pad(this.getMinutes()) +
|
|
130
|
+
':' + pad(this.getSeconds()) +
|
|
131
|
+
'.' + '000';
|
|
132
|
+
return v;
|
|
119
133
|
};
|
|
134
|
+
function pad(number) {
|
|
135
|
+
if (number < 10) {
|
|
136
|
+
return '0' + number;
|
|
137
|
+
}
|
|
138
|
+
return number;
|
|
139
|
+
}
|
|
120
140
|
this.http
|
|
121
|
-
.post(url, data, options)
|
|
141
|
+
.post((url), data, options)
|
|
122
142
|
.pipe(timeout(time))
|
|
123
143
|
.subscribe({
|
|
124
144
|
next: (result) => {
|
|
@@ -145,6 +165,53 @@ export class HttpService {
|
|
|
145
165
|
});
|
|
146
166
|
});
|
|
147
167
|
}
|
|
168
|
+
/**
|
|
169
|
+
* METHOD POST
|
|
170
|
+
* Use this method when we are expecting blob to be written from the server
|
|
171
|
+
* @param url
|
|
172
|
+
* @param data
|
|
173
|
+
* @param time
|
|
174
|
+
* @returns
|
|
175
|
+
*/
|
|
176
|
+
postFile(url, data, time = 100000) {
|
|
177
|
+
return new Observable((observer) => {
|
|
178
|
+
let token = localStorage.getItem("Token");
|
|
179
|
+
let httpHeaders = new HttpHeaders({
|
|
180
|
+
"Content-Type": "application/json",
|
|
181
|
+
"Cache-Control": "no-cache",
|
|
182
|
+
});
|
|
183
|
+
if (token) {
|
|
184
|
+
httpHeaders = httpHeaders.append("Authorization", "Bearer " + token);
|
|
185
|
+
}
|
|
186
|
+
this.http
|
|
187
|
+
.post((url), data, { headers: httpHeaders, observe: 'response', responseType: 'blob' })
|
|
188
|
+
.pipe(timeout(time))
|
|
189
|
+
.subscribe({
|
|
190
|
+
next: (result) => {
|
|
191
|
+
observer.next({
|
|
192
|
+
title: result.headers.get('Content-Disposition'),
|
|
193
|
+
file: result.body
|
|
194
|
+
});
|
|
195
|
+
observer.complete();
|
|
196
|
+
},
|
|
197
|
+
error: (err) => {
|
|
198
|
+
if ('application/json; charset=utf-8' === err.headers.get('Content-Type')) {
|
|
199
|
+
const reader = new FileReader();
|
|
200
|
+
reader.addEventListener('loadend', (e) => {
|
|
201
|
+
const er = JSON.parse(e.srcElement['result'])?.Message;
|
|
202
|
+
let unauthorized = this.unauthorizedErrorHandling(err);
|
|
203
|
+
if (!unauthorized) {
|
|
204
|
+
let errMessage = this.errorMessageHandling(err);
|
|
205
|
+
this.toastr.error(er ?? "An unknown error has occured!", errMessage.header, { enableHtml: true });
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
reader.readAsText(err.error);
|
|
209
|
+
}
|
|
210
|
+
observer.error(err);
|
|
211
|
+
},
|
|
212
|
+
});
|
|
213
|
+
});
|
|
214
|
+
}
|
|
148
215
|
/**
|
|
149
216
|
* METHOD PUT
|
|
150
217
|
* This should cast the httpResponse to the data model we expect
|
|
@@ -167,7 +234,7 @@ export class HttpService {
|
|
|
167
234
|
headers: httpHeaders,
|
|
168
235
|
};
|
|
169
236
|
this.http
|
|
170
|
-
.put(url, data, options)
|
|
237
|
+
.put((url), data, options)
|
|
171
238
|
.pipe(timeout(time))
|
|
172
239
|
.subscribe({
|
|
173
240
|
next: (result) => {
|
|
@@ -217,7 +284,7 @@ export class HttpService {
|
|
|
217
284
|
body: data
|
|
218
285
|
};
|
|
219
286
|
this.http
|
|
220
|
-
.delete(url, options)
|
|
287
|
+
.delete((url), options)
|
|
221
288
|
.pipe(timeout(time))
|
|
222
289
|
.subscribe({
|
|
223
290
|
next: (result) => {
|
|
@@ -261,6 +328,7 @@ export class HttpService {
|
|
|
261
328
|
return retVal;
|
|
262
329
|
}
|
|
263
330
|
errorMessageHandling(err) {
|
|
331
|
+
;
|
|
264
332
|
let header = "API Error";
|
|
265
333
|
let message = "Exception Message";
|
|
266
334
|
if (err.error) {
|
|
@@ -285,7 +353,7 @@ export class HttpService {
|
|
|
285
353
|
postFormDataWithoutBearer(url, data) {
|
|
286
354
|
return new Observable((observer) => {
|
|
287
355
|
this.http
|
|
288
|
-
.post(url, data)
|
|
356
|
+
.post((url), data)
|
|
289
357
|
.pipe(timeout(100000))
|
|
290
358
|
.subscribe({
|
|
291
359
|
next: (data) => {
|
|
@@ -312,38 +380,41 @@ export class HttpService {
|
|
|
312
380
|
headers: httpHeaders,
|
|
313
381
|
};
|
|
314
382
|
this.http
|
|
315
|
-
.post(url, data, options)
|
|
383
|
+
.post((url), data, options)
|
|
316
384
|
.pipe(timeout(100000))
|
|
317
|
-
.subscribe(
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
}, (err) => {
|
|
321
|
-
//Exception Handling
|
|
322
|
-
if (err.status == 200) {
|
|
323
|
-
//when Response is not application/json ex: some API return text/csv
|
|
324
|
-
observer.next(err.error.text);
|
|
385
|
+
.subscribe({
|
|
386
|
+
next: (value) => {
|
|
387
|
+
observer.next(value);
|
|
325
388
|
observer.complete();
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
if (
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
389
|
+
},
|
|
390
|
+
error: (err) => {
|
|
391
|
+
//Exception Handling
|
|
392
|
+
if (err.status == 200) {
|
|
393
|
+
//when Response is not application/json ex: some API return text/csv
|
|
394
|
+
observer.next(err.error.text);
|
|
395
|
+
observer.complete();
|
|
396
|
+
}
|
|
397
|
+
else {
|
|
398
|
+
let unauthorized = this.unauthorizedErrorHandling(err);
|
|
399
|
+
if (!unauthorized && showToastr) {
|
|
400
|
+
let errMessage = this.errorMessageHandling(err);
|
|
401
|
+
this.toastr.error(errMessage.Message != ""
|
|
402
|
+
? errMessage.Message
|
|
403
|
+
: "An unknown error has occured!", errMessage.header);
|
|
404
|
+
}
|
|
405
|
+
observer.error(err);
|
|
334
406
|
}
|
|
335
|
-
observer.error(err);
|
|
336
407
|
}
|
|
337
408
|
});
|
|
338
409
|
});
|
|
339
410
|
}
|
|
340
411
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: HttpService, deps: [{ token: i1.HttpClient }, { token: i2.ToastrService }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
341
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: HttpService, providedIn:
|
|
412
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: HttpService, providedIn: "root" }); }
|
|
342
413
|
}
|
|
343
414
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: HttpService, decorators: [{
|
|
344
415
|
type: Injectable,
|
|
345
416
|
args: [{
|
|
346
|
-
providedIn:
|
|
417
|
+
providedIn: "root",
|
|
347
418
|
}]
|
|
348
419
|
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.ToastrService }, { type: i3.Router }] });
|
|
349
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVhbHBvcy1ucG0vbmctZGVhbHBvcy1saWJyYXJ5L3NlcnZpY2VzL2h0dHAvc3JjL2h0dHAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBR0wsV0FBVyxHQUNaLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFLckQsTUFBTSxPQUFPLFdBQVc7SUFFdEIsWUFDVSxJQUFnQixFQUNoQixNQUFxQixFQUNyQixNQUFjO1FBRmQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFKeEIsTUFBQyxHQUFHLENBQUMsQ0FBQTtRQU1ILEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUNsQixDQUFDO0lBQ00sVUFBVTtRQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUMvQixDQUFDO0lBQ00sZUFBZSxDQUNwQixHQUFXLEVBQ1gsTUFBZSxFQUNmLE9BQWUsTUFBTTtRQUVyQixJQUFJLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2hDLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxtQ0FBbUMsQ0FBQyxDQUFDO1FBQzNFLE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNqQyxJQUFJLENBQUMsSUFBSTtpQkFDTixJQUFJLENB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QUMsK0JBQStCLEVBQ25DLFVBQVUsQ0FBQyxNQUFNLENBQ2xCLENBQUM7b0JBQ0osQ0FBQztvQkFFRCxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN0QixDQUFDO1lBQ0gsQ0FBQyxDQUNGLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBcllVLFdBQVc7a0hBQVgsV0FBVyxjQUZWLE1BQU07OzJGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIGZyb20sIG9mIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtcclxuICBIdHRwQ2xpZW50LFxyXG4gIEh0dHBFcnJvclJlc3BvbnNlLFxyXG4gIEh0dHBIZWFkZXJzLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSBcIm5neC10b2FzdHJcIjtcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgdGltZW91dCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEh0dHBTZXJ2aWNlIHtcclxuICBhID0gMFxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXHJcbiAgKSB7XHJcbiAgICBhbGVydCgnRGVhbHBvcycpXHJcbiAgfVxyXG4gIHB1YmxpYyB0ZXN0VG9hc3RyKCkge1xyXG4gICAgdGhpcy50b2FzdHIuc3VjY2VzcyhcIjFcIiwgXCIxXCIpXHJcbiAgfVxyXG4gIHB1YmxpYyBQb3N0VG9VcmxFbmNvZGUoXHJcbiAgICB1cmw6IHN0cmluZyxcclxuICAgIHBhcmFtcz86IHN0cmluZyxcclxuICAgIHRpbWU6IG51bWJlciA9IDEwMDAwMFxyXG4gICk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xyXG4gICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIpO1xyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4ge1xyXG4gICAgICB0aGlzLmh0dHBcclxuICAgICAgICAucG9zdCh1cmwsIHBhcmFtcywgeyBoZWFkZXJzOiBoZWFkZXJzIH0pXHJcbiAgICAgICAgLnBpcGUodGltZW91dCh0aW1lKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICBvYnNlcnZlci5uZXh0KGRhdGEpO1xyXG4gICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFRleHQodGltZTogbnVtYmVyID0gMTAwMDAwKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgIGxldCB0b2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiVG9rZW5cIik7XHJcbiAgICBsZXQgaHR0cEhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICBBdXRob3JpemF0aW9uOiBcIkJlYXJlciBcIiArIHRva2VuLFxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBvcHRpb25zID0geyByZXNwb25zZVR5cGU6IFwidGV4dFwiIGFzIFwidGV4dFwiLCBoZWFkZXJzOiBodHRwSGVhZGVycyB9O1xyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4ge1xyXG4gICAgICB0aGlzLmh0dHBcclxuICAgICAgICAuZ2V0KFwiL0FQSS9Ub2tlbi9HZXRaZW5kZXNrSldUXCIsIG9wdGlvbnMpXHJcbiAgICAgICAgLnBpcGUodGltZW91dCh0aW1lKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICBvYnNlcnZlci5uZXh0KGRhdGEpO1xyXG4gICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFBPU1RleHQoXHJcbiAgICB1cmw6IHN0cmluZyxcclxuICAgIGRhdGE/OiBhbnksXHJcbiAgICB0aW1lOiBudW1iZXIgPSAxMDAwMDBcclxuICApOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgbGV0IHRva2VuID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJUb2tlblwiKTtcclxuICAgIGxldCBodHRwSGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxyXG4gICAgICBcIkNhY2hlLUNvbnRyb2xcIjogXCJuby1jYWNoZVwiLFxyXG4gICAgICBBdXRob3JpemF0aW9uOiBcIkJlYXJlciBcIiArIHRva2VuLFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHsgcmVzcG9uc2VUeXBlOiBcInRleHRcIiBhcyBcInRleHRcIiwgaGVhZGVyczogaHR0cEhlYWRlcnMgfTtcclxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IHtcclxuICAgICAgdGhpcy5odHRwXHJcbiAgICAgICAgLnBvc3QodXJsLCBkYXRhLCBvcHRpb25zKVxyXG4gICAgICAgIC5waXBlKHRpbWVvdXQodGltZSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICBvYnNlcnZlci5uZXh0KHJlcyk7XHJcbiAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gdXJsIFxyXG4gICAqIEByZXR1cm5zIFxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQ8VD4odXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIGxldCB0b2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiVG9rZW5cIik7XHJcbiAgICBsZXQgaHR0cEhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcclxuICAgICAgXCJDYWNoZS1Db250cm9sXCI6IFwibm8tY2FjaGVcIixcclxuICAgIH0pO1xyXG4gICAgaWYgKHRva2VuKSB7XHJcbiAgICAgIGh0dHBIZWFkZXJzID0gaHR0cEhlYWRlcnMuYXBwZW5kKFwiQXV0aG9yaXphdGlvblwiLCBcIkJlYXJlciBcIiArIHRva2VuKTtcclxuICAgIH1cclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBoZWFkZXJzOiBodHRwSGVhZGVycyxcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VD4odXJsLCBvcHRpb25zKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKGVyciA9PiB7XHJcbiAgICAgICAgICAvLyBzaG93IHRvYXN0ciBlcnJvclxyXG4gICAgICAgICAgbGV0IGVyck1lc3NhZ2UgPSB0aGlzLmVycm9yTWVzc2FnZUhhbmRsaW5nKGVycik7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihcclxuICAgICAgICAgICAgZXJyTWVzc2FnZS5NZXNzYWdlICE9IFwiXCIgPyBlcnJNZXNzYWdlLk1lc3NhZ2UgOiBcIkFuIHVua25vd24gZXJyb3IgaGFzIG9jY3VyZWQhXCIsXHJcbiAgICAgICAgICAgIGVyck1lc3NhZ2UuaGVhZGVyKTtcclxuICAgICAgICAgIGxldCBlcnJvciQgPSBvZignZXJyb3InLCBlcnIpXHJcbiAgICAgICAgICBpZiAoZXJyLnN0YXR1cyA9PSA0MDIpIHtcclxuICAgICAgICAgICAgZXJyb3IkID0gZnJvbSh0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9tZW51L1Byb2ZpbGUvTWFpbi9NeV9TdWJzY3JpcHRpb24nXSkpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gZXJyb3IkXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcbiAgcHVibGljIGdldE5ld3M8VD4odXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFQ+KHVybClcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTUVUSE9EIFBPU1RcclxuICAgKiBUaGlzIHNob3VsZCBjYXN0IHRoZSBodHRwUmVzcG9uc2UgdG8gdGhlIGRhdGEgbW9kZWwgd2UgZXhwZWN0XHJcbiAgICogQHBhcmFtIHVybFxyXG4gICAqIEBwYXJhbSBkYXRhXHJcbiAgICogQHBhcmFtIHRpbWVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBwb3N0PFQ+KFxyXG4gICAgdXJsOiBzdHJpbmcsXHJcbiAgICBkYXRhPzogYW55LFxyXG4gICAgdGltZTogbnVtYmVyID0gMTAwMDAwXHJcbiAgKTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyKSA9PiB7XHJcbiAgICAgIGxldCB0b2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiVG9rZW5cIik7XHJcbiAgICAgIGxldCBodHRwSGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXHJcbiAgICAgICAgXCJDYWNoZS1Db250cm9sXCI6IFwibm8tY2FjaGVcIixcclxuICAgICAgfSk7XHJcbiAgICAgIGlmICh0b2tlbikge1xyXG4gICAgICAgIGh0dHBIZWFkZXJzID0gaHR0cEhlYWRlcnMuYXBwZW5kKFwiQXV0aG9yaXphdGlvblwiLCBcIkJlYXJlciBcIiArIHRva2VuKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgICBoZWFkZXJzOiBodHRwSGVhZGVycyxcclxuICAgICAgfTtcclxuXHJcbiAgICAgIHRoaXMuaHR0cFxyXG4gICAgICAgIC5wb3N0PFQ+KHVybCwgZGF0YSwgb3B0aW9ucylcclxuICAgICAgICAucGlwZSh0aW1lb3V0KHRpbWUpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICBvYnNlcnZlci5uZXh0KHJlc3VsdCk7XHJcbiAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVyci5zdGF0dXMgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgLy93aGVuIFJlc3BvbnNlIGlzIG5vdCBhcHBsaWNhdGlvbi9qc29uIGV4OiBzb21lIEFQSSByZXR1cm4gdGV4dC9jc3ZcclxuICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KGVyci5lcnJvci50ZXh0KTtcclxuICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGxldCB1bmF1dGhvcml6ZWQgPSB0aGlzLnVuYXV0aG9yaXplZEVycm9ySGFuZGxpbmcoZXJyKTtcclxuICAgICAgICAgICAgICBpZiAoIXVuYXV0aG9yaXplZCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGVyck1lc3NhZ2UgPSB0aGlzLmVycm9yTWVzc2FnZUhhbmRsaW5nKGVycik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihcclxuICAgICAgICAgICAgICAgICAgZXJyTWVzc2FnZS5NZXNzYWdlICE9IFwiXCJcclxuICAgICAgICAgICAgICAgICAgICA/IGVyck1lc3NhZ2UuTWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgIDogXCJBbiB1bmtub3duIGVycm9yIGhhcyBvY2N1cmVkIVwiLFxyXG4gICAgICAgICAgICAgICAgICBlcnJNZXNzYWdlLmhlYWRlciwgeyBlbmFibGVIdG1sOiB0cnVlIH1cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKGVycik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1FVEhPRCBQVVRcclxuICAgKiBUaGlzIHNob3VsZCBjYXN0IHRoZSBodHRwUmVzcG9uc2UgdG8gdGhlIGRhdGEgbW9kZWwgd2UgZXhwZWN0XHJcbiAgICogQHBhcmFtIHVybFxyXG4gICAqIEBwYXJhbSBkYXRhXHJcbiAgICogQHBhcmFtIHRpbWVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBwdXQ8VD4oXHJcbiAgICB1cmw6IHN0cmluZyxcclxuICAgIGRhdGE/OiBhbnksXHJcbiAgICB0aW1lOiBudW1iZXIgPSAxMDAwMDBcclxuICApOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IHtcclxuICAgICAgbGV0IHRva2VuID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJUb2tlblwiKTtcclxuICAgICAgbGV0IGh0dHBIZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcclxuICAgICAgICBcIkNhY2hlLUNvbnRyb2xcIjogXCJuby1jYWNoZVwiLFxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKHRva2VuKSB7XHJcbiAgICAgICAgaHR0cEhlYWRlcnMgPSBodHRwSGVhZGVycy5hcHBlbmQoXCJBdXRob3JpemF0aW9uXCIsIFwiQmVhcmVyIFwiICsgdG9rZW4pO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICAgIGhlYWRlcnM6IGh0dHBIZWFkZXJzLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5odHRwXHJcbiAgICAgICAgLnB1dDxUPih1cmwsIGRhdGEsIG9wdGlvbnMpXHJcbiAgICAgICAgLnBpcGUodGltZW91dCh0aW1lKSlcclxuICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChyZXN1bHQpO1xyXG4gICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIuc3RhdHVzID09IDIwMCkge1xyXG4gICAgICAgICAgICAgIC8vd2hlbiBSZXNwb25zZSBpcyBub3QgYXBwbGljYXRpb24vanNvbiBleDogc29tZSBBUEkgcmV0dXJuIHRleHQvY3N2XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChlcnIuZXJyb3IudGV4dCk7XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBsZXQgdW5hdXRob3JpemVkID0gdGhpcy51bmF1dGhvcml6ZWRFcnJvckhhbmRsaW5nKGVycik7XHJcbiAgICAgICAgICAgICAgaWYgKCF1bmF1dGhvcml6ZWQpIHtcclxuICAgICAgICAgICAgICAgIGxldCBlcnJNZXNzYWdlID0gdGhpcy5lcnJvck1lc3NhZ2VIYW5kbGluZyhlcnIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoXHJcbiAgICAgICAgICAgICAgICAgIGVyck1lc3NhZ2UuTWVzc2FnZSAhPSBcIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgPyBlcnJNZXNzYWdlLk1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICA6IFwiQW4gdW5rbm93biBlcnJvciBoYXMgb2NjdXJlZCFcIixcclxuICAgICAgICAgICAgICAgICAgZXJyTWVzc2FnZS5oZWFkZXJcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKGVycik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1FVEhPRCBERUxFVEVcclxuICAgKiBUaGlzIHNob3VsZCBjYXN0IHRoZSBodHRwUmVzcG9uc2UgdG8gdGhlIGRhdGEgbW9kZWwgd2UgZXhwZWN0XHJcbiAgICogQHBhcmFtIHVybFxyXG4gICAqIEBwYXJhbSBkYXRhXHJcbiAgICogQHBhcmFtIHRpbWVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBkZWxldGU8VD4oXHJcbiAgICB1cmw6IHN0cmluZyxcclxuICAgIGRhdGE/OiBhbnksXHJcbiAgICB0aW1lOiBudW1iZXIgPSAxMDAwMDBcclxuICApOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IHtcclxuICAgICAgbGV0IHRva2VuID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJUb2tlblwiKTtcclxuICAgICAgbGV0IGh0dHBIZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcclxuICAgICAgICBcIkNhY2hlLUNvbnRyb2xcIjogXCJuby1jYWNoZVwiLFxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKHRva2VuKSB7XHJcbiAgICAgICAgaHR0cEhlYWRlcnMgPSBodHRwSGVhZGVycy5hcHBlbmQoXCJBdXRob3JpemF0aW9uXCIsIFwiQmVhcmVyIFwiICsgdG9rZW4pO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICAgIGhlYWRlcnM6IGh0dHBIZWFkZXJzLFxyXG4gICAgICAgIGJvZHk6IGRhdGFcclxuICAgICAgfTtcclxuXHJcbiAgICAgIHRoaXMuaHR0cFxyXG4gICAgICAgIC5kZWxldGU8VD4odXJsLCBvcHRpb25zKVxyXG4gICAgICAgIC5waXBlKHRpbWVvdXQodGltZSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgIG9ic2VydmVyLm5leHQocmVzdWx0KTtcclxuICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXJyLnN0YXR1cyA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAvL3doZW4gUmVzcG9uc2UgaXMgbm90IGFwcGxpY2F0aW9uL2pzb24gZXg6IHNvbWUgQVBJIHJldHVybiB0ZXh0L2NzdlxyXG4gICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoZXJyLmVycm9yLnRleHQpO1xyXG4gICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgbGV0IHVuYXV0aG9yaXplZCA9IHRoaXMudW5hdXRob3JpemVkRXJyb3JIYW5kbGluZyhlcnIpO1xyXG4gICAgICAgICAgICAgIGlmICghdW5hdXRob3JpemVkKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZXJyTWVzc2FnZSA9IHRoaXMuZXJyb3JNZXNzYWdlSGFuZGxpbmcoZXJyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKFxyXG4gICAgICAgICAgICAgICAgICBlcnJNZXNzYWdlLk1lc3NhZ2UgIT0gXCJcIlxyXG4gICAgICAgICAgICAgICAgICAgID8gZXJyTWVzc2FnZS5NZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgOiBcIkFuIHVua25vd24gZXJyb3IgaGFzIG9jY3VyZWQhXCIsXHJcbiAgICAgICAgICAgICAgICAgIGVyck1lc3NhZ2UuaGVhZGVyXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBvYnNlcnZlci5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVuYXV0aG9yaXplZEVycm9ySGFuZGxpbmcoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkge1xyXG4gICAgbGV0IHJldFZhbCA9IGZhbHNlO1xyXG4gICAgaWYgKGVyci5zdGF0dXMgPT0gNDAxIHx8IGVyci5zdGF0dXMgPT0gNDAzKSB7XHJcbiAgICAgIC8vVW5hdXRob3JpemVkIEVycm9yIEhhbmRsaW5nXHJcbiAgICAgIGxldCB0b2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiVG9rZW5cIik7XHJcbiAgICAgIGlmICh0b2tlbikge1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9tZW51L1VuYXV0aG9yaXplZC9NYWluL1VuYXV0aG9yaXplZFwiXSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy9yZWRpcmVjdCB0byBMb2dpbiBwYWdlIGlmIHRoZXJlIGlzIG5vIEpXVCBUT0tFTiBhdmFpbGFibGVcclxuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IFwiL1wiO1xyXG4gICAgICB9XHJcbiAgICAgIHJldFZhbCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0VmFsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlcnJvck1lc3NhZ2VIYW5kbGluZyhlcnI6IGFueSk6IHsgTWVzc2FnZTogc3RyaW5nOyBoZWFkZXI6IHN0cmluZyB9IHtcclxuICAgIGxldCBoZWFkZXIgPSBcIkFQSSBFcnJvclwiO1xyXG4gICAgbGV0IG1lc3NhZ2UgPSBcIkV4Y2VwdGlvbiBNZXNzYWdlXCI7XHJcbiAgICBpZiAoZXJyLmVycm9yKSB7XHJcbiAgICAgIC8vSGFuZGxlIDRYWCBlcnJvciBhbmQgNVhYIEVycm9yXHJcbiAgICAgIGhlYWRlciA9IFwiQVBJIEVycm9yIC0gXCIgKyBlcnIuc3RhdHVzO1xyXG4gICAgICBpZiAoZXJyLnN0YXR1cyA9PSA0NTEpIHtcclxuICAgICAgICBoZWFkZXIgPSBcIkVycm9yXCI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChlcnIuZXJyb3IpIHtcclxuICAgICAgICBtZXNzYWdlID0gZXJyLmVycm9yLk1lc3NhZ2U7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChlcnIuTWVzc2FnZSkge1xyXG4gICAgICAgIC8vSGFuZGxlIHRpbWVvdXQgc2NlbmFyaW8gd2UgZG8gbm90IHJlY2VpdmUgSFRUUCBTdGF0dXNDb2RlXHJcbiAgICAgICAgaGVhZGVyID0gXCJBUEkgRXJyb3IgLSBcIiArIGVyci5uYW1lO1xyXG4gICAgICAgIG1lc3NhZ2UgPSBlcnIuTWVzc2FnZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgaGVhZGVyOiBoZWFkZXIsIE1lc3NhZ2U6IG1lc3NhZ2UgfTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwb3N0Rm9ybURhdGFXaXRob3V0QmVhcmVyKFxyXG4gICAgdXJsOiBzdHJpbmcsXHJcbiAgICBkYXRhOiBGb3JtRGF0YVxyXG4gICk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyKSA9PiB7XHJcbiAgICAgIHRoaXMuaHR0cFxyXG4gICAgICAgIC5wb3N0PGFueT4odXJsLCBkYXRhKVxyXG4gICAgICAgIC5waXBlKHRpbWVvdXQoMTAwMDAwKSlcclxuICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIG9ic2VydmVyLm5leHQoZGF0YSk7XHJcbiAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVyci5zdGF0dXMgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChlcnIuZXJyb3IudGV4dCk7XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvYnNlcnZlci5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHBvc3RGb3JtRGF0YShcclxuICAgIHVybDogc3RyaW5nLFxyXG4gICAgZGF0YTogRm9ybURhdGEsXHJcbiAgICBzaG93VG9hc3RyOiBib29sZWFuID0gdHJ1ZVxyXG4gICk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyKSA9PiB7XHJcbiAgICAgIGxldCB0b2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiVG9rZW5cIik7XHJcbiAgICAgIGxldCBodHRwSGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgQXV0aG9yaXphdGlvbjogXCJCZWFyZXIgXCIgKyB0b2tlbixcclxuICAgICAgfSk7XHJcbiAgICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICAgIGhlYWRlcnM6IGh0dHBIZWFkZXJzLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5odHRwXHJcbiAgICAgICAgLnBvc3Q8YW55Pih1cmwsIGRhdGEsIG9wdGlvbnMpXHJcbiAgICAgICAgLnBpcGUodGltZW91dCgxMDAwMDApKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICBvYnNlcnZlci5uZXh0KGRhdGEpO1xyXG4gICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIChlcnIpID0+IHtcclxuICAgICAgICAgICAgLy9FeGNlcHRpb24gSGFuZGxpbmdcclxuXHJcbiAgICAgICAgICAgIGlmIChlcnIuc3RhdHVzID09IDIwMCkge1xyXG4gICAgICAgICAgICAgIC8vd2hlbiBSZXNwb25zZSBpcyBub3QgYXBwbGljYXRpb24vanNvbiBleDogc29tZSBBUEkgcmV0dXJuIHRleHQvY3N2XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChlcnIuZXJyb3IudGV4dCk7XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBsZXQgdW5hdXRob3JpemVkID0gdGhpcy51bmF1dGhvcml6ZWRFcnJvckhhbmRsaW5nKGVycik7XHJcbiAgICAgICAgICAgICAgaWYgKCF1bmF1dGhvcml6ZWQgJiYgc2hvd1RvYXN0cikge1xyXG4gICAgICAgICAgICAgICAgbGV0IGVyck1lc3NhZ2UgPSB0aGlzLmVycm9yTWVzc2FnZUhhbmRsaW5nKGVycik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihcclxuICAgICAgICAgICAgICAgICAgZXJyTWVzc2FnZS5NZXNzYWdlICE9IFwiXCJcclxuICAgICAgICAgICAgICAgICAgICA/IGVyck1lc3NhZ2UuTWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgIDogXCJBbiB1bmtub3duIGVycm9yIGhhcyBvY2N1cmVkIVwiLFxyXG4gICAgICAgICAgICAgICAgICBlcnJNZXNzYWdlLmhlYWRlclxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKGVycik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
420
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVhbHBvcy1ucG0vbmctZGVhbHBvcy1saWJyYXJ5L3NlcnZpY2VzL2h0dHAvc3JjL2h0dHAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFHTCxXQUFXLEdBQ1osTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQU1yRCxNQUFNLE9BQU8sV0FBVztJQUN0QixZQUNVLElBQWdCLEVBQ2hCLE1BQXFCLEVBQ3JCLE1BQWM7UUFGZCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUV4QixDQUFDO0lBRU0sZUFBZSxDQUNwQixHQUFXLEVBQ1gsTUFBZSxFQUNmLE9BQWUsTUFBTTtRQUVyQixJQUFJLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2hDLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxtQ0FBbUMsQ0FBQyxDQUFDO1FBQzNFLE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNqQyxJQUFJLENBQUMsSUFBSTtpQkFDTixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7aUJBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ25CLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNs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QUUsQ0FBQzt3QkFDdEIsb0VBQW9FO3dCQUNwRSxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQzlCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDdEIsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsQ0FBQzt3QkFDdkQsSUFBSSxDQUFDLFlBQVksSUFBSSxVQUFVLEVBQUUsQ0FBQzs0QkFDaEMsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDOzRCQUNoRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZixVQUFVLENBQUMsT0FBTyxJQUFJLEVBQUU7Z0NBQ3RCLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTztnQ0FDcEIsQ0FBQyxDQUFDLCtCQUErQixFQUNuQyxVQUFVLENBQUMsTUFBTSxDQUNsQixDQUFDO3dCQUNKLENBQUM7d0JBQ0QsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDdEIsQ0FBQztnQkFDSCxDQUFDO2FBQ0YsQ0FDQSxDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQXJkVSxXQUFXO2tIQUFYLFdBQVcsY0FGVixNQUFNOzsyRkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtcclxuICBIdHRwQ2xpZW50LFxyXG4gIEh0dHBFcnJvclJlc3BvbnNlLFxyXG4gIEh0dHBIZWFkZXJzLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSBcIm5neC10b2FzdHJcIjtcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgdGltZW91dCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIdHRwU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcclxuICApIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBQb3N0VG9VcmxFbmNvZGUoXHJcbiAgICB1cmw6IHN0cmluZyxcclxuICAgIHBhcmFtcz86IHN0cmluZyxcclxuICAgIHRpbWU6IG51bWJlciA9IDEwMDAwMFxyXG4gICk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xyXG4gICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KFwiQ29udGVudC1UeXBlXCIsIFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIpO1xyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4ge1xyXG4gICAgICB0aGlzLmh0dHBcclxuICAgICAgICAucG9zdCgodXJsKSwgcGFyYW1zLCB7IGhlYWRlcnM6IGhlYWRlcnMgfSlcclxuICAgICAgICAucGlwZSh0aW1lb3V0KHRpbWUpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgICAgIG9ic2VydmVyLm5leHQoZGF0YSk7XHJcbiAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0VGV4dCh0aW1lOiBudW1iZXIgPSAxMDAwMDApOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgbGV0IHRva2VuID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJUb2tlblwiKTtcclxuICAgIGxldCBodHRwSGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgIEF1dGhvcml6YXRpb246IFwiQmVhcmVyIFwiICsgdG9rZW4sXHJcbiAgICB9KTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7IHJlc3BvbnNlVHlwZTogXCJ0ZXh0XCIgYXMgXCJ0ZXh0XCIsIGhlYWRlcnM6IGh0dHBIZWFkZXJzIH07XHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyKSA9PiB7XHJcbiAgICAgIHRoaXMuaHR0cFxyXG4gICAgICAgIC5nZXQoKFwiL0FQSS9Ub2tlbi9HZXRaZW5kZXNrSldUXCIpLCBvcHRpb25zKVxyXG4gICAgICAgIC5waXBlKHRpbWVvdXQodGltZSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgb2JzZXJ2ZXIubmV4dChkYXRhKTtcclxuICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBQT1NUZXh0KFxyXG4gICAgdXJsOiBzdHJpbmcsXHJcbiAgICBkYXRhPzogYW55LFxyXG4gICAgdGltZTogbnVtYmVyID0gMTAwMDAwXHJcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgIGxldCB0b2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiVG9rZW5cIik7XHJcbiAgICBsZXQgaHR0cEhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcclxuICAgICAgXCJDYWNoZS1Db250cm9sXCI6IFwibm8tY2FjaGVcIixcclxuICAgICAgQXV0aG9yaXphdGlvbjogXCJCZWFyZXIgXCIgKyB0b2tlbixcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7IHJlc3BvbnNlVHlwZTogXCJ0ZXh0XCIgYXMgXCJ0ZXh0XCIsIGhlYWRlcnM6IGh0dHBIZWFkZXJzIH07XHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyKSA9PiB7XHJcbiAgICAgIHRoaXMuaHR0cFxyXG4gICAgICAgIC5wb3N0KCh1cmwpLCBkYXRhLCBvcHRpb25zKVxyXG4gICAgICAgIC5waXBlKHRpbWVvdXQodGltZSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICBvYnNlcnZlci5uZXh0KHJlcyk7XHJcbiAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gdXJsIFxyXG4gICAqIEByZXR1cm5zIFxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQ8VD4odXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIGxldCB0b2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiVG9rZW5cIik7XHJcbiAgICBsZXQgaHR0cEhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcclxuICAgICAgXCJDYWNoZS1Db250cm9sXCI6IFwibm8tY2FjaGVcIixcclxuICAgIH0pO1xyXG4gICAgaWYgKHRva2VuKSB7XHJcbiAgICAgIGh0dHBIZWFkZXJzID0gaHR0cEhlYWRlcnMuYXBwZW5kKFwiQXV0aG9yaXphdGlvblwiLCBcIkJlYXJlciBcIiArIHRva2VuKTtcclxuICAgIH1cclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBoZWFkZXJzOiBodHRwSGVhZGVycyxcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VD4oKHVybCksIG9wdGlvbnMpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcclxuICAgICAgICAgIGxldCB1bmF1dGhvcml6ZWQgPSB0aGlzLnVuYXV0aG9yaXplZEVycm9ySGFuZGxpbmcoZXJyKTtcclxuICAgICAgICAgIGlmICghdW5hdXRob3JpemVkKSB7XHJcbiAgICAgICAgICAgIC8vIHNob3cgdG9hc3RyIGVycm9yXHJcbiAgICAgICAgICAgIGxldCBlcnJNZXNzYWdlID0gdGhpcy5lcnJvck1lc3NhZ2VIYW5kbGluZyhlcnIpO1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihcclxuICAgICAgICAgICAgICBlcnJNZXNzYWdlLk1lc3NhZ2UgIT0gXCJcIiA/IGVyck1lc3NhZ2UuTWVzc2FnZSA6IFwiQW4gdW5rbm93biBlcnJvciBoYXMgb2NjdXJlZCFcIixcclxuICAgICAgICAgICAgICBlcnJNZXNzYWdlLmhlYWRlcik7XHJcbiAgICAgICAgICAgIHRoaXMucGF5bWVudEVycm9ySGFuZGxpbmcoZXJyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycik7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXROZXdzPFQ+KHVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxUPih1cmwpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGVzIHBheW1lbnQgZXJyb3JzIGJ5IG5hdmlnYXRpbmcgdG8gdGhlIHN1YnNjcmlwdGlvbiBwYWdlIGlmIHRoZSBlcnJvciBzdGF0dXMgaXMgNDAyLlxyXG4gICAqIEBwYXJhbSBlcnIgLSBUaGUgSHR0cEVycm9yUmVzcG9uc2Ugb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGVycm9yIGluZm9ybWF0aW9uLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgcGF5bWVudEVycm9ySGFuZGxpbmcoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkge1xyXG4gICAgaWYgKGVyci5zdGF0dXMgPT0gNDAyKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL21lbnUvUHJvZmlsZS9NYWluL015X1N1YnNjcmlwdGlvbiddKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1FVEhPRCBQT1NUXHJcbiAgICogVGhpcyBzaG91bGQgY2FzdCB0aGUgaHR0cFJlc3BvbnNlIHRvIHRoZSBkYXRhIG1vZGVsIHdlIGV4cGVjdFxyXG4gICAqIEBwYXJhbSB1cmxcclxuICAgKiBAcGFyYW0gZGF0YVxyXG4gICAqIEBwYXJhbSB0aW1lXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICBwdWJsaWMgcG9zdDxUPihcclxuICAgIHVybDogc3RyaW5nLFxyXG4gICAgZGF0YT86IGFueSxcclxuICAgIHRpbWU6IG51bWJlciA9IDEwMDAwMFxyXG4gICk6IE9ic2VydmFibGU8VD4ge1xyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4ge1xyXG4gICAgICBsZXQgdG9rZW4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIlRva2VuXCIpO1xyXG4gICAgICBsZXQgaHR0cEhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxyXG4gICAgICAgIFwiQ2FjaGUtQ29udHJvbFwiOiBcIm5vLWNhY2hlXCIsXHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAodG9rZW4pIHtcclxuICAgICAgICBodHRwSGVhZGVycyA9IGh0dHBIZWFkZXJzLmFwcGVuZChcIkF1dGhvcml6YXRpb25cIiwgXCJCZWFyZXIgXCIgKyB0b2tlbik7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgaGVhZGVyczogaHR0cEhlYWRlcnNcclxuICAgICAgfTtcclxuICAgICAgRGF0ZS5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGxldCB2ID0gdGhpcy5nZXRGdWxsWWVhcigpICtcclxuICAgICAgICAgICctJyArIHBhZCh0aGlzLmdldE1vbnRoKCkgKyAxKSArXHJcbiAgICAgICAgICAnLScgKyBwYWQodGhpcy5nZXREYXRlKCkpICtcclxuICAgICAgICAgICdUJyArIHBhZCh0aGlzLmdldEhvdXJzKCkpICtcclxuICAgICAgICAgICc6JyArIHBhZCh0aGlzLmdldE1pbnV0ZXMoKSkgK1xyXG4gICAgICAgICAgJzonICsgcGFkKHRoaXMuZ2V0U2Vjb25kcygpKSArXHJcbiAgICAgICAgICAnLicgKyAnMDAwJztcclxuICAgICAgICByZXR1cm4gdlxyXG4gICAgICB9XHJcblxyXG4gICAgICBmdW5jdGlvbiBwYWQobnVtYmVyOiBudW1iZXIpIHtcclxuICAgICAgICBpZiAobnVtYmVyIDwgMTApIHtcclxuICAgICAgICAgIHJldHVybiAnMCcgKyBudW1iZXI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudW1iZXI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuaHR0cFxyXG4gICAgICAgIC5wb3N0PFQ+KCh1cmwpLCBkYXRhLCBvcHRpb25zKVxyXG4gICAgICAgIC5waXBlKHRpbWVvdXQodGltZSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgIG9ic2VydmVyLm5leHQocmVzdWx0KTtcclxuICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXJyLnN0YXR1cyA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAvL3doZW4gUmVzcG9uc2UgaXMgbm90IGFwcGxpY2F0aW9uL2pzb24gZXg6IHNvbWUgQVBJIHJldHVybiB0ZXh0L2NzdlxyXG4gICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoZXJyLmVycm9yLnRleHQpO1xyXG4gICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgbGV0IHVuYXV0aG9yaXplZCA9IHRoaXMudW5hdXRob3JpemVkRXJyb3JIYW5kbGluZyhlcnIpO1xyXG4gICAgICAgICAgICAgIGlmICghdW5hdXRob3JpemVkKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZXJyTWVzc2FnZSA9IHRoaXMuZXJyb3JNZXNzYWdlSGFuZGxpbmcoZXJyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKFxyXG4gICAgICAgICAgICAgICAgICBlcnJNZXNzYWdlLk1lc3NhZ2UgIT0gXCJcIlxyXG4gICAgICAgICAgICAgICAgICAgID8gZXJyTWVzc2FnZS5NZXNzYWdlXHJcbiAgICAgICAgICAgICAgICAgICAgOiBcIkFuIHVua25vd24gZXJyb3IgaGFzIG9jY3VyZWQhXCIsXHJcbiAgICAgICAgICAgICAgICAgIGVyck1lc3NhZ2UuaGVhZGVyLCB7IGVuYWJsZUh0bWw6IHRydWUgfVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAqIE1FVEhPRCBQT1NUXHJcbiAqIFVzZSB0aGlzIG1ldGhvZCB3aGVuIHdlIGFyZSBleHBlY3RpbmcgYmxvYiB0byBiZSB3cml0dGVuIGZyb20gdGhlIHNlcnZlclxyXG4gKiBAcGFyYW0gdXJsXHJcbiAqIEBwYXJhbSBkYXRhXHJcbiAqIEBwYXJhbSB0aW1lXHJcbiAqIEByZXR1cm5zXHJcbiAqL1xyXG4gIHB1YmxpYyBwb3N0RmlsZShcclxuICAgIHVybDogc3RyaW5nLFxyXG4gICAgZGF0YT86IGFueSxcclxuICAgIHRpbWU6IG51bWJlciA9IDEwMDAwMFxyXG4gICk6IE9ic2VydmFibGU8eyB0aXRsZTogc3RyaW5nIHwgbnVsbCwgZmlsZTogQmxvYiB8IG51bGwgfT4ge1xyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4ge1xyXG4gICAgICBsZXQgdG9rZW4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIlRva2VuXCIpO1xyXG4gICAgICBsZXQgaHR0cEhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxyXG4gICAgICAgIFwiQ2FjaGUtQ29udHJvbFwiOiBcIm5vLWNhY2hlXCIsXHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAodG9rZW4pIHtcclxuICAgICAgICBodHRwSGVhZGVycyA9IGh0dHBIZWFkZXJzLmFwcGVuZChcIkF1dGhvcml6YXRpb25cIiwgXCJCZWFyZXIgXCIgKyB0b2tlbik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuaHR0cFxyXG4gICAgICAgIC5wb3N0KCh1cmwpLCBkYXRhLCB7IGhlYWRlcnM6IGh0dHBIZWFkZXJzLCBvYnNlcnZlOiAncmVzcG9uc2UnLCByZXNwb25zZVR5cGU6ICdibG9iJyB9KVxyXG4gICAgICAgIC5waXBlKHRpbWVvdXQodGltZSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgIG9ic2VydmVyLm5leHQoe1xyXG4gICAgICAgICAgICAgIHRpdGxlOiByZXN1bHQuaGVhZGVycy5nZXQoJ0NvbnRlbnQtRGlzcG9zaXRpb24nKSxcclxuICAgICAgICAgICAgICBmaWxlOiByZXN1bHQuYm9keVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnID09PSBlcnIuaGVhZGVycy5nZXQoJ0NvbnRlbnQtVHlwZScpKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgICAgICAgICAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignbG9hZGVuZCcsIChlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVyID0gSlNPTi5wYXJzZShlLnNyY0VsZW1lbnRbJ3Jlc3VsdCddKT8uTWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgbGV0IHVuYXV0aG9yaXplZCA9IHRoaXMudW5hdXRob3JpemVkRXJyb3JIYW5kbGluZyhlcnIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCF1bmF1dGhvcml6ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IGVyck1lc3NhZ2UgPSB0aGlzLmVycm9yTWVzc2FnZUhhbmRsaW5nKGVycik7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyID8/IFwiQW4gdW5rbm93biBlcnJvciBoYXMgb2NjdXJlZCFcIixcclxuICAgICAgICAgICAgICAgICAgICBlcnJNZXNzYWdlLmhlYWRlciwgeyBlbmFibGVIdG1sOiB0cnVlIH1cclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICByZWFkZXIucmVhZEFzVGV4dChlcnIuZXJyb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKGVycik7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNRVRIT0QgUFVUXHJcbiAgICogVGhpcyBzaG91bGQgY2FzdCB0aGUgaHR0cFJlc3BvbnNlIHRvIHRoZSBkYXRhIG1vZGVsIHdlIGV4cGVjdFxyXG4gICAqIEBwYXJhbSB1cmxcclxuICAgKiBAcGFyYW0gZGF0YVxyXG4gICAqIEBwYXJhbSB0aW1lXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICBwdWJsaWMgcHV0PFQ+KFxyXG4gICAgdXJsOiBzdHJpbmcsXHJcbiAgICBkYXRhPzogYW55LFxyXG4gICAgdGltZTogbnVtYmVyID0gMTAwMDAwXHJcbiAgKTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyKSA9PiB7XHJcbiAgICAgIGxldCB0b2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiVG9rZW5cIik7XHJcbiAgICAgIGxldCBodHRwSGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXHJcbiAgICAgICAgXCJDYWNoZS1Db250cm9sXCI6IFwibm8tY2FjaGVcIixcclxuICAgICAgfSk7XHJcbiAgICAgIGlmICh0b2tlbikge1xyXG4gICAgICAgIGh0dHBIZWFkZXJzID0gaHR0cEhlYWRlcnMuYXBwZW5kKFwiQXV0aG9yaXphdGlvblwiLCBcIkJlYXJlciBcIiArIHRva2VuKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgICBoZWFkZXJzOiBodHRwSGVhZGVycyxcclxuICAgICAgfTtcclxuXHJcbiAgICAgIHRoaXMuaHR0cFxyXG4gICAgICAgIC5wdXQ8VD4oKHVybCksIGRhdGEsIG9wdGlvbnMpXHJcbiAgICAgICAgLnBpcGUodGltZW91dCh0aW1lKSlcclxuICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChyZXN1bHQpO1xyXG4gICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIuc3RhdHVzID09IDIwMCkge1xyXG4gICAgICAgICAgICAgIC8vd2hlbiBSZXNwb25zZSBpcyBub3QgYXBwbGljYXRpb24vanNvbiBleDogc29tZSBBUEkgcmV0dXJuIHRleHQvY3N2XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChlcnIuZXJyb3IudGV4dCk7XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBsZXQgdW5hdXRob3JpemVkID0gdGhpcy51bmF1dGhvcml6ZWRFcnJvckhhbmRsaW5nKGVycik7XHJcbiAgICAgICAgICAgICAgaWYgKCF1bmF1dGhvcml6ZWQpIHtcclxuICAgICAgICAgICAgICAgIGxldCBlcnJNZXNzYWdlID0gdGhpcy5lcnJvck1lc3NhZ2VIYW5kbGluZyhlcnIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoXHJcbiAgICAgICAgICAgICAgICAgIGVyck1lc3NhZ2UuTWVzc2FnZSAhPSBcIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgPyBlcnJNZXNzYWdlLk1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICA6IFwiQW4gdW5rbm93biBlcnJvciBoYXMgb2NjdXJlZCFcIixcclxuICAgICAgICAgICAgICAgICAgZXJyTWVzc2FnZS5oZWFkZXJcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKGVycik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1FVEhPRCBERUxFVEVcclxuICAgKiBUaGlzIHNob3VsZCBjYXN0IHRoZSBodHRwUmVzcG9uc2UgdG8gdGhlIGRhdGEgbW9kZWwgd2UgZXhwZWN0XHJcbiAgICogQHBhcmFtIHVybFxyXG4gICAqIEBwYXJhbSBkYXRhXHJcbiAgICogQHBhcmFtIHRpbWVcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBkZWxldGU8VD4oXHJcbiAgICB1cmw6IHN0cmluZyxcclxuICAgIGRhdGE/OiBhbnksXHJcbiAgICB0aW1lOiBudW1iZXIgPSAxMDAwMDBcclxuICApOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IHtcclxuICAgICAgbGV0IHRva2VuID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJUb2tlblwiKTtcclxuICAgICAgbGV0IGh0dHBIZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcclxuICAgICAgICBcIkNhY2hlLUNvbnRyb2xcIjogXCJuby1jYWNoZVwiLFxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKHRva2VuKSB7XHJcbiAgICAgICAgaHR0cEhlYWRlcnMgPSBodHRwSGVhZGVycy5hcHBlbmQoXCJBdXRob3JpemF0aW9uXCIsIFwiQmVhcmVyIFwiICsgdG9rZW4pO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICAgIGhlYWRlcnM6IGh0dHBIZWFkZXJzLFxyXG4gICAgICAgIGJvZHk6IGRhdGFcclxuICAgICAgfTtcclxuXHJcbiAgICAgIHRoaXMuaHR0cFxyXG4gICAgICAgIC5kZWxldGU8VD4oKHVybCksIG9wdGlvbnMpXHJcbiAgICAgICAgLnBpcGUodGltZW91dCh0aW1lKSlcclxuICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChyZXN1bHQpO1xyXG4gICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIuc3RhdHVzID09IDIwMCkge1xyXG4gICAgICAgICAgICAgIC8vd2hlbiBSZXNwb25zZSBpcyBub3QgYXBwbGljYXRpb24vanNvbiBleDogc29tZSBBUEkgcmV0dXJuIHRleHQvY3N2XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChlcnIuZXJyb3IudGV4dCk7XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBsZXQgdW5hdXRob3JpemVkID0gdGhpcy51bmF1dGhvcml6ZWRFcnJvckhhbmRsaW5nKGVycik7XHJcbiAgICAgICAgICAgICAgaWYgKCF1bmF1dGhvcml6ZWQpIHtcclxuICAgICAgICAgICAgICAgIGxldCBlcnJNZXNzYWdlID0gdGhpcy5lcnJvck1lc3NhZ2VIYW5kbGluZyhlcnIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoXHJcbiAgICAgICAgICAgICAgICAgIGVyck1lc3NhZ2UuTWVzc2FnZSAhPSBcIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgPyBlcnJNZXNzYWdlLk1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICAgICA6IFwiQW4gdW5rbm93biBlcnJvciBoYXMgb2NjdXJlZCFcIixcclxuICAgICAgICAgICAgICAgICAgZXJyTWVzc2FnZS5oZWFkZXJcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKGVycik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdW5hdXRob3JpemVkRXJyb3JIYW5kbGluZyhlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSB7XHJcbiAgICBsZXQgcmV0VmFsID0gZmFsc2U7XHJcbiAgICBpZiAoZXJyLnN0YXR1cyA9PSA0MDEgfHwgZXJyLnN0YXR1cyA9PSA0MDMpIHtcclxuICAgICAgLy9VbmF1dGhvcml6ZWQgRXJyb3IgSGFuZGxpbmdcclxuICAgICAgbGV0IHRva2VuID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJUb2tlblwiKTtcclxuICAgICAgaWYgKHRva2VuKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL21lbnUvVW5hdXRob3JpemVkL01haW4vVW5hdXRob3JpemVkXCJdKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvL3JlZGlyZWN0IHRvIExvZ2luIHBhZ2UgaWYgdGhlcmUgaXMgbm8gSldUIFRPS0VOIGF2YWlsYWJsZVxyXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gXCIvXCI7XHJcbiAgICAgIH1cclxuICAgICAgcmV0VmFsID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXRWYWw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVycm9yTWVzc2FnZUhhbmRsaW5nKGVycjogYW55KTogeyBNZXNzYWdlOiBzdHJpbmc7IGhlYWRlcjogc3RyaW5nIH0ge1xyXG4gICAgO1xyXG4gICAgbGV0IGhlYWRlciA9IFwiQVBJIEVycm9yXCI7XHJcbiAgICBsZXQgbWVzc2FnZSA9IFwiRXhjZXB0aW9uIE1lc3NhZ2VcIjtcclxuICAgIGlmIChlcnIuZXJyb3IpIHtcclxuICAgICAgLy9IYW5kbGUgNFhYIGVycm9yIGFuZCA1WFggRXJyb3JcclxuICAgICAgaGVhZGVyID0gXCJBUEkgRXJyb3IgLSBcIiArIGVyci5zdGF0dXM7XHJcbiAgICAgIGlmIChlcnIuc3RhdHVzID09IDQ1MSkge1xyXG4gICAgICAgIGhlYWRlciA9IFwiRXJyb3JcIjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGVyci5lcnJvcikge1xyXG4gICAgICAgIG1lc3NhZ2UgPSBlcnIuZXJyb3IuTWVzc2FnZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGVyci5NZXNzYWdlKSB7XHJcbiAgICAgICAgLy9IYW5kbGUgdGltZW91dCBzY2VuYXJpbyB3ZSBkbyBub3QgcmVjZWl2ZSBIVFRQIFN0YXR1c0NvZGVcclxuICAgICAgICBoZWFkZXIgPSBcIkFQSSBFcnJvciAtIFwiICsgZXJyLm5hbWU7XHJcbiAgICAgICAgbWVzc2FnZSA9IGVyci5NZXNzYWdlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyBoZWFkZXI6IGhlYWRlciwgTWVzc2FnZTogbWVzc2FnZSB9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHBvc3RGb3JtRGF0YVdpdGhvdXRCZWFyZXIoXHJcbiAgICB1cmw6IHN0cmluZyxcclxuICAgIGRhdGE6IEZvcm1EYXRhXHJcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IHtcclxuICAgICAgdGhpcy5odHRwXHJcbiAgICAgICAgLnBvc3Q8YW55PigodXJsKSwgZGF0YSlcclxuICAgICAgICAucGlwZSh0aW1lb3V0KDEwMDAwMCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICBvYnNlcnZlci5uZXh0KGRhdGEpO1xyXG4gICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIuc3RhdHVzID09IDIwMCkge1xyXG4gICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoZXJyLmVycm9yLnRleHQpO1xyXG4gICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwb3N0Rm9ybURhdGEoXHJcbiAgICB1cmw6IHN0cmluZyxcclxuICAgIGRhdGE6IEZvcm1EYXRhLFxyXG4gICAgc2hvd1RvYXN0cjogYm9vbGVhbiA9IHRydWVcclxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4ge1xyXG4gICAgICBsZXQgdG9rZW4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIlRva2VuXCIpO1xyXG4gICAgICBsZXQgaHR0cEhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgIEF1dGhvcml6YXRpb246IFwiQmVhcmVyIFwiICsgdG9rZW4sXHJcbiAgICAgIH0pO1xyXG4gICAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgICBoZWFkZXJzOiBodHRwSGVhZGVycyxcclxuICAgICAgfTtcclxuXHJcbiAgICAgIHRoaXMuaHR0cFxyXG4gICAgICAgIC5wb3N0PGFueT4oKHVybCksIGRhdGEsIG9wdGlvbnMpXHJcbiAgICAgICAgLnBpcGUodGltZW91dCgxMDAwMDApKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIG9ic2VydmVyLm5leHQodmFsdWUpO1xyXG4gICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIC8vRXhjZXB0aW9uIEhhbmRsaW5nXHJcbiAgICAgICAgICAgIGlmIChlcnIuc3RhdHVzID09IDIwMCkge1xyXG4gICAgICAgICAgICAgIC8vd2hlbiBSZXNwb25zZSBpcyBub3QgYXBwbGljYXRpb24vanNvbiBleDogc29tZSBBUEkgcmV0dXJuIHRleHQvY3N2XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChlcnIuZXJyb3IudGV4dCk7XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBsZXQgdW5hdXRob3JpemVkID0gdGhpcy51bmF1dGhvcml6ZWRFcnJvckhhbmRsaW5nKGVycik7XHJcbiAgICAgICAgICAgICAgaWYgKCF1bmF1dGhvcml6ZWQgJiYgc2hvd1RvYXN0cikge1xyXG4gICAgICAgICAgICAgICAgbGV0IGVyck1lc3NhZ2UgPSB0aGlzLmVycm9yTWVzc2FnZUhhbmRsaW5nKGVycik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihcclxuICAgICAgICAgICAgICAgICAgZXJyTWVzc2FnZS5NZXNzYWdlICE9IFwiXCJcclxuICAgICAgICAgICAgICAgICAgICA/IGVyck1lc3NhZ2UuTWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgICAgIDogXCJBbiB1bmtub3duIGVycm9yIGhhcyBvY2N1cmVkIVwiLFxyXG4gICAgICAgICAgICAgICAgICBlcnJNZXNzYWdlLmhlYWRlclxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59Il19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Injectable } from '@angular/core';
|
|
3
|
-
import { Observable,
|
|
3
|
+
import { Observable, throwError } from 'rxjs';
|
|
4
4
|
import * as i1 from '@angular/common/http';
|
|
5
5
|
import { HttpHeaders } from '@angular/common/http';
|
|
6
6
|
import { timeout, catchError } from 'rxjs/operators';
|
|
@@ -12,18 +12,13 @@ class HttpService {
|
|
|
12
12
|
this.http = http;
|
|
13
13
|
this.toastr = toastr;
|
|
14
14
|
this.router = router;
|
|
15
|
-
this.a = 0;
|
|
16
|
-
alert('Dealpos');
|
|
17
|
-
}
|
|
18
|
-
testToastr() {
|
|
19
|
-
this.toastr.success("1", "1");
|
|
20
15
|
}
|
|
21
16
|
PostToUrlEncode(url, params, time = 100000) {
|
|
22
17
|
let headers = new HttpHeaders();
|
|
23
18
|
headers = headers.set("Content-Type", "application/x-www-form-urlencoded");
|
|
24
19
|
return new Observable((observer) => {
|
|
25
20
|
this.http
|
|
26
|
-
.post(url, params, { headers: headers })
|
|
21
|
+
.post((url), params, { headers: headers })
|
|
27
22
|
.pipe(timeout(time))
|
|
28
23
|
.subscribe((data) => {
|
|
29
24
|
observer.next(data);
|
|
@@ -39,7 +34,7 @@ class HttpService {
|
|
|
39
34
|
const options = { responseType: "text", headers: httpHeaders };
|
|
40
35
|
return new Observable((observer) => {
|
|
41
36
|
this.http
|
|
42
|
-
.get("/API/Token/GetZendeskJWT", options)
|
|
37
|
+
.get(("/API/Token/GetZendeskJWT"), options)
|
|
43
38
|
.pipe(timeout(time))
|
|
44
39
|
.subscribe((data) => {
|
|
45
40
|
observer.next(data);
|
|
@@ -57,7 +52,7 @@ class HttpService {
|
|
|
57
52
|
const options = { responseType: "text", headers: httpHeaders };
|
|
58
53
|
return new Observable((observer) => {
|
|
59
54
|
this.http
|
|
60
|
-
.post(url, data, options)
|
|
55
|
+
.post((url), data, options)
|
|
61
56
|
.pipe(timeout(time))
|
|
62
57
|
.subscribe((res) => {
|
|
63
58
|
observer.next(res);
|
|
@@ -82,21 +77,30 @@ class HttpService {
|
|
|
82
77
|
let options = {
|
|
83
78
|
headers: httpHeaders,
|
|
84
79
|
};
|
|
85
|
-
return this.http.get(url, options)
|
|
80
|
+
return this.http.get((url), options)
|
|
86
81
|
.pipe(catchError(err => {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
82
|
+
let unauthorized = this.unauthorizedErrorHandling(err);
|
|
83
|
+
if (!unauthorized) {
|
|
84
|
+
// show toastr error
|
|
85
|
+
let errMessage = this.errorMessageHandling(err);
|
|
86
|
+
this.toastr.error(errMessage.Message != "" ? errMessage.Message : "An unknown error has occured!", errMessage.header);
|
|
87
|
+
this.paymentErrorHandling(err);
|
|
93
88
|
}
|
|
94
|
-
return
|
|
89
|
+
return throwError(() => err);
|
|
95
90
|
}));
|
|
96
91
|
}
|
|
97
92
|
getNews(url) {
|
|
98
93
|
return this.http.get(url);
|
|
99
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* Handles payment errors by navigating to the subscription page if the error status is 402.
|
|
97
|
+
* @param err - The HttpErrorResponse object containing the error information.
|
|
98
|
+
*/
|
|
99
|
+
paymentErrorHandling(err) {
|
|
100
|
+
if (err.status == 402) {
|
|
101
|
+
this.router.navigate(['/menu/Profile/Main/My_Subscription']);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
100
104
|
/**
|
|
101
105
|
* METHOD POST
|
|
102
106
|
* This should cast the httpResponse to the data model we expect
|
|
@@ -116,10 +120,26 @@ class HttpService {
|
|
|
116
120
|
httpHeaders = httpHeaders.append("Authorization", "Bearer " + token);
|
|
117
121
|
}
|
|
118
122
|
let options = {
|
|
119
|
-
headers: httpHeaders
|
|
123
|
+
headers: httpHeaders
|
|
124
|
+
};
|
|
125
|
+
Date.prototype.toJSON = function () {
|
|
126
|
+
let v = this.getFullYear() +
|
|
127
|
+
'-' + pad(this.getMonth() + 1) +
|
|
128
|
+
'-' + pad(this.getDate()) +
|
|
129
|
+
'T' + pad(this.getHours()) +
|
|
130
|
+
':' + pad(this.getMinutes()) +
|
|
131
|
+
':' + pad(this.getSeconds()) +
|
|
132
|
+
'.' + '000';
|
|
133
|
+
return v;
|
|
120
134
|
};
|
|
135
|
+
function pad(number) {
|
|
136
|
+
if (number < 10) {
|
|
137
|
+
return '0' + number;
|
|
138
|
+
}
|
|
139
|
+
return number;
|
|
140
|
+
}
|
|
121
141
|
this.http
|
|
122
|
-
.post(url, data, options)
|
|
142
|
+
.post((url), data, options)
|
|
123
143
|
.pipe(timeout(time))
|
|
124
144
|
.subscribe({
|
|
125
145
|
next: (result) => {
|
|
@@ -146,6 +166,53 @@ class HttpService {
|
|
|
146
166
|
});
|
|
147
167
|
});
|
|
148
168
|
}
|
|
169
|
+
/**
|
|
170
|
+
* METHOD POST
|
|
171
|
+
* Use this method when we are expecting blob to be written from the server
|
|
172
|
+
* @param url
|
|
173
|
+
* @param data
|
|
174
|
+
* @param time
|
|
175
|
+
* @returns
|
|
176
|
+
*/
|
|
177
|
+
postFile(url, data, time = 100000) {
|
|
178
|
+
return new Observable((observer) => {
|
|
179
|
+
let token = localStorage.getItem("Token");
|
|
180
|
+
let httpHeaders = new HttpHeaders({
|
|
181
|
+
"Content-Type": "application/json",
|
|
182
|
+
"Cache-Control": "no-cache",
|
|
183
|
+
});
|
|
184
|
+
if (token) {
|
|
185
|
+
httpHeaders = httpHeaders.append("Authorization", "Bearer " + token);
|
|
186
|
+
}
|
|
187
|
+
this.http
|
|
188
|
+
.post((url), data, { headers: httpHeaders, observe: 'response', responseType: 'blob' })
|
|
189
|
+
.pipe(timeout(time))
|
|
190
|
+
.subscribe({
|
|
191
|
+
next: (result) => {
|
|
192
|
+
observer.next({
|
|
193
|
+
title: result.headers.get('Content-Disposition'),
|
|
194
|
+
file: result.body
|
|
195
|
+
});
|
|
196
|
+
observer.complete();
|
|
197
|
+
},
|
|
198
|
+
error: (err) => {
|
|
199
|
+
if ('application/json; charset=utf-8' === err.headers.get('Content-Type')) {
|
|
200
|
+
const reader = new FileReader();
|
|
201
|
+
reader.addEventListener('loadend', (e) => {
|
|
202
|
+
const er = JSON.parse(e.srcElement['result'])?.Message;
|
|
203
|
+
let unauthorized = this.unauthorizedErrorHandling(err);
|
|
204
|
+
if (!unauthorized) {
|
|
205
|
+
let errMessage = this.errorMessageHandling(err);
|
|
206
|
+
this.toastr.error(er ?? "An unknown error has occured!", errMessage.header, { enableHtml: true });
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
reader.readAsText(err.error);
|
|
210
|
+
}
|
|
211
|
+
observer.error(err);
|
|
212
|
+
},
|
|
213
|
+
});
|
|
214
|
+
});
|
|
215
|
+
}
|
|
149
216
|
/**
|
|
150
217
|
* METHOD PUT
|
|
151
218
|
* This should cast the httpResponse to the data model we expect
|
|
@@ -168,7 +235,7 @@ class HttpService {
|
|
|
168
235
|
headers: httpHeaders,
|
|
169
236
|
};
|
|
170
237
|
this.http
|
|
171
|
-
.put(url, data, options)
|
|
238
|
+
.put((url), data, options)
|
|
172
239
|
.pipe(timeout(time))
|
|
173
240
|
.subscribe({
|
|
174
241
|
next: (result) => {
|
|
@@ -218,7 +285,7 @@ class HttpService {
|
|
|
218
285
|
body: data
|
|
219
286
|
};
|
|
220
287
|
this.http
|
|
221
|
-
.delete(url, options)
|
|
288
|
+
.delete((url), options)
|
|
222
289
|
.pipe(timeout(time))
|
|
223
290
|
.subscribe({
|
|
224
291
|
next: (result) => {
|
|
@@ -262,6 +329,7 @@ class HttpService {
|
|
|
262
329
|
return retVal;
|
|
263
330
|
}
|
|
264
331
|
errorMessageHandling(err) {
|
|
332
|
+
;
|
|
265
333
|
let header = "API Error";
|
|
266
334
|
let message = "Exception Message";
|
|
267
335
|
if (err.error) {
|
|
@@ -286,7 +354,7 @@ class HttpService {
|
|
|
286
354
|
postFormDataWithoutBearer(url, data) {
|
|
287
355
|
return new Observable((observer) => {
|
|
288
356
|
this.http
|
|
289
|
-
.post(url, data)
|
|
357
|
+
.post((url), data)
|
|
290
358
|
.pipe(timeout(100000))
|
|
291
359
|
.subscribe({
|
|
292
360
|
next: (data) => {
|
|
@@ -313,38 +381,41 @@ class HttpService {
|
|
|
313
381
|
headers: httpHeaders,
|
|
314
382
|
};
|
|
315
383
|
this.http
|
|
316
|
-
.post(url, data, options)
|
|
384
|
+
.post((url), data, options)
|
|
317
385
|
.pipe(timeout(100000))
|
|
318
|
-
.subscribe(
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
}, (err) => {
|
|
322
|
-
//Exception Handling
|
|
323
|
-
if (err.status == 200) {
|
|
324
|
-
//when Response is not application/json ex: some API return text/csv
|
|
325
|
-
observer.next(err.error.text);
|
|
386
|
+
.subscribe({
|
|
387
|
+
next: (value) => {
|
|
388
|
+
observer.next(value);
|
|
326
389
|
observer.complete();
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
if (
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
390
|
+
},
|
|
391
|
+
error: (err) => {
|
|
392
|
+
//Exception Handling
|
|
393
|
+
if (err.status == 200) {
|
|
394
|
+
//when Response is not application/json ex: some API return text/csv
|
|
395
|
+
observer.next(err.error.text);
|
|
396
|
+
observer.complete();
|
|
397
|
+
}
|
|
398
|
+
else {
|
|
399
|
+
let unauthorized = this.unauthorizedErrorHandling(err);
|
|
400
|
+
if (!unauthorized && showToastr) {
|
|
401
|
+
let errMessage = this.errorMessageHandling(err);
|
|
402
|
+
this.toastr.error(errMessage.Message != ""
|
|
403
|
+
? errMessage.Message
|
|
404
|
+
: "An unknown error has occured!", errMessage.header);
|
|
405
|
+
}
|
|
406
|
+
observer.error(err);
|
|
335
407
|
}
|
|
336
|
-
observer.error(err);
|
|
337
408
|
}
|
|
338
409
|
});
|
|
339
410
|
});
|
|
340
411
|
}
|
|
341
412
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: HttpService, deps: [{ token: i1.HttpClient }, { token: i2.ToastrService }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
342
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: HttpService, providedIn:
|
|
413
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: HttpService, providedIn: "root" }); }
|
|
343
414
|
}
|
|
344
415
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: HttpService, decorators: [{
|
|
345
416
|
type: Injectable,
|
|
346
417
|
args: [{
|
|
347
|
-
providedIn:
|
|
418
|
+
providedIn: "root",
|
|
348
419
|
}]
|
|
349
420
|
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.ToastrService }, { type: i3.Router }] });
|
|
350
421
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dealpos-npm-ng-dealpos-library-services-http.mjs","sources":["../../../projects/dealpos-npm/ng-dealpos-library/services/http/src/http.service.ts","../../../projects/dealpos-npm/ng-dealpos-library/services/http/dealpos-npm-ng-dealpos-library-services-http.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\nimport { Observable, from, of } from \"rxjs\";\r\nimport {\r\n HttpClient,\r\n HttpErrorResponse,\r\n HttpHeaders,\r\n} from \"@angular/common/http\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { catchError, timeout } from \"rxjs/operators\";\r\nimport { Router } from \"@angular/router\";\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HttpService {\r\n a = 0\r\n constructor(\r\n private http: HttpClient,\r\n private toastr: ToastrService,\r\n private router: Router\r\n ) {\r\n alert('Dealpos')\r\n }\r\n public testToastr() {\r\n this.toastr.success(\"1\", \"1\")\r\n }\r\n public PostToUrlEncode(\r\n url: string,\r\n params?: string,\r\n time: number = 100000\r\n ): Observable<any> {\r\n let headers = new HttpHeaders();\r\n headers = headers.set(\"Content-Type\", \"application/x-www-form-urlencoded\");\r\n return new Observable((observer) => {\r\n this.http\r\n .post(url, params, { headers: headers })\r\n .pipe(timeout(time))\r\n .subscribe((data) => {\r\n observer.next(data);\r\n observer.complete();\r\n });\r\n });\r\n }\r\n\r\n public GetText(time: number = 100000): Observable<string> {\r\n let token = localStorage.getItem(\"Token\");\r\n let httpHeaders = new HttpHeaders({\r\n Authorization: \"Bearer \" + token,\r\n });\r\n const options = { responseType: \"text\" as \"text\", headers: httpHeaders };\r\n return new Observable((observer) => {\r\n this.http\r\n .get(\"/API/Token/GetZendeskJWT\", options)\r\n .pipe(timeout(time))\r\n .subscribe((data) => {\r\n observer.next(data);\r\n observer.complete();\r\n });\r\n });\r\n }\r\n\r\n public POSText(\r\n url: string,\r\n data?: any,\r\n time: number = 100000\r\n ): Observable<string> {\r\n let token = localStorage.getItem(\"Token\");\r\n let httpHeaders = new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Cache-Control\": \"no-cache\",\r\n Authorization: \"Bearer \" + token,\r\n });\r\n\r\n const options = { responseType: \"text\" as \"text\", headers: httpHeaders };\r\n return new Observable((observer) => {\r\n this.http\r\n .post(url, data, options)\r\n .pipe(timeout(time))\r\n .subscribe((res) => {\r\n observer.next(res);\r\n observer.complete();\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * \r\n * @param url \r\n * @returns \r\n */\r\n public get<T>(url: string): Observable<T> {\r\n let token = localStorage.getItem(\"Token\");\r\n let httpHeaders = new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Cache-Control\": \"no-cache\",\r\n });\r\n if (token) {\r\n httpHeaders = httpHeaders.append(\"Authorization\", \"Bearer \" + token);\r\n }\r\n let options = {\r\n headers: httpHeaders,\r\n };\r\n\r\n return this.http.get<T>(url, options)\r\n .pipe(\r\n catchError(err => {\r\n // show toastr error\r\n let errMessage = this.errorMessageHandling(err);\r\n this.toastr.error(\r\n errMessage.Message != \"\" ? errMessage.Message : \"An unknown error has occured!\",\r\n errMessage.header);\r\n let error$ = of('error', err)\r\n if (err.status == 402) {\r\n error$ = from(this.router.navigate(['/menu/Profile/Main/My_Subscription']))\r\n }\r\n return error$\r\n })\r\n );\r\n }\r\n public getNews<T>(url: string): Observable<T> {\r\n return this.http.get<T>(url)\r\n }\r\n /**\r\n * METHOD POST\r\n * This should cast the httpResponse to the data model we expect\r\n * @param url\r\n * @param data\r\n * @param time\r\n * @returns\r\n */\r\n public post<T>(\r\n url: string,\r\n data?: any,\r\n time: number = 100000\r\n ): Observable<T> {\r\n return new Observable((observer) => {\r\n let token = localStorage.getItem(\"Token\");\r\n let httpHeaders = new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Cache-Control\": \"no-cache\",\r\n });\r\n if (token) {\r\n httpHeaders = httpHeaders.append(\"Authorization\", \"Bearer \" + token);\r\n }\r\n let options = {\r\n headers: httpHeaders,\r\n };\r\n\r\n this.http\r\n .post<T>(url, data, options)\r\n .pipe(timeout(time))\r\n .subscribe({\r\n next: (result) => {\r\n observer.next(result);\r\n observer.complete();\r\n },\r\n error: (err) => {\r\n if (err.status == 200) {\r\n //when Response is not application/json ex: some API return text/csv\r\n observer.next(err.error.text);\r\n observer.complete();\r\n } else {\r\n let unauthorized = this.unauthorizedErrorHandling(err);\r\n if (!unauthorized) {\r\n let errMessage = this.errorMessageHandling(err);\r\n this.toastr.error(\r\n errMessage.Message != \"\"\r\n ? errMessage.Message\r\n : \"An unknown error has occured!\",\r\n errMessage.header, { enableHtml: true }\r\n );\r\n }\r\n observer.error(err);\r\n }\r\n },\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * METHOD PUT\r\n * This should cast the httpResponse to the data model we expect\r\n * @param url\r\n * @param data\r\n * @param time\r\n * @returns\r\n */\r\n public put<T>(\r\n url: string,\r\n data?: any,\r\n time: number = 100000\r\n ): Observable<T> {\r\n return new Observable((observer) => {\r\n let token = localStorage.getItem(\"Token\");\r\n let httpHeaders = new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Cache-Control\": \"no-cache\",\r\n });\r\n if (token) {\r\n httpHeaders = httpHeaders.append(\"Authorization\", \"Bearer \" + token);\r\n }\r\n let options = {\r\n headers: httpHeaders,\r\n };\r\n\r\n this.http\r\n .put<T>(url, data, options)\r\n .pipe(timeout(time))\r\n .subscribe({\r\n next: (result) => {\r\n observer.next(result);\r\n observer.complete();\r\n },\r\n error: (err) => {\r\n if (err.status == 200) {\r\n //when Response is not application/json ex: some API return text/csv\r\n observer.next(err.error.text);\r\n observer.complete();\r\n } else {\r\n let unauthorized = this.unauthorizedErrorHandling(err);\r\n if (!unauthorized) {\r\n let errMessage = this.errorMessageHandling(err);\r\n this.toastr.error(\r\n errMessage.Message != \"\"\r\n ? errMessage.Message\r\n : \"An unknown error has occured!\",\r\n errMessage.header\r\n );\r\n }\r\n observer.error(err);\r\n }\r\n },\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * METHOD DELETE\r\n * This should cast the httpResponse to the data model we expect\r\n * @param url\r\n * @param data\r\n * @param time\r\n * @returns\r\n */\r\n public delete<T>(\r\n url: string,\r\n data?: any,\r\n time: number = 100000\r\n ): Observable<T> {\r\n return new Observable((observer) => {\r\n let token = localStorage.getItem(\"Token\");\r\n let httpHeaders = new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Cache-Control\": \"no-cache\",\r\n });\r\n if (token) {\r\n httpHeaders = httpHeaders.append(\"Authorization\", \"Bearer \" + token);\r\n }\r\n let options = {\r\n headers: httpHeaders,\r\n body: data\r\n };\r\n\r\n this.http\r\n .delete<T>(url, options)\r\n .pipe(timeout(time))\r\n .subscribe({\r\n next: (result) => {\r\n observer.next(result);\r\n observer.complete();\r\n },\r\n error: (err) => {\r\n if (err.status == 200) {\r\n //when Response is not application/json ex: some API return text/csv\r\n observer.next(err.error.text);\r\n observer.complete();\r\n } else {\r\n let unauthorized = this.unauthorizedErrorHandling(err);\r\n if (!unauthorized) {\r\n let errMessage = this.errorMessageHandling(err);\r\n this.toastr.error(\r\n errMessage.Message != \"\"\r\n ? errMessage.Message\r\n : \"An unknown error has occured!\",\r\n errMessage.header\r\n );\r\n }\r\n observer.error(err);\r\n }\r\n },\r\n });\r\n });\r\n }\r\n\r\n private unauthorizedErrorHandling(err: HttpErrorResponse) {\r\n let retVal = false;\r\n if (err.status == 401 || err.status == 403) {\r\n //Unauthorized Error Handling\r\n let token = localStorage.getItem(\"Token\");\r\n if (token) {\r\n this.router.navigate([\"/menu/Unauthorized/Main/Unauthorized\"]);\r\n } else {\r\n //redirect to Login page if there is no JWT TOKEN available\r\n window.location.href = \"/\";\r\n }\r\n retVal = true;\r\n }\r\n return retVal;\r\n }\r\n\r\n private errorMessageHandling(err: any): { Message: string; header: string } {\r\n let header = \"API Error\";\r\n let message = \"Exception Message\";\r\n if (err.error) {\r\n //Handle 4XX error and 5XX Error\r\n header = \"API Error - \" + err.status;\r\n if (err.status == 451) {\r\n header = \"Error\";\r\n }\r\n\r\n if (err.error) {\r\n message = err.error.Message;\r\n }\r\n } else {\r\n if (err.Message) {\r\n //Handle timeout scenario we do not receive HTTP StatusCode\r\n header = \"API Error - \" + err.name;\r\n message = err.Message;\r\n }\r\n }\r\n return { header: header, Message: message };\r\n }\r\n\r\n public postFormDataWithoutBearer(\r\n url: string,\r\n data: FormData\r\n ): Observable<any> {\r\n return new Observable((observer) => {\r\n this.http\r\n .post<any>(url, data)\r\n .pipe(timeout(100000))\r\n .subscribe({\r\n next: (data) => {\r\n observer.next(data);\r\n observer.complete();\r\n },\r\n error: (err) => {\r\n if (err.status == 200) {\r\n observer.next(err.error.text);\r\n observer.complete();\r\n }\r\n observer.error(err);\r\n },\r\n });\r\n });\r\n }\r\n\r\n public postFormData(\r\n url: string,\r\n data: FormData,\r\n showToastr: boolean = true\r\n ): Observable<any> {\r\n return new Observable((observer) => {\r\n let token = localStorage.getItem(\"Token\");\r\n let httpHeaders = new HttpHeaders({\r\n Authorization: \"Bearer \" + token,\r\n });\r\n let options = {\r\n headers: httpHeaders,\r\n };\r\n\r\n this.http\r\n .post<any>(url, data, options)\r\n .pipe(timeout(100000))\r\n .subscribe(\r\n (data) => {\r\n observer.next(data);\r\n observer.complete();\r\n },\r\n (err) => {\r\n //Exception Handling\r\n\r\n if (err.status == 200) {\r\n //when Response is not application/json ex: some API return text/csv\r\n observer.next(err.error.text);\r\n observer.complete();\r\n } else {\r\n let unauthorized = this.unauthorizedErrorHandling(err);\r\n if (!unauthorized && showToastr) {\r\n let errMessage = this.errorMessageHandling(err);\r\n this.toastr.error(\r\n errMessage.Message != \"\"\r\n ? errMessage.Message\r\n : \"An unknown error has occured!\",\r\n errMessage.header\r\n );\r\n }\r\n\r\n observer.error(err);\r\n }\r\n }\r\n );\r\n });\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dealpos-npm-ng-dealpos-library-services-http.mjs","sources":["../../../projects/dealpos-npm/ng-dealpos-library/services/http/src/http.service.ts","../../../projects/dealpos-npm/ng-dealpos-library/services/http/dealpos-npm-ng-dealpos-library-services-http.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\nimport { Observable, throwError } from \"rxjs\";\r\nimport {\r\n HttpClient,\r\n HttpErrorResponse,\r\n HttpHeaders,\r\n} from \"@angular/common/http\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { catchError, timeout } from \"rxjs/operators\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class HttpService {\r\n constructor(\r\n private http: HttpClient,\r\n private toastr: ToastrService,\r\n private router: Router\r\n ) {\r\n }\r\n\r\n public PostToUrlEncode(\r\n url: string,\r\n params?: string,\r\n time: number = 100000\r\n ): Observable<any> {\r\n let headers = new HttpHeaders();\r\n headers = headers.set(\"Content-Type\", \"application/x-www-form-urlencoded\");\r\n return new Observable((observer) => {\r\n this.http\r\n .post((url), params, { headers: headers })\r\n .pipe(timeout(time))\r\n .subscribe((data) => {\r\n observer.next(data);\r\n observer.complete();\r\n });\r\n });\r\n }\r\n\r\n public GetText(time: number = 100000): Observable<string> {\r\n let token = localStorage.getItem(\"Token\");\r\n let httpHeaders = new HttpHeaders({\r\n Authorization: \"Bearer \" + token,\r\n });\r\n const options = { responseType: \"text\" as \"text\", headers: httpHeaders };\r\n return new Observable((observer) => {\r\n this.http\r\n .get((\"/API/Token/GetZendeskJWT\"), options)\r\n .pipe(timeout(time))\r\n .subscribe((data) => {\r\n observer.next(data);\r\n observer.complete();\r\n });\r\n });\r\n }\r\n\r\n public POSText(\r\n url: string,\r\n data?: any,\r\n time: number = 100000\r\n ): Observable<string> {\r\n let token = localStorage.getItem(\"Token\");\r\n let httpHeaders = new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Cache-Control\": \"no-cache\",\r\n Authorization: \"Bearer \" + token,\r\n });\r\n\r\n const options = { responseType: \"text\" as \"text\", headers: httpHeaders };\r\n return new Observable((observer) => {\r\n this.http\r\n .post((url), data, options)\r\n .pipe(timeout(time))\r\n .subscribe((res) => {\r\n observer.next(res);\r\n observer.complete();\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * \r\n * @param url \r\n * @returns \r\n */\r\n public get<T>(url: string): Observable<T> {\r\n let token = localStorage.getItem(\"Token\");\r\n let httpHeaders = new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Cache-Control\": \"no-cache\",\r\n });\r\n if (token) {\r\n httpHeaders = httpHeaders.append(\"Authorization\", \"Bearer \" + token);\r\n }\r\n let options = {\r\n headers: httpHeaders,\r\n };\r\n\r\n return this.http.get<T>((url), options)\r\n .pipe(\r\n catchError(err => {\r\n let unauthorized = this.unauthorizedErrorHandling(err);\r\n if (!unauthorized) {\r\n // show toastr error\r\n let errMessage = this.errorMessageHandling(err);\r\n this.toastr.error(\r\n errMessage.Message != \"\" ? errMessage.Message : \"An unknown error has occured!\",\r\n errMessage.header);\r\n this.paymentErrorHandling(err);\r\n }\r\n return throwError(() => err);\r\n })\r\n );\r\n }\r\n\r\n public getNews<T>(url: string): Observable<T> {\r\n return this.http.get<T>(url)\r\n }\r\n\r\n /**\r\n * Handles payment errors by navigating to the subscription page if the error status is 402.\r\n * @param err - The HttpErrorResponse object containing the error information.\r\n */\r\n private paymentErrorHandling(err: HttpErrorResponse) {\r\n if (err.status == 402) {\r\n this.router.navigate(['/menu/Profile/Main/My_Subscription']);\r\n }\r\n }\r\n\r\n /**\r\n * METHOD POST\r\n * This should cast the httpResponse to the data model we expect\r\n * @param url\r\n * @param data\r\n * @param time\r\n * @returns\r\n */\r\n public post<T>(\r\n url: string,\r\n data?: any,\r\n time: number = 100000\r\n ): Observable<T> {\r\n return new Observable((observer) => {\r\n let token = localStorage.getItem(\"Token\");\r\n let httpHeaders = new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Cache-Control\": \"no-cache\",\r\n });\r\n if (token) {\r\n httpHeaders = httpHeaders.append(\"Authorization\", \"Bearer \" + token);\r\n }\r\n let options = {\r\n headers: httpHeaders\r\n };\r\n Date.prototype.toJSON = function () {\r\n let v = this.getFullYear() +\r\n '-' + pad(this.getMonth() + 1) +\r\n '-' + pad(this.getDate()) +\r\n 'T' + pad(this.getHours()) +\r\n ':' + pad(this.getMinutes()) +\r\n ':' + pad(this.getSeconds()) +\r\n '.' + '000';\r\n return v\r\n }\r\n\r\n function pad(number: number) {\r\n if (number < 10) {\r\n return '0' + number;\r\n }\r\n return number;\r\n }\r\n\r\n this.http\r\n .post<T>((url), data, options)\r\n .pipe(timeout(time))\r\n .subscribe({\r\n next: (result) => {\r\n observer.next(result);\r\n observer.complete();\r\n },\r\n error: (err) => {\r\n if (err.status == 200) {\r\n //when Response is not application/json ex: some API return text/csv\r\n observer.next(err.error.text);\r\n observer.complete();\r\n } else {\r\n let unauthorized = this.unauthorizedErrorHandling(err);\r\n if (!unauthorized) {\r\n let errMessage = this.errorMessageHandling(err);\r\n this.toastr.error(\r\n errMessage.Message != \"\"\r\n ? errMessage.Message\r\n : \"An unknown error has occured!\",\r\n errMessage.header, { enableHtml: true }\r\n );\r\n }\r\n observer.error(err);\r\n }\r\n },\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * METHOD POST\r\n * Use this method when we are expecting blob to be written from the server\r\n * @param url\r\n * @param data\r\n * @param time\r\n * @returns\r\n */\r\n public postFile(\r\n url: string,\r\n data?: any,\r\n time: number = 100000\r\n ): Observable<{ title: string | null, file: Blob | null }> {\r\n return new Observable((observer) => {\r\n let token = localStorage.getItem(\"Token\");\r\n let httpHeaders = new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Cache-Control\": \"no-cache\",\r\n });\r\n if (token) {\r\n httpHeaders = httpHeaders.append(\"Authorization\", \"Bearer \" + token);\r\n }\r\n\r\n this.http\r\n .post((url), data, { headers: httpHeaders, observe: 'response', responseType: 'blob' })\r\n .pipe(timeout(time))\r\n .subscribe({\r\n next: (result) => {\r\n observer.next({\r\n title: result.headers.get('Content-Disposition'),\r\n file: result.body\r\n });\r\n observer.complete();\r\n },\r\n error: (err) => {\r\n if ('application/json; charset=utf-8' === err.headers.get('Content-Type')) {\r\n const reader = new FileReader();\r\n reader.addEventListener('loadend', (e: any) => {\r\n const er = JSON.parse(e.srcElement['result'])?.Message\r\n let unauthorized = this.unauthorizedErrorHandling(err);\r\n if (!unauthorized) {\r\n let errMessage = this.errorMessageHandling(err);\r\n this.toastr.error(er ?? \"An unknown error has occured!\",\r\n errMessage.header, { enableHtml: true }\r\n );\r\n }\r\n });\r\n reader.readAsText(err.error);\r\n }\r\n observer.error(err);\r\n },\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * METHOD PUT\r\n * This should cast the httpResponse to the data model we expect\r\n * @param url\r\n * @param data\r\n * @param time\r\n * @returns\r\n */\r\n public put<T>(\r\n url: string,\r\n data?: any,\r\n time: number = 100000\r\n ): Observable<T> {\r\n return new Observable((observer) => {\r\n let token = localStorage.getItem(\"Token\");\r\n let httpHeaders = new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Cache-Control\": \"no-cache\",\r\n });\r\n if (token) {\r\n httpHeaders = httpHeaders.append(\"Authorization\", \"Bearer \" + token);\r\n }\r\n let options = {\r\n headers: httpHeaders,\r\n };\r\n\r\n this.http\r\n .put<T>((url), data, options)\r\n .pipe(timeout(time))\r\n .subscribe({\r\n next: (result) => {\r\n observer.next(result);\r\n observer.complete();\r\n },\r\n error: (err) => {\r\n if (err.status == 200) {\r\n //when Response is not application/json ex: some API return text/csv\r\n observer.next(err.error.text);\r\n observer.complete();\r\n } else {\r\n let unauthorized = this.unauthorizedErrorHandling(err);\r\n if (!unauthorized) {\r\n let errMessage = this.errorMessageHandling(err);\r\n this.toastr.error(\r\n errMessage.Message != \"\"\r\n ? errMessage.Message\r\n : \"An unknown error has occured!\",\r\n errMessage.header\r\n );\r\n }\r\n observer.error(err);\r\n }\r\n },\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * METHOD DELETE\r\n * This should cast the httpResponse to the data model we expect\r\n * @param url\r\n * @param data\r\n * @param time\r\n * @returns\r\n */\r\n public delete<T>(\r\n url: string,\r\n data?: any,\r\n time: number = 100000\r\n ): Observable<T> {\r\n return new Observable((observer) => {\r\n let token = localStorage.getItem(\"Token\");\r\n let httpHeaders = new HttpHeaders({\r\n \"Content-Type\": \"application/json\",\r\n \"Cache-Control\": \"no-cache\",\r\n });\r\n if (token) {\r\n httpHeaders = httpHeaders.append(\"Authorization\", \"Bearer \" + token);\r\n }\r\n let options = {\r\n headers: httpHeaders,\r\n body: data\r\n };\r\n\r\n this.http\r\n .delete<T>((url), options)\r\n .pipe(timeout(time))\r\n .subscribe({\r\n next: (result) => {\r\n observer.next(result);\r\n observer.complete();\r\n },\r\n error: (err) => {\r\n if (err.status == 200) {\r\n //when Response is not application/json ex: some API return text/csv\r\n observer.next(err.error.text);\r\n observer.complete();\r\n } else {\r\n let unauthorized = this.unauthorizedErrorHandling(err);\r\n if (!unauthorized) {\r\n let errMessage = this.errorMessageHandling(err);\r\n this.toastr.error(\r\n errMessage.Message != \"\"\r\n ? errMessage.Message\r\n : \"An unknown error has occured!\",\r\n errMessage.header\r\n );\r\n }\r\n observer.error(err);\r\n }\r\n },\r\n });\r\n });\r\n }\r\n\r\n private unauthorizedErrorHandling(err: HttpErrorResponse) {\r\n let retVal = false;\r\n if (err.status == 401 || err.status == 403) {\r\n //Unauthorized Error Handling\r\n let token = localStorage.getItem(\"Token\");\r\n if (token) {\r\n this.router.navigate([\"/menu/Unauthorized/Main/Unauthorized\"]);\r\n } else {\r\n //redirect to Login page if there is no JWT TOKEN available\r\n window.location.href = \"/\";\r\n }\r\n retVal = true;\r\n }\r\n return retVal;\r\n }\r\n\r\n private errorMessageHandling(err: any): { Message: string; header: string } {\r\n ;\r\n let header = \"API Error\";\r\n let message = \"Exception Message\";\r\n if (err.error) {\r\n //Handle 4XX error and 5XX Error\r\n header = \"API Error - \" + err.status;\r\n if (err.status == 451) {\r\n header = \"Error\";\r\n }\r\n\r\n if (err.error) {\r\n message = err.error.Message;\r\n }\r\n } else {\r\n if (err.Message) {\r\n //Handle timeout scenario we do not receive HTTP StatusCode\r\n header = \"API Error - \" + err.name;\r\n message = err.Message;\r\n }\r\n }\r\n return { header: header, Message: message };\r\n }\r\n\r\n public postFormDataWithoutBearer(\r\n url: string,\r\n data: FormData\r\n ): Observable<any> {\r\n return new Observable((observer) => {\r\n this.http\r\n .post<any>((url), data)\r\n .pipe(timeout(100000))\r\n .subscribe({\r\n next: (data) => {\r\n observer.next(data);\r\n observer.complete();\r\n },\r\n error: (err) => {\r\n if (err.status == 200) {\r\n observer.next(err.error.text);\r\n observer.complete();\r\n }\r\n observer.error(err);\r\n },\r\n });\r\n });\r\n }\r\n\r\n public postFormData(\r\n url: string,\r\n data: FormData,\r\n showToastr: boolean = true\r\n ): Observable<any> {\r\n return new Observable((observer) => {\r\n let token = localStorage.getItem(\"Token\");\r\n let httpHeaders = new HttpHeaders({\r\n Authorization: \"Bearer \" + token,\r\n });\r\n let options = {\r\n headers: httpHeaders,\r\n };\r\n\r\n this.http\r\n .post<any>((url), data, options)\r\n .pipe(timeout(100000))\r\n .subscribe({\r\n next: (value) => {\r\n observer.next(value);\r\n observer.complete();\r\n },\r\n error: (err) => {\r\n //Exception Handling\r\n if (err.status == 200) {\r\n //when Response is not application/json ex: some API return text/csv\r\n observer.next(err.error.text);\r\n observer.complete();\r\n } else {\r\n let unauthorized = this.unauthorizedErrorHandling(err);\r\n if (!unauthorized && showToastr) {\r\n let errMessage = this.errorMessageHandling(err);\r\n this.toastr.error(\r\n errMessage.Message != \"\"\r\n ? errMessage.Message\r\n : \"An unknown error has occured!\",\r\n errMessage.header\r\n );\r\n }\r\n observer.error(err);\r\n }\r\n }\r\n }\r\n );\r\n });\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dealpos-npm/ng-dealpos-library",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "^17.3.4",
|
|
6
6
|
"@angular/core": "^17.3.4",
|
|
@@ -50,18 +50,18 @@
|
|
|
50
50
|
"esm": "./esm2022/components/dialog/dealpos-npm-ng-dealpos-library-components-dialog.mjs",
|
|
51
51
|
"default": "./fesm2022/dealpos-npm-ng-dealpos-library-components-dialog.mjs"
|
|
52
52
|
},
|
|
53
|
-
"./components/modal-changelog": {
|
|
54
|
-
"types": "./components/modal-changelog/index.d.ts",
|
|
55
|
-
"esm2022": "./esm2022/components/modal-changelog/dealpos-npm-ng-dealpos-library-components-modal-changelog.mjs",
|
|
56
|
-
"esm": "./esm2022/components/modal-changelog/dealpos-npm-ng-dealpos-library-components-modal-changelog.mjs",
|
|
57
|
-
"default": "./fesm2022/dealpos-npm-ng-dealpos-library-components-modal-changelog.mjs"
|
|
58
|
-
},
|
|
59
53
|
"./components/info-page-input": {
|
|
60
54
|
"types": "./components/info-page-input/index.d.ts",
|
|
61
55
|
"esm2022": "./esm2022/components/info-page-input/dealpos-npm-ng-dealpos-library-components-info-page-input.mjs",
|
|
62
56
|
"esm": "./esm2022/components/info-page-input/dealpos-npm-ng-dealpos-library-components-info-page-input.mjs",
|
|
63
57
|
"default": "./fesm2022/dealpos-npm-ng-dealpos-library-components-info-page-input.mjs"
|
|
64
58
|
},
|
|
59
|
+
"./components/modal-changelog": {
|
|
60
|
+
"types": "./components/modal-changelog/index.d.ts",
|
|
61
|
+
"esm2022": "./esm2022/components/modal-changelog/dealpos-npm-ng-dealpos-library-components-modal-changelog.mjs",
|
|
62
|
+
"esm": "./esm2022/components/modal-changelog/dealpos-npm-ng-dealpos-library-components-modal-changelog.mjs",
|
|
63
|
+
"default": "./fesm2022/dealpos-npm-ng-dealpos-library-components-modal-changelog.mjs"
|
|
64
|
+
},
|
|
65
65
|
"./components/ng-select-infinite": {
|
|
66
66
|
"types": "./components/ng-select-infinite/index.d.ts",
|
|
67
67
|
"esm2022": "./esm2022/components/ng-select-infinite/dealpos-npm-ng-dealpos-library-components-ng-select-infinite.mjs",
|
|
@@ -7,9 +7,7 @@ export declare class HttpService {
|
|
|
7
7
|
private http;
|
|
8
8
|
private toastr;
|
|
9
9
|
private router;
|
|
10
|
-
a: number;
|
|
11
10
|
constructor(http: HttpClient, toastr: ToastrService, router: Router);
|
|
12
|
-
testToastr(): void;
|
|
13
11
|
PostToUrlEncode(url: string, params?: string, time?: number): Observable<any>;
|
|
14
12
|
GetText(time?: number): Observable<string>;
|
|
15
13
|
POSText(url: string, data?: any, time?: number): Observable<string>;
|
|
@@ -20,6 +18,11 @@ export declare class HttpService {
|
|
|
20
18
|
*/
|
|
21
19
|
get<T>(url: string): Observable<T>;
|
|
22
20
|
getNews<T>(url: string): Observable<T>;
|
|
21
|
+
/**
|
|
22
|
+
* Handles payment errors by navigating to the subscription page if the error status is 402.
|
|
23
|
+
* @param err - The HttpErrorResponse object containing the error information.
|
|
24
|
+
*/
|
|
25
|
+
private paymentErrorHandling;
|
|
23
26
|
/**
|
|
24
27
|
* METHOD POST
|
|
25
28
|
* This should cast the httpResponse to the data model we expect
|
|
@@ -29,6 +32,18 @@ export declare class HttpService {
|
|
|
29
32
|
* @returns
|
|
30
33
|
*/
|
|
31
34
|
post<T>(url: string, data?: any, time?: number): Observable<T>;
|
|
35
|
+
/**
|
|
36
|
+
* METHOD POST
|
|
37
|
+
* Use this method when we are expecting blob to be written from the server
|
|
38
|
+
* @param url
|
|
39
|
+
* @param data
|
|
40
|
+
* @param time
|
|
41
|
+
* @returns
|
|
42
|
+
*/
|
|
43
|
+
postFile(url: string, data?: any, time?: number): Observable<{
|
|
44
|
+
title: string | null;
|
|
45
|
+
file: Blob | null;
|
|
46
|
+
}>;
|
|
32
47
|
/**
|
|
33
48
|
* METHOD PUT
|
|
34
49
|
* This should cast the httpResponse to the data model we expect
|