@acorex/core 6.5.29 → 6.5.31

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.
Files changed (100) hide show
  1. package/README.md +3 -3
  2. package/acorex-core.d.ts +5 -5
  3. package/esm2020/acorex-core.mjs +4 -4
  4. package/esm2020/lib/classes/base-page.class.mjs +28 -28
  5. package/esm2020/lib/classes/color.class.mjs +49 -49
  6. package/esm2020/lib/classes/datetime.class.mjs +314 -314
  7. package/esm2020/lib/classes/menu.class.mjs +27 -27
  8. package/esm2020/lib/classes/navigator.class.mjs +2 -2
  9. package/esm2020/lib/classes/popup.class.mjs +2 -2
  10. package/esm2020/lib/classes/promise.class.mjs +19 -19
  11. package/esm2020/lib/classes/sectionlist.class.mjs +2 -2
  12. package/esm2020/lib/classes/select.class.mjs +3 -3
  13. package/esm2020/lib/core.module.mjs +27 -27
  14. package/esm2020/lib/error/error.class.mjs +2 -2
  15. package/esm2020/lib/error/error.module.mjs +19 -19
  16. package/esm2020/lib/error/error.service.mjs +21 -21
  17. package/esm2020/lib/events/keyboard.mjs +2 -2
  18. package/esm2020/lib/http/http-error.class.mjs +2 -2
  19. package/esm2020/lib/http/http-events.interceptor.mjs +3 -3
  20. package/esm2020/lib/http/http-request.class.mjs +2 -2
  21. package/esm2020/lib/http/http-result.class.mjs +21 -21
  22. package/esm2020/lib/http/http.module.mjs +37 -37
  23. package/esm2020/lib/http/http.service.mjs +145 -145
  24. package/esm2020/lib/locale/en.json +255 -255
  25. package/esm2020/lib/locale/fa.json +245 -245
  26. package/esm2020/lib/pipe/datetime.pipe.mjs +25 -25
  27. package/esm2020/lib/pipe/htmlToText.pipe.mjs +25 -25
  28. package/esm2020/lib/platform/index.mjs +1 -1
  29. package/esm2020/lib/platform/platform.service.mjs +150 -150
  30. package/esm2020/lib/services/config.mjs +29 -29
  31. package/esm2020/lib/services/event.service.mjs +36 -36
  32. package/esm2020/lib/services/navigator.service.mjs +10 -10
  33. package/esm2020/lib/services/storage.service.mjs +16 -16
  34. package/esm2020/lib/translator/translator.mjs +26 -26
  35. package/esm2020/lib/translator/translator.module.mjs +25 -25
  36. package/esm2020/lib/translator/translator.pipe.mjs +24 -24
  37. package/esm2020/lib/translator/translator.service.mjs +21 -21
  38. package/esm2020/lib/utils/array/array-util.mjs +133 -133
  39. package/esm2020/lib/utils/html/html-util.mjs +192 -192
  40. package/esm2020/lib/utils/html/html.module.mjs +19 -19
  41. package/esm2020/lib/utils/math/math-util.mjs +6 -6
  42. package/esm2020/lib/utils/object/object-util.mjs +83 -83
  43. package/esm2020/lib/utils/render/on-demand-preload-strategy.service.mjs +20 -20
  44. package/esm2020/lib/utils/render/render.service.mjs +103 -103
  45. package/esm2020/lib/utils/render/rendering.module.mjs +35 -35
  46. package/esm2020/lib/utils/scroll/scroll.directive.mjs +54 -54
  47. package/esm2020/lib/utils/scroll/scroll.module.mjs +19 -19
  48. package/esm2020/lib/utils/separator/separator.module.mjs +19 -19
  49. package/esm2020/lib/utils/separator/separator.pipe.mjs +33 -33
  50. package/esm2020/public-api.mjs +44 -44
  51. package/fesm2015/acorex-core.mjs +2162 -2162
  52. package/fesm2015/acorex-core.mjs.map +1 -1
  53. package/fesm2020/acorex-core.mjs +1651 -1651
  54. package/fesm2020/acorex-core.mjs.map +1 -1
  55. package/lib/classes/base-page.class.d.ts +13 -13
  56. package/lib/classes/color.class.d.ts +17 -17
  57. package/lib/classes/datetime.class.d.ts +63 -63
  58. package/lib/classes/menu.class.d.ts +34 -34
  59. package/lib/classes/navigator.class.d.ts +5 -5
  60. package/lib/classes/popup.class.d.ts +12 -12
  61. package/lib/classes/promise.class.d.ts +7 -7
  62. package/lib/classes/sectionlist.class.d.ts +8 -8
  63. package/lib/classes/select.class.d.ts +7 -7
  64. package/lib/core.module.d.ts +9 -9
  65. package/lib/error/error.class.d.ts +4 -4
  66. package/lib/error/error.module.d.ts +7 -7
  67. package/lib/error/error.service.d.ts +13 -13
  68. package/lib/events/keyboard.d.ts +2 -2
  69. package/lib/http/http-error.class.d.ts +7 -7
  70. package/lib/http/http-events.interceptor.d.ts +10 -10
  71. package/lib/http/http-request.class.d.ts +14 -14
  72. package/lib/http/http-result.class.d.ts +11 -11
  73. package/lib/http/http.module.d.ts +10 -10
  74. package/lib/http/http.service.d.ts +23 -23
  75. package/lib/pipe/datetime.pipe.d.ts +8 -8
  76. package/lib/pipe/htmlToText.pipe.d.ts +7 -7
  77. package/lib/platform/index.d.ts +1 -1
  78. package/lib/platform/platform.service.d.ts +26 -26
  79. package/lib/services/config.d.ts +9 -9
  80. package/lib/services/event.service.d.ts +9 -9
  81. package/lib/services/navigator.service.d.ts +8 -8
  82. package/lib/services/storage.service.d.ts +7 -7
  83. package/lib/translator/translator.d.ts +9 -9
  84. package/lib/translator/translator.module.d.ts +8 -8
  85. package/lib/translator/translator.pipe.d.ts +8 -8
  86. package/lib/translator/translator.service.d.ts +8 -8
  87. package/lib/utils/array/array-util.d.ts +6 -6
  88. package/lib/utils/html/html-util.d.ts +62 -62
  89. package/lib/utils/html/html.module.d.ts +8 -8
  90. package/lib/utils/math/math-util.d.ts +3 -3
  91. package/lib/utils/object/object-util.d.ts +7 -7
  92. package/lib/utils/render/on-demand-preload-strategy.service.d.ts +10 -10
  93. package/lib/utils/render/render.service.d.ts +18 -18
  94. package/lib/utils/render/rendering.module.d.ts +8 -8
  95. package/lib/utils/scroll/scroll.directive.d.ts +18 -18
  96. package/lib/utils/scroll/scroll.module.d.ts +8 -8
  97. package/lib/utils/separator/separator.module.d.ts +8 -8
  98. package/lib/utils/separator/separator.pipe.d.ts +8 -8
  99. package/package.json +1 -1
  100. package/public-api.d.ts +43 -43
@@ -1,145 +1,145 @@
1
- import { Injectable, Injector } from '@angular/core';
2
- import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
3
- import { HttpResult } from './http-result.class';
4
- import { AX_HTTP_EVENT_INTERCEPTOR } from './http-events.interceptor';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/common/http";
7
- // import { catchError, retry, retryWhen, mergeMap, delay, switchMap, scan, takeWhile, flatMap } from 'rxjs/operators';
8
- // import { of, concat, throwError } from 'rxjs';
9
- export class AXHttpService {
10
- constructor(http, injector) {
11
- this.http = http;
12
- this.injector = injector;
13
- this.interceptor = this.injector.get(AX_HTTP_EVENT_INTERCEPTOR);
14
- }
15
- get(url, config = {}) {
16
- config.url = url;
17
- config.method = "get";
18
- return this.request(config);
19
- }
20
- post(url, config = {}) {
21
- config.url = url;
22
- config.method = "post";
23
- return this.request(config);
24
- }
25
- delete(url, config = {}) {
26
- config.url = url;
27
- config.method = "delete";
28
- return this.request(config);
29
- }
30
- put(url, config = {}) {
31
- config.url = url;
32
- config.method = "put";
33
- return this.request(config);
34
- }
35
- request(config) {
36
- return new HttpResult((result, error, complete) => {
37
- this.handleBegin(config).then(c => {
38
- this.http
39
- .request(config.method, config.url, this.mapOptions(config))
40
- //.pipe(this.retry)
41
- .subscribe(data => {
42
- this.handleResult(data, result, complete, config);
43
- }, c => {
44
- this.handleError(c, error, complete, config);
45
- });
46
- });
47
- });
48
- }
49
- handleResult(data, result, complete, config) {
50
- if (this.interceptor) {
51
- this.interceptor.success(config, data).then(c => {
52
- if (result)
53
- result(c);
54
- this.handleComplete(complete, config);
55
- });
56
- }
57
- else {
58
- //
59
- if (result)
60
- result(data);
61
- this.handleComplete(complete, config);
62
- }
63
- }
64
- handleBegin(config) {
65
- return new Promise((resolve) => {
66
- if (!config.headers)
67
- config.headers = {};
68
- if (!config.params)
69
- config.params = {};
70
- //
71
- if (this.interceptor) {
72
- this.interceptor.begin(config).then(c => {
73
- resolve(c);
74
- });
75
- }
76
- else {
77
- resolve(config);
78
- }
79
- });
80
- }
81
- handleComplete(complete, config) {
82
- if (complete)
83
- complete();
84
- if (this.interceptor)
85
- this.interceptor.complete(config);
86
- }
87
- handleError(c, error, complete, config) {
88
- let r = {
89
- message: c.message,
90
- status: c.status,
91
- code: c.status?.toString(),
92
- handled: false,
93
- error: c.error
94
- };
95
- if (error) {
96
- error(r);
97
- }
98
- if (!r.handled) {
99
- if (this.interceptor)
100
- this.interceptor.error(config, r);
101
- }
102
- this.handleComplete(complete, config);
103
- }
104
- mapOptions(options) {
105
- let headers = new HttpHeaders();
106
- for (const key in options.headers) {
107
- if (options.headers.hasOwnProperty(key)) {
108
- const value = options.headers[key];
109
- headers = headers.set(key, value);
110
- }
111
- }
112
- let params = new HttpParams();
113
- for (const key in options.params) {
114
- if (options.params.hasOwnProperty(key)) {
115
- const value = options.params[key];
116
- params = params.set(key, value);
117
- }
118
- }
119
- return {
120
- headers: headers,
121
- params: params,
122
- body: options.body,
123
- responseType: options.responseType || 'json'
124
- };
125
- // if (options.method == "get") {
126
- // return {
127
- // headers: headers,
128
- // params: params
129
- // };
130
- // }
131
- // else {
132
- // return {
133
- // headers: headers,
134
- // params: params,
135
- // body: options.body
136
- // };
137
- // }
138
- }
139
- }
140
- AXHttpService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXHttpService, deps: [{ token: i1.HttpClient }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
141
- AXHttpService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXHttpService });
142
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXHttpService, decorators: [{
143
- type: Injectable
144
- }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i0.Injector }]; } });
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvc3JjL2xpYi9odHRwL2h0dHAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQXFCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR2pELE9BQU8sRUFDSCx5QkFBeUIsRUFDNUIsTUFBTSwyQkFBMkIsQ0FBQzs7O0FBQ25DLHVIQUF1SDtBQUN2SCxpREFBaUQ7QUFJakQsTUFBTSxPQUFPLGFBQWE7SUFHdEIsWUFBb0IsSUFBZ0IsRUFBVSxRQUFrQjtRQUE1QyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUM1RCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUdELEdBQUcsQ0FBSSxHQUFXLEVBQUUsU0FBK0IsRUFBRTtRQUNqRCxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNqQixNQUFNLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksQ0FBSSxHQUFXLEVBQUUsU0FBK0IsRUFBRTtRQUNsRCxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNqQixNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUN2QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMs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O1FBQ0QsSUFBSSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUM5QixLQUFLLE1BQU0sR0FBRyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDOUIsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDcEMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbEMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ25DO1NBQ0o7UUFDRCxPQUFPO1lBQ0gsT0FBTyxFQUFFLE9BQU87WUFDaEIsTUFBTSxFQUFFLE1BQU07WUFDZCxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7WUFDbEIsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZLElBQUksTUFBTTtTQUMvQyxDQUFDO1FBQ0YsaUNBQWlDO1FBQ2pDLGVBQWU7UUFDZiw0QkFBNEI7UUFDNUIseUJBQXlCO1FBQ3pCLFNBQVM7UUFDVCxJQUFJO1FBQ0osU0FBUztRQUNULGVBQWU7UUFDZiw0QkFBNEI7UUFDNUIsMEJBQTBCO1FBQzFCLDZCQUE2QjtRQUM3QixTQUFTO1FBQ1QsSUFBSTtJQUNSLENBQUM7OzJHQS9JUSxhQUFhOytHQUFiLGFBQWE7NEZBQWIsYUFBYTtrQkFEekIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBJbmplY3RGbGFncyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcywgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEh0dHBSZXN1bHQgfSBmcm9tICcuL2h0dHAtcmVzdWx0LmNsYXNzJztcclxuaW1wb3J0IHsgSUh0dHBFcnJvciB9IGZyb20gJy4vaHR0cC1lcnJvci5jbGFzcyc7XHJcbmltcG9ydCB7IEFYSHR0cFJlcXVlc3RPcHRpb25zIH0gZnJvbSAnLi9odHRwLXJlcXVlc3QuY2xhc3MnO1xyXG5pbXBvcnQge1xyXG4gICAgQVhfSFRUUF9FVkVOVF9JTlRFUkNFUFRPUiwgQVhIdHRwRXZlbnRJbnRlcmNlcHRvclxyXG59IGZyb20gJy4vaHR0cC1ldmVudHMuaW50ZXJjZXB0b3InO1xyXG4vLyBpbXBvcnQgeyBjYXRjaEVycm9yLCByZXRyeSwgcmV0cnlXaGVuLCBtZXJnZU1hcCwgZGVsYXksIHN3aXRjaE1hcCwgc2NhbiwgdGFrZVdoaWxlLCBmbGF0TWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG4vLyBpbXBvcnQgeyBvZiwgY29uY2F0LCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcblxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQVhIdHRwU2VydmljZSB7XHJcblxyXG4gICAgcHJpdmF0ZSBpbnRlcmNlcHRvcjogQVhIdHRwRXZlbnRJbnRlcmNlcHRvcjtcclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgICAgICB0aGlzLmludGVyY2VwdG9yID0gdGhpcy5pbmplY3Rvci5nZXQoQVhfSFRUUF9FVkVOVF9JTlRFUkNFUFRPUik7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGdldDxUPih1cmw6IHN0cmluZywgY29uZmlnOiBBWEh0dHBSZXF1ZXN0T3B0aW9ucyA9IHt9KTogSHR0cFJlc3VsdDxUPiB7XHJcbiAgICAgICAgY29uZmlnLnVybCA9IHVybDtcclxuICAgICAgICBjb25maWcubWV0aG9kID0gXCJnZXRcIjtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KGNvbmZpZyk7XHJcbiAgICB9XHJcblxyXG4gICAgcG9zdDxUPih1cmw6IHN0cmluZywgY29uZmlnOiBBWEh0dHBSZXF1ZXN0T3B0aW9ucyA9IHt9KTogSHR0cFJlc3VsdDxUPiB7XHJcbiAgICAgICAgY29uZmlnLnVybCA9IHVybDtcclxuICAgICAgICBjb25maWcubWV0aG9kID0gXCJwb3N0XCI7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdChjb25maWcpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZTxUPih1cmw6IHN0cmluZywgY29uZmlnOiBBWEh0dHBSZXF1ZXN0T3B0aW9ucyA9IHt9KTogSHR0cFJlc3VsdDxUPiB7XHJcbiAgICAgICAgY29uZmlnLnVybCA9IHVybDtcclxuICAgICAgICBjb25maWcubWV0aG9kID0gXCJkZWxldGVcIjtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KGNvbmZpZyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHV0PFQ+KHVybDogc3RyaW5nLCBjb25maWc6IEFYSHR0cFJlcXVlc3RPcHRpb25zID0ge30pOiBIdHRwUmVzdWx0PFQ+IHtcclxuICAgICAgICBjb25maWcudXJsID0gdXJsO1xyXG4gICAgICAgIGNvbmZpZy5tZXRob2QgPSBcInB1dFwiO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3QoY29uZmlnKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcmVxdWVzdDxUPihjb25maWc6IEFYSHR0cFJlcXVlc3RPcHRpb25zKTogSHR0cFJlc3VsdDxUPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBIdHRwUmVzdWx0PFQ+KChyZXN1bHQ/LCBlcnJvcj8sIGNvbXBsZXRlPykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUJlZ2luKGNvbmZpZykudGhlbihjID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAgICAgICAgIC5yZXF1ZXN0PFQ+KGNvbmZpZy5tZXRob2QsIGNvbmZpZy51cmwsIHRoaXMubWFwT3B0aW9ucyhjb25maWcpKVxyXG4gICAgICAgICAgICAgICAgICAgIC8vLnBpcGUodGhpcy5yZXRyeSlcclxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVJlc3VsdChkYXRhLCByZXN1bHQsIGNvbXBsZXRlLCBjb25maWcpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sIGMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGMsIGVycm9yLCBjb21wbGV0ZSwgY29uZmlnKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJpdmF0ZSBoYW5kbGVSZXN1bHQoZGF0YSwgcmVzdWx0LCBjb21wbGV0ZSwgY29uZmlnOiBBWEh0dHBSZXF1ZXN0T3B0aW9ucykge1xyXG4gICAgICAgIGlmICh0aGlzLmludGVyY2VwdG9yKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW50ZXJjZXB0b3Iuc3VjY2Vzcyhjb25maWcsIGRhdGEpLnRoZW4oYyA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0KVxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdChjKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlQ29tcGxldGUoY29tcGxldGUsIGNvbmZpZyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgLy9cclxuICAgICAgICAgICAgaWYgKHJlc3VsdClcclxuICAgICAgICAgICAgICAgIHJlc3VsdChkYXRhKTtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVDb21wbGV0ZShjb21wbGV0ZSwgY29uZmlnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYW5kbGVCZWdpbihjb25maWc6IEFYSHR0cFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxBWEh0dHBSZXF1ZXN0T3B0aW9ucz4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWNvbmZpZy5oZWFkZXJzKVxyXG4gICAgICAgICAgICAgICAgY29uZmlnLmhlYWRlcnMgPSB7fTtcclxuICAgICAgICAgICAgaWYgKCFjb25maWcucGFyYW1zKVxyXG4gICAgICAgICAgICAgICAgY29uZmlnLnBhcmFtcyA9IHt9O1xyXG4gICAgICAgICAgICAvL1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pbnRlcmNlcHRvcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbnRlcmNlcHRvci5iZWdpbihjb25maWcpLnRoZW4oYyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShjKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShjb25maWcpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlQ29tcGxldGUoY29tcGxldGU6IEZ1bmN0aW9uLCBjb25maWc6IEFYSHR0cFJlcXVlc3RPcHRpb25zKSB7XHJcbiAgICAgICAgaWYgKGNvbXBsZXRlKVxyXG4gICAgICAgICAgICBjb21wbGV0ZSgpO1xyXG4gICAgICAgIGlmICh0aGlzLmludGVyY2VwdG9yKVxyXG4gICAgICAgICAgICB0aGlzLmludGVyY2VwdG9yLmNvbXBsZXRlKGNvbmZpZyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYW5kbGVFcnJvcihjOiBIdHRwRXJyb3JSZXNwb25zZSwgZXJyb3I6IEZ1bmN0aW9uLCBjb21wbGV0ZTogRnVuY3Rpb24sIGNvbmZpZzogQVhIdHRwUmVxdWVzdE9wdGlvbnMpIHtcclxuICAgICAgICBsZXQgcjogSUh0dHBFcnJvciA9IHtcclxuICAgICAgICAgICAgbWVzc2FnZTogYy5tZXNzYWdlLFxyXG4gICAgICAgICAgICBzdGF0dXM6IGMuc3RhdHVzLFxyXG4gICAgICAgICAgICBjb2RlOiBjLnN0YXR1cz8udG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgaGFuZGxlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIGVycm9yOiBjLmVycm9yXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChlcnJvcikge1xyXG4gICAgICAgICAgICBlcnJvcihyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFyLmhhbmRsZWQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaW50ZXJjZXB0b3IpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmludGVyY2VwdG9yLmVycm9yKGNvbmZpZywgcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaGFuZGxlQ29tcGxldGUoY29tcGxldGUsIGNvbmZpZyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBtYXBPcHRpb25zKG9wdGlvbnM6IEFYSHR0cFJlcXVlc3RPcHRpb25zKSB7XHJcbiAgICAgICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gb3B0aW9ucy5oZWFkZXJzKSB7XHJcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmhlYWRlcnMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBvcHRpb25zLmhlYWRlcnNba2V5XTtcclxuICAgICAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldChrZXksIHZhbHVlKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG9wdGlvbnMucGFyYW1zKSB7XHJcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnBhcmFtcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IG9wdGlvbnMucGFyYW1zW2tleV07XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KGtleSwgdmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXHJcbiAgICAgICAgICAgIHBhcmFtczogcGFyYW1zLFxyXG4gICAgICAgICAgICBib2R5OiBvcHRpb25zLmJvZHksXHJcbiAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogb3B0aW9ucy5yZXNwb25zZVR5cGUgfHwgJ2pzb24nXHJcbiAgICAgICAgfTtcclxuICAgICAgICAvLyBpZiAob3B0aW9ucy5tZXRob2QgPT0gXCJnZXRcIikge1xyXG4gICAgICAgIC8vICAgICByZXR1cm4ge1xyXG4gICAgICAgIC8vICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcclxuICAgICAgICAvLyAgICAgICAgIHBhcmFtczogcGFyYW1zXHJcbiAgICAgICAgLy8gICAgIH07XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vIGVsc2Uge1xyXG4gICAgICAgIC8vICAgICByZXR1cm4ge1xyXG4gICAgICAgIC8vICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcclxuICAgICAgICAvLyAgICAgICAgIHBhcmFtczogcGFyYW1zLFxyXG4gICAgICAgIC8vICAgICAgICAgYm9keTogb3B0aW9ucy5ib2R5XHJcbiAgICAgICAgLy8gICAgIH07XHJcbiAgICAgICAgLy8gfVxyXG4gICAgfVxyXG5cclxufSJdfQ==
1
+ import { Injectable, Injector } from '@angular/core';
2
+ import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
3
+ import { HttpResult } from './http-result.class';
4
+ import { AX_HTTP_EVENT_INTERCEPTOR } from './http-events.interceptor';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common/http";
7
+ // import { catchError, retry, retryWhen, mergeMap, delay, switchMap, scan, takeWhile, flatMap } from 'rxjs/operators';
8
+ // import { of, concat, throwError } from 'rxjs';
9
+ export class AXHttpService {
10
+ constructor(http, injector) {
11
+ this.http = http;
12
+ this.injector = injector;
13
+ this.interceptor = this.injector.get(AX_HTTP_EVENT_INTERCEPTOR);
14
+ }
15
+ get(url, config = {}) {
16
+ config.url = url;
17
+ config.method = "get";
18
+ return this.request(config);
19
+ }
20
+ post(url, config = {}) {
21
+ config.url = url;
22
+ config.method = "post";
23
+ return this.request(config);
24
+ }
25
+ delete(url, config = {}) {
26
+ config.url = url;
27
+ config.method = "delete";
28
+ return this.request(config);
29
+ }
30
+ put(url, config = {}) {
31
+ config.url = url;
32
+ config.method = "put";
33
+ return this.request(config);
34
+ }
35
+ request(config) {
36
+ return new HttpResult((result, error, complete) => {
37
+ this.handleBegin(config).then(c => {
38
+ this.http
39
+ .request(config.method, config.url, this.mapOptions(config))
40
+ //.pipe(this.retry)
41
+ .subscribe(data => {
42
+ this.handleResult(data, result, complete, config);
43
+ }, c => {
44
+ this.handleError(c, error, complete, config);
45
+ });
46
+ });
47
+ });
48
+ }
49
+ handleResult(data, result, complete, config) {
50
+ if (this.interceptor) {
51
+ this.interceptor.success(config, data).then(c => {
52
+ if (result)
53
+ result(c);
54
+ this.handleComplete(complete, config);
55
+ });
56
+ }
57
+ else {
58
+ //
59
+ if (result)
60
+ result(data);
61
+ this.handleComplete(complete, config);
62
+ }
63
+ }
64
+ handleBegin(config) {
65
+ return new Promise((resolve) => {
66
+ if (!config.headers)
67
+ config.headers = {};
68
+ if (!config.params)
69
+ config.params = {};
70
+ //
71
+ if (this.interceptor) {
72
+ this.interceptor.begin(config).then(c => {
73
+ resolve(c);
74
+ });
75
+ }
76
+ else {
77
+ resolve(config);
78
+ }
79
+ });
80
+ }
81
+ handleComplete(complete, config) {
82
+ if (complete)
83
+ complete();
84
+ if (this.interceptor)
85
+ this.interceptor.complete(config);
86
+ }
87
+ handleError(c, error, complete, config) {
88
+ let r = {
89
+ message: c.message,
90
+ status: c.status,
91
+ code: c.status?.toString(),
92
+ handled: false,
93
+ error: c.error
94
+ };
95
+ if (error) {
96
+ error(r);
97
+ }
98
+ if (!r.handled) {
99
+ if (this.interceptor)
100
+ this.interceptor.error(config, r);
101
+ }
102
+ this.handleComplete(complete, config);
103
+ }
104
+ mapOptions(options) {
105
+ let headers = new HttpHeaders();
106
+ for (const key in options.headers) {
107
+ if (options.headers.hasOwnProperty(key)) {
108
+ const value = options.headers[key];
109
+ headers = headers.set(key, value);
110
+ }
111
+ }
112
+ let params = new HttpParams();
113
+ for (const key in options.params) {
114
+ if (options.params.hasOwnProperty(key)) {
115
+ const value = options.params[key];
116
+ params = params.set(key, value);
117
+ }
118
+ }
119
+ return {
120
+ headers: headers,
121
+ params: params,
122
+ body: options.body,
123
+ responseType: options.responseType || 'json'
124
+ };
125
+ // if (options.method == "get") {
126
+ // return {
127
+ // headers: headers,
128
+ // params: params
129
+ // };
130
+ // }
131
+ // else {
132
+ // return {
133
+ // headers: headers,
134
+ // params: params,
135
+ // body: options.body
136
+ // };
137
+ // }
138
+ }
139
+ }
140
+ AXHttpService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXHttpService, deps: [{ token: i1.HttpClient }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
141
+ AXHttpService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXHttpService });
142
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXHttpService, decorators: [{
143
+ type: Injectable
144
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i0.Injector }]; } });
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvc3JjL2xpYi9odHRwL2h0dHAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQXFCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR2pELE9BQU8sRUFDSCx5QkFBeUIsRUFDNUIsTUFBTSwyQkFBMkIsQ0FBQzs7O0FBQ25DLHVIQUF1SDtBQUN2SCxpREFBaUQ7QUFJakQsTUFBTSxPQUFPLGFBQWE7SUFHdEIsWUFBb0IsSUFBZ0IsRUFBVSxRQUFrQjtRQUE1QyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUM1RCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUdELEdBQUcsQ0FBSSxHQUFXLEVBQUUsU0FBK0IsRUFBRTtRQUNqRCxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNqQixNQUFNLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksQ0FBSSxHQUFXLEVBQUUsU0FBK0IsRUFBRTtRQUNsRCxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNqQixNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUN2QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMs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O1FBQ0QsSUFBSSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUM5QixLQUFLLE1BQU0sR0FBRyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDOUIsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDcEMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbEMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ25DO1NBQ0o7UUFDRCxPQUFPO1lBQ0gsT0FBTyxFQUFFLE9BQU87WUFDaEIsTUFBTSxFQUFFLE1BQU07WUFDZCxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7WUFDbEIsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZLElBQUksTUFBTTtTQUMvQyxDQUFDO1FBQ0YsaUNBQWlDO1FBQ2pDLGVBQWU7UUFDZiw0QkFBNEI7UUFDNUIseUJBQXlCO1FBQ3pCLFNBQVM7UUFDVCxJQUFJO1FBQ0osU0FBUztRQUNULGVBQWU7UUFDZiw0QkFBNEI7UUFDNUIsMEJBQTBCO1FBQzFCLDZCQUE2QjtRQUM3QixTQUFTO1FBQ1QsSUFBSTtJQUNSLENBQUM7OzJHQS9JUSxhQUFhOytHQUFiLGFBQWE7NEZBQWIsYUFBYTtrQkFEekIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBJbmplY3RGbGFncyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMsIEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSHR0cFJlc3VsdCB9IGZyb20gJy4vaHR0cC1yZXN1bHQuY2xhc3MnO1xuaW1wb3J0IHsgSUh0dHBFcnJvciB9IGZyb20gJy4vaHR0cC1lcnJvci5jbGFzcyc7XG5pbXBvcnQgeyBBWEh0dHBSZXF1ZXN0T3B0aW9ucyB9IGZyb20gJy4vaHR0cC1yZXF1ZXN0LmNsYXNzJztcbmltcG9ydCB7XG4gICAgQVhfSFRUUF9FVkVOVF9JTlRFUkNFUFRPUiwgQVhIdHRwRXZlbnRJbnRlcmNlcHRvclxufSBmcm9tICcuL2h0dHAtZXZlbnRzLmludGVyY2VwdG9yJztcbi8vIGltcG9ydCB7IGNhdGNoRXJyb3IsIHJldHJ5LCByZXRyeVdoZW4sIG1lcmdlTWFwLCBkZWxheSwgc3dpdGNoTWFwLCBzY2FuLCB0YWtlV2hpbGUsIGZsYXRNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG4vLyBpbXBvcnQgeyBvZiwgY29uY2F0LCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYSHR0cFNlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSBpbnRlcmNlcHRvcjogQVhIdHRwRXZlbnRJbnRlcmNlcHRvcjtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgICAgIHRoaXMuaW50ZXJjZXB0b3IgPSB0aGlzLmluamVjdG9yLmdldChBWF9IVFRQX0VWRU5UX0lOVEVSQ0VQVE9SKTtcbiAgICB9XG5cblxuICAgIGdldDxUPih1cmw6IHN0cmluZywgY29uZmlnOiBBWEh0dHBSZXF1ZXN0T3B0aW9ucyA9IHt9KTogSHR0cFJlc3VsdDxUPiB7XG4gICAgICAgIGNvbmZpZy51cmwgPSB1cmw7XG4gICAgICAgIGNvbmZpZy5tZXRob2QgPSBcImdldFwiO1xuICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KGNvbmZpZyk7XG4gICAgfVxuXG4gICAgcG9zdDxUPih1cmw6IHN0cmluZywgY29uZmlnOiBBWEh0dHBSZXF1ZXN0T3B0aW9ucyA9IHt9KTogSHR0cFJlc3VsdDxUPiB7XG4gICAgICAgIGNvbmZpZy51cmwgPSB1cmw7XG4gICAgICAgIGNvbmZpZy5tZXRob2QgPSBcInBvc3RcIjtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdChjb25maWcpO1xuICAgIH1cblxuICAgIGRlbGV0ZTxUPih1cmw6IHN0cmluZywgY29uZmlnOiBBWEh0dHBSZXF1ZXN0T3B0aW9ucyA9IHt9KTogSHR0cFJlc3VsdDxUPiB7XG4gICAgICAgIGNvbmZpZy51cmwgPSB1cmw7XG4gICAgICAgIGNvbmZpZy5tZXRob2QgPSBcImRlbGV0ZVwiO1xuICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KGNvbmZpZyk7XG4gICAgfVxuXG4gICAgcHV0PFQ+KHVybDogc3RyaW5nLCBjb25maWc6IEFYSHR0cFJlcXVlc3RPcHRpb25zID0ge30pOiBIdHRwUmVzdWx0PFQ+IHtcbiAgICAgICAgY29uZmlnLnVybCA9IHVybDtcbiAgICAgICAgY29uZmlnLm1ldGhvZCA9IFwicHV0XCI7XG4gICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3QoY29uZmlnKTtcbiAgICB9XG5cblxuICAgIHJlcXVlc3Q8VD4oY29uZmlnOiBBWEh0dHBSZXF1ZXN0T3B0aW9ucyk6IEh0dHBSZXN1bHQ8VD4ge1xuICAgICAgICByZXR1cm4gbmV3IEh0dHBSZXN1bHQ8VD4oKHJlc3VsdD8sIGVycm9yPywgY29tcGxldGU/KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUJlZ2luKGNvbmZpZykudGhlbihjID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmh0dHBcbiAgICAgICAgICAgICAgICAgICAgLnJlcXVlc3Q8VD4oY29uZmlnLm1ldGhvZCwgY29uZmlnLnVybCwgdGhpcy5tYXBPcHRpb25zKGNvbmZpZykpXG4gICAgICAgICAgICAgICAgICAgIC8vLnBpcGUodGhpcy5yZXRyeSlcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlUmVzdWx0KGRhdGEsIHJlc3VsdCwgY29tcGxldGUsIGNvbmZpZyk7XG4gICAgICAgICAgICAgICAgICAgIH0sIGMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihjLCBlcnJvciwgY29tcGxldGUsIGNvbmZpZyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgfVxuXG5cbiAgICBwcml2YXRlIGhhbmRsZVJlc3VsdChkYXRhLCByZXN1bHQsIGNvbXBsZXRlLCBjb25maWc6IEFYSHR0cFJlcXVlc3RPcHRpb25zKSB7XG4gICAgICAgIGlmICh0aGlzLmludGVyY2VwdG9yKSB7XG4gICAgICAgICAgICB0aGlzLmludGVyY2VwdG9yLnN1Y2Nlc3MoY29uZmlnLCBkYXRhKS50aGVuKGMgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdChjKTtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUNvbXBsZXRlKGNvbXBsZXRlLCBjb25maWcpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgaWYgKHJlc3VsdClcbiAgICAgICAgICAgICAgICByZXN1bHQoZGF0YSk7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNvbXBsZXRlKGNvbXBsZXRlLCBjb25maWcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVCZWdpbihjb25maWc6IEFYSHR0cFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxBWEh0dHBSZXF1ZXN0T3B0aW9ucz4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIGlmICghY29uZmlnLmhlYWRlcnMpXG4gICAgICAgICAgICAgICAgY29uZmlnLmhlYWRlcnMgPSB7fTtcbiAgICAgICAgICAgIGlmICghY29uZmlnLnBhcmFtcylcbiAgICAgICAgICAgICAgICBjb25maWcucGFyYW1zID0ge307XG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgaWYgKHRoaXMuaW50ZXJjZXB0b3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmludGVyY2VwdG9yLmJlZ2luKGNvbmZpZykudGhlbihjID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShjKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoY29uZmlnKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlQ29tcGxldGUoY29tcGxldGU6IEZ1bmN0aW9uLCBjb25maWc6IEFYSHR0cFJlcXVlc3RPcHRpb25zKSB7XG4gICAgICAgIGlmIChjb21wbGV0ZSlcbiAgICAgICAgICAgIGNvbXBsZXRlKCk7XG4gICAgICAgIGlmICh0aGlzLmludGVyY2VwdG9yKVxuICAgICAgICAgICAgdGhpcy5pbnRlcmNlcHRvci5jb21wbGV0ZShjb25maWcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlRXJyb3IoYzogSHR0cEVycm9yUmVzcG9uc2UsIGVycm9yOiBGdW5jdGlvbiwgY29tcGxldGU6IEZ1bmN0aW9uLCBjb25maWc6IEFYSHR0cFJlcXVlc3RPcHRpb25zKSB7XG4gICAgICAgIGxldCByOiBJSHR0cEVycm9yID0ge1xuICAgICAgICAgICAgbWVzc2FnZTogYy5tZXNzYWdlLFxuICAgICAgICAgICAgc3RhdHVzOiBjLnN0YXR1cyxcbiAgICAgICAgICAgIGNvZGU6IGMuc3RhdHVzPy50b1N0cmluZygpLFxuICAgICAgICAgICAgaGFuZGxlZDogZmFsc2UsXG4gICAgICAgICAgICBlcnJvcjogYy5lcnJvclxuICAgICAgICB9XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgZXJyb3Iocik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyLmhhbmRsZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmludGVyY2VwdG9yKVxuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJjZXB0b3IuZXJyb3IoY29uZmlnLCByKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhhbmRsZUNvbXBsZXRlKGNvbXBsZXRlLCBjb25maWcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFwT3B0aW9ucyhvcHRpb25zOiBBWEh0dHBSZXF1ZXN0T3B0aW9ucykge1xuICAgICAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG9wdGlvbnMuaGVhZGVycykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuaGVhZGVycy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBvcHRpb25zLmhlYWRlcnNba2V5XTtcbiAgICAgICAgICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoa2V5LCB2YWx1ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gb3B0aW9ucy5wYXJhbXMpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnBhcmFtcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBvcHRpb25zLnBhcmFtc1trZXldO1xuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICAgICAgICAgIGJvZHk6IG9wdGlvbnMuYm9keSxcbiAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogb3B0aW9ucy5yZXNwb25zZVR5cGUgfHwgJ2pzb24nXG4gICAgICAgIH07XG4gICAgICAgIC8vIGlmIChvcHRpb25zLm1ldGhvZCA9PSBcImdldFwiKSB7XG4gICAgICAgIC8vICAgICByZXR1cm4ge1xuICAgICAgICAvLyAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgIC8vICAgICAgICAgcGFyYW1zOiBwYXJhbXNcbiAgICAgICAgLy8gICAgIH07XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy8gZWxzZSB7XG4gICAgICAgIC8vICAgICByZXR1cm4ge1xuICAgICAgICAvLyAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgIC8vICAgICAgICAgcGFyYW1zOiBwYXJhbXMsXG4gICAgICAgIC8vICAgICAgICAgYm9keTogb3B0aW9ucy5ib2R5XG4gICAgICAgIC8vICAgICB9O1xuICAgICAgICAvLyB9XG4gICAgfVxuXG59Il19