@falcon-ng/tailwind 0.0.5 → 0.0.7

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 (102) hide show
  1. package/esm2022/lib/component/auto-complete/auto-complete.component.mjs +34 -0
  2. package/esm2022/lib/component/bottom-sheet/bottom-sheet.component.mjs +30 -0
  3. package/esm2022/lib/component/button/button.component.mjs +28 -0
  4. package/esm2022/lib/component/button-toggle/button-toggle.component.mjs +33 -0
  5. package/{esm2020 → esm2022}/lib/component/checkbox/checkbox.component.mjs +6 -5
  6. package/esm2022/lib/component/chips/chip.component.mjs +110 -0
  7. package/esm2022/lib/component/date-picker/date-picker.component.mjs +18 -0
  8. package/esm2022/lib/component/dialog/dialog.component.mjs +22 -0
  9. package/esm2022/lib/component/pagination/pagination.component.mjs +96 -0
  10. package/esm2022/lib/component/progress-bar/progress-bar.component.mjs +21 -0
  11. package/esm2022/lib/component/progress-spinner/progress-spinner.component.mjs +27 -0
  12. package/esm2022/lib/component/radio/radio.component.mjs +32 -0
  13. package/esm2022/lib/component/rich-text-editor/rich-text-editor.component.mjs +16 -0
  14. package/esm2022/lib/component/select/select.component.mjs +36 -0
  15. package/esm2022/lib/component/slide-toggle/slide-toggle.component.mjs +15 -0
  16. package/esm2022/lib/component/slider/slider.component.mjs +16 -0
  17. package/esm2022/lib/component/snack-bar/snack-bar.component.mjs +12 -0
  18. package/esm2022/lib/component/table/table.component.mjs +75 -0
  19. package/esm2022/lib/component/textarea/textarea.component.mjs +17 -0
  20. package/esm2022/lib/component/textbox/textbox.component.mjs +18 -0
  21. package/esm2022/lib/control-builder/control-builder.component.mjs +19 -0
  22. package/esm2022/lib/falcon-core.module.mjs +231 -0
  23. package/esm2022/lib/model/constant.mjs +33 -0
  24. package/esm2022/lib/module/angularmaterial.module.mjs +190 -0
  25. package/esm2022/lib/reactive-field.directive.mjs +29 -0
  26. package/esm2022/lib/service/appsetting.service.mjs +56 -0
  27. package/esm2022/lib/service/http/generic-http-client.mjs +198 -0
  28. package/esm2022/lib/service/http/igeneric-http-client.mjs +11 -0
  29. package/esm2022/lib/service/logger.service.mjs +79 -0
  30. package/esm2022/lib/service/open-id/TokenHelperService.mjs +72 -0
  31. package/esm2022/lib/service/open-id/auth-guard.service.mjs +31 -0
  32. package/esm2022/lib/service/open-id/auth.service.mjs +155 -0
  33. package/{esm2020 → esm2022}/public-api.mjs +2 -1
  34. package/{fesm2020 → fesm2022}/falcon-ng-tailwind.mjs +288 -288
  35. package/fesm2022/falcon-ng-tailwind.mjs.map +1 -0
  36. package/lib/component/button/button.component.d.ts +1 -1
  37. package/lib/component/chips/chip.component.d.ts +1 -1
  38. package/lib/component/pagination/pagination.component.d.ts +1 -1
  39. package/lib/component/progress-bar/progress-bar.component.d.ts +1 -1
  40. package/lib/component/progress-spinner/progress-spinner.component.d.ts +1 -1
  41. package/lib/component/table/table.component.d.ts +1 -1
  42. package/lib/control-builder/control-builder.component.d.ts +1 -1
  43. package/lib/reactive-field.directive.d.ts +1 -1
  44. package/lib/service/open-id/auth-guard.service.d.ts +2 -2
  45. package/package.json +7 -13
  46. package/public-api.d.ts +1 -0
  47. package/esm2020/lib/component/auto-complete/auto-complete.component.mjs +0 -33
  48. package/esm2020/lib/component/bottom-sheet/bottom-sheet.component.mjs +0 -29
  49. package/esm2020/lib/component/button/button.component.mjs +0 -27
  50. package/esm2020/lib/component/button-toggle/button-toggle.component.mjs +0 -32
  51. package/esm2020/lib/component/chips/chip.component.mjs +0 -109
  52. package/esm2020/lib/component/date-picker/date-picker.component.mjs +0 -17
  53. package/esm2020/lib/component/dialog/dialog.component.mjs +0 -21
  54. package/esm2020/lib/component/pagination/pagination.component.mjs +0 -95
  55. package/esm2020/lib/component/progress-bar/progress-bar.component.mjs +0 -20
  56. package/esm2020/lib/component/progress-spinner/progress-spinner.component.mjs +0 -26
  57. package/esm2020/lib/component/radio/radio.component.mjs +0 -31
  58. package/esm2020/lib/component/rich-text-editor/rich-text-editor.component.mjs +0 -15
  59. package/esm2020/lib/component/select/select.component.mjs +0 -35
  60. package/esm2020/lib/component/slide-toggle/slide-toggle.component.mjs +0 -14
  61. package/esm2020/lib/component/slider/slider.component.mjs +0 -15
  62. package/esm2020/lib/component/snack-bar/snack-bar.component.mjs +0 -11
  63. package/esm2020/lib/component/table/table.component.mjs +0 -74
  64. package/esm2020/lib/component/textarea/textarea.component.mjs +0 -16
  65. package/esm2020/lib/component/textbox/textbox.component.mjs +0 -17
  66. package/esm2020/lib/control-builder/control-builder.component.mjs +0 -18
  67. package/esm2020/lib/falcon-core.module.mjs +0 -230
  68. package/esm2020/lib/model/constant.mjs +0 -32
  69. package/esm2020/lib/module/angularmaterial.module.mjs +0 -189
  70. package/esm2020/lib/reactive-field.directive.mjs +0 -28
  71. package/esm2020/lib/service/appsetting.service.mjs +0 -55
  72. package/esm2020/lib/service/http/generic-http-client.mjs +0 -197
  73. package/esm2020/lib/service/http/igeneric-http-client.mjs +0 -10
  74. package/esm2020/lib/service/logger.service.mjs +0 -78
  75. package/esm2020/lib/service/open-id/TokenHelperService.mjs +0 -71
  76. package/esm2020/lib/service/open-id/auth-guard.service.mjs +0 -30
  77. package/esm2020/lib/service/open-id/auth.service.mjs +0 -154
  78. package/fesm2015/falcon-ng-tailwind.mjs +0 -1988
  79. package/fesm2015/falcon-ng-tailwind.mjs.map +0 -1
  80. package/fesm2020/falcon-ng-tailwind.mjs.map +0 -1
  81. /package/{esm2020 → esm2022}/falcon-ng-tailwind.mjs +0 -0
  82. /package/{esm2020 → esm2022}/lib/base-control.mjs +0 -0
  83. /package/{esm2020 → esm2022}/lib/base-form-component.mjs +0 -0
  84. /package/{esm2020 → esm2022}/lib/control-type/AutoComplete.mjs +0 -0
  85. /package/{esm2020 → esm2022}/lib/control-type/Button.mjs +0 -0
  86. /package/{esm2020 → esm2022}/lib/control-type/ButtonToggle.mjs +0 -0
  87. /package/{esm2020 → esm2022}/lib/control-type/CheckBox.mjs +0 -0
  88. /package/{esm2020 → esm2022}/lib/control-type/Chip.mjs +0 -0
  89. /package/{esm2020 → esm2022}/lib/control-type/DatePicker.mjs +0 -0
  90. /package/{esm2020 → esm2022}/lib/control-type/Divider.mjs +0 -0
  91. /package/{esm2020 → esm2022}/lib/control-type/Editor.mjs +0 -0
  92. /package/{esm2020 → esm2022}/lib/control-type/Radio.mjs +0 -0
  93. /package/{esm2020 → esm2022}/lib/control-type/RichTextEditor.mjs +0 -0
  94. /package/{esm2020 → esm2022}/lib/control-type/SlideToggle.mjs +0 -0
  95. /package/{esm2020 → esm2022}/lib/control-type/Slider.mjs +0 -0
  96. /package/{esm2020 → esm2022}/lib/control-type/Textarea.mjs +0 -0
  97. /package/{esm2020 → esm2022}/lib/control-type/Textbox.mjs +0 -0
  98. /package/{esm2020 → esm2022}/lib/control-type/select.mjs +0 -0
  99. /package/{esm2020 → esm2022}/lib/model/enum.mjs +0 -0
  100. /package/{esm2020 → esm2022}/lib/model/environments.mjs +0 -0
  101. /package/{esm2020 → esm2022}/lib/model/interface.mjs +0 -0
  102. /package/{esm2020 → esm2022}/lib/model/ivalidator.mjs +0 -0
@@ -1,197 +0,0 @@
1
- import { HttpRequest, HttpEventType } from '@angular/common/http';
2
- import { Observable } from 'rxjs';
3
- import { Injectable } from '@angular/core';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common/http";
6
- import * as i2 from "../../model/environments";
7
- import * as i3 from "@angular/material/snack-bar";
8
- import * as i4 from "../logger.service";
9
- export class GenericHttpClient {
10
- constructor(httpClient, environment, _snackBar, logger) {
11
- this.httpClient = httpClient;
12
- this.environment = environment;
13
- this._snackBar = _snackBar;
14
- this.logger = logger;
15
- this.snackBarViewModel = {};
16
- this.isHttpError = false;
17
- }
18
- /**
19
- * @description
20
- * Generic Http GET method to Get the response and bind to the view model
21
- * @param {string} destinationUrl endPoint it doesn't need / in front of the end point.
22
- * @param {IRequestOptions} options options of the request like headers, body, etc.
23
- * @returns {Observable<T>}
24
- * @usageNotes
25
- * The following snippet shows how to use this method
26
- * ```ts
27
- * this.genericHttpService.Get("get_url").subscribe(data => {
28
- * console.log('success');
29
- * }, error => {
30
- * console.log(error);
31
- * });
32
- * ```
33
- */
34
- get(destinationUrl, options) {
35
- return this.request("GET" /* HttpMethod.Get */, destinationUrl, options);
36
- }
37
- /**
38
- * @description
39
- * Generic Http post method to post the view model and bind the return view model
40
- * @param {string} destinationUrl endPoint it doesn't need / in front of the end point.
41
- * @param {IRequestOptions} options options of the request like headers, body, etc.
42
- * @returns {Observable<T>}
43
- * @usageNotes
44
- * The following snippet shows how to use this method
45
- * ```ts
46
- * this.genericHttpClientService.Post(post-url,post-view-model).subscribe(item => {
47
- * console.log(item);
48
- * },
49
- * err => {
50
- * console.log(err);
51
- * });
52
- * ```
53
- */
54
- post(destinationUrl, options) {
55
- return this.request("POST" /* HttpMethod.Post */, destinationUrl, options);
56
- }
57
- /**
58
- * @description
59
- * Generic Http Put method to post the view model and bind the return view model
60
- * @param {string} destinationUrl endPoint it doesn't need / in front of the end point.
61
- * @param {IRequestOptions} options options of the request like headers, body, etc.
62
- * @returns {Observable<T>}
63
- * @usageNotes
64
- * The following snippet shows how to use this method
65
- * ```ts
66
- * this.genericHttpClientService.Put(post-url, post-view-model).subscribe(item => {
67
- * console.log(item);
68
- * },
69
- * err => {
70
- * console.log(err);
71
- * });
72
- * ```
73
- */
74
- put(destinationUrl, options) {
75
- return this.request("PUT" /* HttpMethod.Put */, destinationUrl, options);
76
- }
77
- /**
78
- * @description
79
- * Generic Http post method to post the view model and bind the return view model
80
- * @param {string} destinationUrl endPoint it doesn't need / in front of the end point.
81
- * @param {IRequestOptions} options options of the request like headers, body, etc.
82
- * @returns {Observable<T>}
83
- * @usageNotes
84
- * The following snippet shows how to use this method
85
- * ```ts
86
- * this.genericHttpClientService.Post(post-url,post-view-model).subscribe(item => {
87
- * console.log(item);
88
- * },
89
- * err => {
90
- * console.log(err);
91
- * });
92
- * ```
93
- */
94
- patch(destinationUrl, options) {
95
- return this.request("PATCH" /* HttpMethod.Patch */, destinationUrl, options);
96
- }
97
- /**
98
- * @description
99
- * Generic Http Delete method to Delete the item and bind the return view model
100
- * @param {string} destinationUrl endPoint it doesn't need / in front of the end point.
101
- * @param {IRequestOptions} options options of the request like headers, body, etc.
102
- * @returns {Observable<T>}
103
- * @usageNotes
104
- * The following snippet shows how to use this method
105
- * ```ts
106
- * this.genericHttpClientService.Delete(this.deleteUserUrl).subscribe(item => {
107
- * console.log('success');
108
- * }, error => {
109
- * console.log(error);
110
- * });
111
- * ```
112
- */
113
- delete(destinationUrl, options) {
114
- return this.request("DELETE" /* HttpMethod.Delete */, destinationUrl, options);
115
- }
116
- /**
117
- * @description
118
- * Http request method to accept different method type and params
119
- * @param {string} method Http methods - GET, POST, PUT, DELETE.
120
- * @param {string} destinationUrl endPoint it doesn't need / in front of the end point.
121
- * @param {IRequestOptions} options options of the request like headers, body, etc.
122
- * @returns {Observable<T>}
123
- * @usageNotes
124
- * The following snippet shows how to use this method
125
- * ```ts
126
- * this.request<T>(HttpMethod.Delete, destinationUrl, options);
127
- * ```
128
- */
129
- request(method, url, options) {
130
- return Observable.create((observer) => {
131
- let destinationUrl = '';
132
- if (this.environment.baseUrl != undefined)
133
- destinationUrl = (this.environment.baseUrl) + url;
134
- else
135
- destinationUrl = url;
136
- this.httpClient.request(new HttpRequest(method, destinationUrl, options)).subscribe((response) => {
137
- const responsTye = response;
138
- switch (responsTye.type) {
139
- case HttpEventType.Sent:
140
- this.logger.info('Http Client : Sent ->', 'Request sent!');
141
- break;
142
- case HttpEventType.ResponseHeader:
143
- this.logger.info('Http Client : ResponseHeader ->', 'Response header received!');
144
- break;
145
- case HttpEventType.DownloadProgress:
146
- const kbLoaded = Math.round(responsTye.loaded / 1024);
147
- this.logger.info('Http Client : DownloadProgress ->', `Download in progress! ${kbLoaded}Kb loaded`);
148
- break;
149
- case HttpEventType.Response:
150
- observer.next(response.body);
151
- this.logger.info('Http Client : Response -> 😺 Done!', responsTye.body);
152
- }
153
- }, (error) => {
154
- switch (error.status) {
155
- case 403 /* HttpStatusCode.Forbidden */:
156
- // observer.complete();
157
- this.snackBarViewModel.messageText = 'Access to the requested resource is forbidden.';
158
- this.snackBarViewModel.actionText = 'Forbidden';
159
- this.isHttpError = true;
160
- break;
161
- case 400 /* HttpStatusCode.BadRequest */:
162
- this.snackBarViewModel.messageText = 'Server cannot or will not process the request.';
163
- this.snackBarViewModel.actionText = 'Bad Request';
164
- this.isHttpError = true;
165
- break;
166
- case 401 /* HttpStatusCode.Unauthorized */:
167
- this.snackBarViewModel.messageText = 'Request has not been applied because it lacks valid authentication credentials.';
168
- this.snackBarViewModel.actionText = 'Unauthorized';
169
- this.isHttpError = true;
170
- break;
171
- case 500 /* HttpStatusCode.InternalServerError */:
172
- this.snackBarViewModel.messageText = 'Server encountered an unexpected condition.';
173
- this.snackBarViewModel.actionText = 'Internal server error';
174
- this.isHttpError = true;
175
- break;
176
- case 0:
177
- this.snackBarViewModel.messageText = 'Not connected to the service.';
178
- this.snackBarViewModel.actionText = 'Service not available';
179
- this.isHttpError = true;
180
- break;
181
- }
182
- observer.error(error);
183
- if ((this.environment.snackBarEnable != undefined && this.environment.snackBarEnable) && this.isHttpError)
184
- this._snackBar.open(this.snackBarViewModel.messageText, this.snackBarViewModel.actionText);
185
- });
186
- });
187
- }
188
- }
189
- GenericHttpClient.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: GenericHttpClient, deps: [{ token: i1.HttpClient }, { token: i2.EnvironmentViewModel }, { token: i3.MatSnackBar }, { token: i4.LoggerService }], target: i0.ɵɵFactoryTarget.Injectable });
190
- GenericHttpClient.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: GenericHttpClient, providedIn: 'root' });
191
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: GenericHttpClient, decorators: [{
192
- type: Injectable,
193
- args: [{
194
- providedIn: 'root'
195
- }]
196
- }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.EnvironmentViewModel }, { type: i3.MatSnackBar }, { type: i4.LoggerService }]; } });
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1odHRwLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZhbGNvbi1uZy90YWlsd2luZC9zcmMvbGliL3NlcnZpY2UvaHR0cC9nZW5lcmljLWh0dHAtY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxXQUFXLEVBQ1gsYUFBYSxFQUdkLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLFVBQVUsRUFBUSxNQUFNLE1BQU0sQ0FBQztBQUV4QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFTM0MsTUFBTSxPQUFPLGlCQUFpQjtJQUk1QixZQUFvQixVQUFzQixFQUFVLFdBQWlDLEVBQzNFLFNBQXNCLEVBQVUsTUFBcUI7UUFEM0MsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFzQjtRQUMzRSxjQUFTLEdBQVQsU0FBUyxDQUFhO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUp2RCxzQkFBaUIsR0FBa0IsRUFBbUIsQ0FBQztRQUN2RCxnQkFBVyxHQUFZLEtBQUssQ0FBQztJQUc4QixDQUFDO0lBR3BFOzs7Ozs7Ozs7Ozs7Ozs7SUFlQTtJQUNPLEdBQUcsQ0FBQyxjQUFzQixFQUFFLE9BQStCO1FBQ2hFLE9BQU8sSUFBSSxDQUFDLE9BQU8sNkJBQW9CLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7TUFnQkU7SUFDSyxJQUFJLENBQUMsY0FBc0IsRUFBRSxPQUErQjtRQUNqRSxPQUFPLElBQUksQ0FBQyxPQUFPLCtCQUFxQixjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7O01BZ0JFO0lBQ0ssR0FBRyxDQUFDLGNBQXNCLEVBQUUsT0FBK0I7UUFDaEUsT0FBTyxJ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QyxpQkFBaUIsQ0FBQyxVQUFVLEdBQUcsY0FBYyxDQUFDO3dCQUNuRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQzt3QkFDeEIsTUFBTTtvQkFDUjt3QkFDRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxHQUFHLDZDQUE2QyxDQUFDO3dCQUNuRixJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxHQUFHLHVCQUF1QixDQUFDO3dCQUM1RCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQzt3QkFDeEIsTUFBTTtvQkFDUixLQUFLLENBQUM7d0JBQ0osSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsR0FBRywrQkFBK0IsQ0FBQzt3QkFDckUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsR0FBRyx1QkFBdUIsQ0FBQzt3QkFDNUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7d0JBQ3hCLE1BQU07aUJBQ1Q7Z0JBQ0QsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXO29CQUN2RyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMvRixDQUFDLENBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7OEdBekxVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07MkZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEh0dHBDbGllbnQsXG4gIEh0dHBSZXF1ZXN0LFxuICBIdHRwRXZlbnRUeXBlLFxuICBIdHRwRXZlbnQsXG4gIEh0dHBTdGF0dXNDb2RlXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElHZW5lcmljSHR0cENsaWVudCB9IGZyb20gJy4vaWdlbmVyaWMtaHR0cC1jbGllbnQnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtJUmVxdWVzdE9wdGlvbnMsIFNuYWNrYmFyTW9kZWx9IGZyb20gJy4uLy4uL21vZGVsL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtFbnZpcm9ubWVudFZpZXdNb2RlbH0gZnJvbSBcIi4uLy4uL21vZGVsL2Vudmlyb25tZW50c1wiO1xuaW1wb3J0IHtIdHRwTWV0aG9kfSBmcm9tIFwiLi4vLi4vbW9kZWwvZW51bVwiO1xuaW1wb3J0IHtNYXRTbmFja0Jhcn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhclwiO1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgR2VuZXJpY0h0dHBDbGllbnQ8VD4gaW1wbGVtZW50cyBJR2VuZXJpY0h0dHBDbGllbnQ8VD57XG4gIHByaXZhdGUgc25hY2tCYXJWaWV3TW9kZWw6IFNuYWNrYmFyTW9kZWwgPSB7fSBhcyBTbmFja2Jhck1vZGVsO1xuICBwcml2YXRlIGlzSHR0cEVycm9yOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCBwcml2YXRlIGVudmlyb25tZW50OiBFbnZpcm9ubWVudFZpZXdNb2RlbCxcbiAgICBwcml2YXRlIF9zbmFja0JhcjogTWF0U25hY2tCYXIsIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlKSB7IH1cblxuXG4gIC8qKlxuICAqIEBkZXNjcmlwdGlvblxuICAqIEdlbmVyaWMgSHR0cCBHRVQgbWV0aG9kIHRvIEdldCB0aGUgcmVzcG9uc2UgYW5kIGJpbmQgdG8gdGhlIHZpZXcgbW9kZWxcbiAgKiBAcGFyYW0ge3N0cmluZ30gZGVzdGluYXRpb25VcmwgZW5kUG9pbnQgaXQgZG9lc24ndCBuZWVkIC8gaW4gZnJvbnQgb2YgdGhlIGVuZCBwb2ludC5cbiAgKiBAcGFyYW0ge0lSZXF1ZXN0T3B0aW9uc30gb3B0aW9ucyBvcHRpb25zIG9mIHRoZSByZXF1ZXN0IGxpa2UgaGVhZGVycywgYm9keSwgZXRjLlxuICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPFQ+fVxuICAqIEB1c2FnZU5vdGVzXG4gICogVGhlIGZvbGxvd2luZyBzbmlwcGV0IHNob3dzIGhvdyB0byB1c2UgdGhpcyBtZXRob2RcbiAgKiBgYGB0c1xuICAqICAgIHRoaXMuZ2VuZXJpY0h0dHBTZXJ2aWNlLkdldChcImdldF91cmxcIikuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAqICAgICAgICBjb25zb2xlLmxvZygnc3VjY2VzcycpO1xuICAqICAgICAgfSwgZXJyb3IgPT4ge1xuICAqICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAqICAgICAgfSk7XG4gICogYGBgXG4qL1xuICBwdWJsaWMgZ2V0KGRlc3RpbmF0aW9uVXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMgfCBhbnkpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0PFQ+KEh0dHBNZXRob2QuR2V0LCBkZXN0aW5hdGlvblVybCwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICAqIEBkZXNjcmlwdGlvblxuICAgICogR2VuZXJpYyBIdHRwIHBvc3QgbWV0aG9kIHRvIHBvc3QgdGhlIHZpZXcgbW9kZWwgYW5kIGJpbmQgdGhlIHJldHVybiB2aWV3IG1vZGVsXG4gICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzdGluYXRpb25VcmwgZW5kUG9pbnQgaXQgZG9lc24ndCBuZWVkIC8gaW4gZnJvbnQgb2YgdGhlIGVuZCBwb2ludC5cbiAgICAqIEBwYXJhbSB7SVJlcXVlc3RPcHRpb25zfSBvcHRpb25zIG9wdGlvbnMgb2YgdGhlIHJlcXVlc3QgbGlrZSBoZWFkZXJzLCBib2R5LCBldGMuXG4gICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxUPn1cbiAgICAqIEB1c2FnZU5vdGVzXG4gICAgKiBUaGUgZm9sbG93aW5nIHNuaXBwZXQgc2hvd3MgaG93IHRvIHVzZSB0aGlzIG1ldGhvZFxuICAgICogYGBgdHNcbiAgICAqICAgIHRoaXMuZ2VuZXJpY0h0dHBDbGllbnRTZXJ2aWNlLlBvc3QocG9zdC11cmwscG9zdC12aWV3LW1vZGVsKS5zdWJzY3JpYmUoaXRlbSA9PiB7XG4gICAgKiAgICAgICAgY29uc29sZS5sb2coaXRlbSk7XG4gICAgKiAgICAgIH0sXG4gICAgKiAgICAgIGVyciA9PiB7XG4gICAgKiAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAqICAgICAgfSk7XG4gICAgKiBgYGBcbiAgKi9cbiAgcHVibGljIHBvc3QoZGVzdGluYXRpb25Vcmw6IHN0cmluZywgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyB8IGFueSk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8VD4oSHR0cE1ldGhvZC5Qb3N0LCBkZXN0aW5hdGlvblVybCwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICAqIEBkZXNjcmlwdGlvblxuICAgICogR2VuZXJpYyBIdHRwIFB1dCBtZXRob2QgdG8gcG9zdCB0aGUgdmlldyBtb2RlbCBhbmQgYmluZCB0aGUgcmV0dXJuIHZpZXcgbW9kZWxcbiAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXN0aW5hdGlvblVybCBlbmRQb2ludCBpdCBkb2Vzbid0IG5lZWQgLyBpbiBmcm9udCBvZiB0aGUgZW5kIHBvaW50LlxuICAgICogQHBhcmFtIHtJUmVxdWVzdE9wdGlvbnN9IG9wdGlvbnMgb3B0aW9ucyBvZiB0aGUgcmVxdWVzdCBsaWtlIGhlYWRlcnMsIGJvZHksIGV0Yy5cbiAgICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPFQ+fVxuICAgICogQHVzYWdlTm90ZXNcbiAgICAqIFRoZSBmb2xsb3dpbmcgc25pcHBldCBzaG93cyBob3cgdG8gdXNlIHRoaXMgbWV0aG9kXG4gICAgKiBgYGB0c1xuICAgICogICAgdGhpcy5nZW5lcmljSHR0cENsaWVudFNlcnZpY2UuUHV0KHBvc3QtdXJsLCBwb3N0LXZpZXctbW9kZWwpLnN1YnNjcmliZShpdGVtID0+IHtcbiAgICAqICAgICAgICBjb25zb2xlLmxvZyhpdGVtKTtcbiAgICAqICAgICAgfSxcbiAgICAqICAgICAgZXJyID0+IHtcbiAgICAqICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICogICAgICB9KTtcbiAgICAqIGBgYFxuICAqL1xuICBwdWJsaWMgcHV0KGRlc3RpbmF0aW9uVXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMgfCBhbnkpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0PFQ+KEh0dHBNZXRob2QuUHV0LCBkZXN0aW5hdGlvblVybCwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICAgICogQGRlc2NyaXB0aW9uXG4gICAgICAqIEdlbmVyaWMgSHR0cCBwb3N0IG1ldGhvZCB0byBwb3N0IHRoZSB2aWV3IG1vZGVsIGFuZCBiaW5kIHRoZSByZXR1cm4gdmlldyBtb2RlbFxuICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzdGluYXRpb25VcmwgZW5kUG9pbnQgaXQgZG9lc24ndCBuZWVkIC8gaW4gZnJvbnQgb2YgdGhlIGVuZCBwb2ludC5cbiAgICAgICogQHBhcmFtIHtJUmVxdWVzdE9wdGlvbnN9IG9wdGlvbnMgb3B0aW9ucyBvZiB0aGUgcmVxdWVzdCBsaWtlIGhlYWRlcnMsIGJvZHksIGV0Yy5cbiAgICAgICogQHJldHVybnMge09ic2VydmFibGU8VD59XG4gICAgICAqIEB1c2FnZU5vdGVzXG4gICAgICAqIFRoZSBmb2xsb3dpbmcgc25pcHBldCBzaG93cyBob3cgdG8gdXNlIHRoaXMgbWV0aG9kXG4gICAgICAqIGBgYHRzXG4gICAgICAqICAgIHRoaXMuZ2VuZXJpY0h0dHBDbGllbnRTZXJ2aWNlLlBvc3QocG9zdC11cmwscG9zdC12aWV3LW1vZGVsKS5zdWJzY3JpYmUoaXRlbSA9PiB7XG4gICAgICAqICAgICAgICBjb25zb2xlLmxvZyhpdGVtKTtcbiAgICAgICogICAgICB9LFxuICAgICAgKiAgICAgIGVyciA9PiB7XG4gICAgICAqICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgKiAgICAgIH0pO1xuICAgICAgKiBgYGBcbiAgICAqL1xuICBwdWJsaWMgcGF0Y2goZGVzdGluYXRpb25Vcmw6IHN0cmluZywgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyB8IGFueSk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8VD4oSHR0cE1ldGhvZC5QYXRjaCwgZGVzdGluYXRpb25VcmwsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAgKiBAZGVzY3JpcHRpb25cbiAgICAqIEdlbmVyaWMgSHR0cCBEZWxldGUgbWV0aG9kIHRvIERlbGV0ZSB0aGUgaXRlbSBhbmQgYmluZCB0aGUgcmV0dXJuIHZpZXcgbW9kZWxcbiAgICAqIEBwYXJhbSB7c3RyaW5nfSBkZXN0aW5hdGlvblVybCBlbmRQb2ludCBpdCBkb2Vzbid0IG5lZWQgLyBpbiBmcm9udCBvZiB0aGUgZW5kIHBvaW50LlxuICAgICogQHBhcmFtIHtJUmVxdWVzdE9wdGlvbnN9IG9wdGlvbnMgb3B0aW9ucyBvZiB0aGUgcmVxdWVzdCBsaWtlIGhlYWRlcnMsIGJvZHksIGV0Yy5cbiAgICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPFQ+fVxuICAgICogQHVzYWdlTm90ZXNcbiAgICAqIFRoZSBmb2xsb3dpbmcgc25pcHBldCBzaG93cyBob3cgdG8gdXNlIHRoaXMgbWV0aG9kXG4gICAgKiBgYGB0c1xuICAgICogICAgdGhpcy5nZW5lcmljSHR0cENsaWVudFNlcnZpY2UuRGVsZXRlKHRoaXMuZGVsZXRlVXNlclVybCkuc3Vic2NyaWJlKGl0ZW0gPT4ge1xuICAgICogICAgICAgICBjb25zb2xlLmxvZygnc3VjY2VzcycpO1xuICAgICogICAgICB9LCBlcnJvciA9PiB7XG4gICAgKiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICogICAgICB9KTtcbiAgICAqIGBgYFxuICAqL1xuICBwdWJsaWMgZGVsZXRlKGRlc3RpbmF0aW9uVXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMgfCBhbnkpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0PFQ+KEh0dHBNZXRob2QuRGVsZXRlLCBkZXN0aW5hdGlvblVybCwgb3B0aW9ucyk7XG4gIH1cbiAgXG4gIC8qKlxuICAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgICogSHR0cCByZXF1ZXN0IG1ldGhvZCB0byBhY2NlcHQgZGlmZmVyZW50IG1ldGhvZCB0eXBlIGFuZCBwYXJhbXNcbiAgICAgICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZCBIdHRwIG1ldGhvZHMgLSBHRVQsIFBPU1QsIFBVVCwgREVMRVRFLlxuICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzdGluYXRpb25VcmwgZW5kUG9pbnQgaXQgZG9lc24ndCBuZWVkIC8gaW4gZnJvbnQgb2YgdGhlIGVuZCBwb2ludC5cbiAgICAgICogQHBhcmFtIHtJUmVxdWVzdE9wdGlvbnN9IG9wdGlvbnMgb3B0aW9ucyBvZiB0aGUgcmVxdWVzdCBsaWtlIGhlYWRlcnMsIGJvZHksIGV0Yy5cbiAgICAgICogQHJldHVybnMge09ic2VydmFibGU8VD59XG4gICAgICAqIEB1c2FnZU5vdGVzXG4gICAgICAqIFRoZSBmb2xsb3dpbmcgc25pcHBldCBzaG93cyBob3cgdG8gdXNlIHRoaXMgbWV0aG9kXG4gICAgICAqIGBgYHRzXG4gICAgICAqICAgIHRoaXMucmVxdWVzdDxUPihIdHRwTWV0aG9kLkRlbGV0ZSwgZGVzdGluYXRpb25VcmwsIG9wdGlvbnMpO1xuICAgICAgKiBgYGBcbiAgICAqL1xuICBwcml2YXRlIHJlcXVlc3Q8VD4obWV0aG9kOiBzdHJpbmcsIHVybDogc3RyaW5nLCBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIE9ic2VydmFibGUuY3JlYXRlKChvYnNlcnZlcjogYW55KSA9PiB7XG4gICAgICBsZXQgZGVzdGluYXRpb25VcmwgPSAnJztcbiAgICAgIGlmICh0aGlzLmVudmlyb25tZW50LmJhc2VVcmwgIT0gdW5kZWZpbmVkKVxuICAgICAgICBkZXN0aW5hdGlvblVybCA9ICh0aGlzLmVudmlyb25tZW50LmJhc2VVcmwpICsgdXJsXG4gICAgICBlbHNlXG4gICAgICAgIGRlc3RpbmF0aW9uVXJsID0gdXJsXG4gICAgICB0aGlzLmh0dHBDbGllbnQucmVxdWVzdDxUPihuZXcgSHR0cFJlcXVlc3QobWV0aG9kLCBkZXN0aW5hdGlvblVybCwgb3B0aW9ucykpLnN1YnNjcmliZShcbiAgICAgICAgKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCByZXNwb25zVHllID0gcmVzcG9uc2UgYXMgSHR0cEV2ZW50PGFueT5cbiAgICAgICAgICBzd2l0Y2ggKHJlc3BvbnNUeWUudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlNlbnQ6XG4gICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmluZm8oJ0h0dHAgQ2xpZW50IDogU2VudCAtPicsICdSZXF1ZXN0IHNlbnQhJyk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlSGVhZGVyOlxuICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKCdIdHRwIENsaWVudCA6IFJlc3BvbnNlSGVhZGVyIC0+JywgJ1Jlc3BvbnNlIGhlYWRlciByZWNlaXZlZCEnKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuRG93bmxvYWRQcm9ncmVzczpcbiAgICAgICAgICAgICAgY29uc3Qga2JMb2FkZWQgPSBNYXRoLnJvdW5kKHJlc3BvbnNUeWUubG9hZGVkIC8gMTAyNCk7XG4gICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmluZm8oJ0h0dHAgQ2xpZW50IDogRG93bmxvYWRQcm9ncmVzcyAtPicsIGBEb3dubG9hZCBpbiBwcm9ncmVzcyEgJHtrYkxvYWRlZH1LYiBsb2FkZWRgKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuUmVzcG9uc2U6XG4gICAgICAgICAgICAgIG9ic2VydmVyLm5leHQocmVzcG9uc2UuYm9keSk7XG4gICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmluZm8oJ0h0dHAgQ2xpZW50IDogUmVzcG9uc2UgLT4g8J+YuiBEb25lIScsIHJlc3BvbnNUeWUuYm9keSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKGVycm9yLnN0YXR1cykge1xuICAgICAgICAgICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Gb3JiaWRkZW46XG4gICAgICAgICAgICAgIC8vIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgIHRoaXMuc25hY2tCYXJWaWV3TW9kZWwubWVzc2FnZVRleHQgPSAnQWNjZXNzIHRvIHRoZSByZXF1ZXN0ZWQgcmVzb3VyY2UgaXMgZm9yYmlkZGVuLic7XG4gICAgICAgICAgICAgIHRoaXMuc25hY2tCYXJWaWV3TW9kZWwuYWN0aW9uVGV4dCA9ICdGb3JiaWRkZW4nO1xuICAgICAgICAgICAgICB0aGlzLmlzSHR0cEVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkJhZFJlcXVlc3Q6XG4gICAgICAgICAgICAgIHRoaXMuc25hY2tCYXJWaWV3TW9kZWwubWVzc2FnZVRleHQgPSAnU2VydmVyIGNhbm5vdCBvciB3aWxsIG5vdCBwcm9jZXNzIHRoZSByZXF1ZXN0Lic7XG4gICAgICAgICAgICAgIHRoaXMuc25hY2tCYXJWaWV3TW9kZWwuYWN0aW9uVGV4dCA9ICdCYWQgUmVxdWVzdCc7XG4gICAgICAgICAgICAgIHRoaXMuaXNIdHRwRXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuVW5hdXRob3JpemVkOlxuICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyVmlld01vZGVsLm1lc3NhZ2VUZXh0ID0gJ1JlcXVlc3QgaGFzIG5vdCBiZWVuIGFwcGxpZWQgYmVjYXVzZSBpdCBsYWNrcyB2YWxpZCBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscy4nO1xuICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyVmlld01vZGVsLmFjdGlvblRleHQgPSAnVW5hdXRob3JpemVkJztcbiAgICAgICAgICAgICAgdGhpcy5pc0h0dHBFcnJvciA9IHRydWU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5JbnRlcm5hbFNlcnZlckVycm9yOlxuICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyVmlld01vZGVsLm1lc3NhZ2VUZXh0ID0gJ1NlcnZlciBlbmNvdW50ZXJlZCBhbiB1bmV4cGVjdGVkIGNvbmRpdGlvbi4nO1xuICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyVmlld01vZGVsLmFjdGlvblRleHQgPSAnSW50ZXJuYWwgc2VydmVyIGVycm9yJztcbiAgICAgICAgICAgICAgdGhpcy5pc0h0dHBFcnJvciA9IHRydWU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyVmlld01vZGVsLm1lc3NhZ2VUZXh0ID0gJ05vdCBjb25uZWN0ZWQgdG8gdGhlIHNlcnZpY2UuJztcbiAgICAgICAgICAgICAgdGhpcy5zbmFja0JhclZpZXdNb2RlbC5hY3Rpb25UZXh0ID0gJ1NlcnZpY2Ugbm90IGF2YWlsYWJsZSc7XG4gICAgICAgICAgICAgIHRoaXMuaXNIdHRwRXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgIGlmICgodGhpcy5lbnZpcm9ubWVudC5zbmFja0JhckVuYWJsZSAhPSB1bmRlZmluZWQgJiYgdGhpcy5lbnZpcm9ubWVudC5zbmFja0JhckVuYWJsZSkgJiYgdGhpcy5pc0h0dHBFcnJvcilcbiAgICAgICAgICAgIHRoaXMuX3NuYWNrQmFyLm9wZW4odGhpcy5zbmFja0JhclZpZXdNb2RlbC5tZXNzYWdlVGV4dCwgdGhpcy5zbmFja0JhclZpZXdNb2RlbC5hY3Rpb25UZXh0KTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,10 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class IGenericHttpClient {
4
- }
5
- IGenericHttpClient.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: IGenericHttpClient, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6
- IGenericHttpClient.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: IGenericHttpClient });
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: IGenericHttpClient, decorators: [{
8
- type: Injectable
9
- }] });
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWdlbmVyaWMtaHR0cC1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mYWxjb24tbmcvdGFpbHdpbmQvc3JjL2xpYi9zZXJ2aWNlL2h0dHAvaWdlbmVyaWMtaHR0cC1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsTUFBTSxPQUFnQixrQkFBa0I7OytHQUFsQixrQkFBa0I7bUhBQWxCLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUR2QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSVJlcXVlc3RPcHRpb25zIH0gZnJvbSAnLi4vLi4vbW9kZWwvaW50ZXJmYWNlJztcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBJR2VuZXJpY0h0dHBDbGllbnQ8VD4ge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEdlbmVyaWMgSHR0cCBHRVQgbWV0aG9kIHRvIEdldCB0aGUgcmVzcG9uc2UgYW5kIGJpbmQgdG8gdGhlIHZpZXcgbW9kZWxcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRlc3RpbmF0aW9uVXJsIGVuZFBvaW50IGl0IGRvZXNuJ3QgbmVlZCAvIGluIGZyb250IG9mIHRoZSBlbmQgcG9pbnQuXG4gICAqIEBwYXJhbSB7SVJlcXVlc3RPcHRpb25zfSBvcHRpb25zIG9wdGlvbnMgb2YgdGhlIHJlcXVlc3QgbGlrZSBoZWFkZXJzLCBib2R5LCBldGMuXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPFQ+fVxuICAgKiBAdXNhZ2VOb3Rlc1xuICAgKiBUaGUgZm9sbG93aW5nIHNuaXBwZXQgc2hvd3MgaG93IHRvIHVzZSB0aGlzIG1ldGhvZFxuICAgKiBgYGB0c1xuICAgKiAgICB0aGlzLmdlbmVyaWNIdHRwU2VydmljZS5IdHRwR2V0KFwiZ2V0X3VybFwiKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAqICAgICAgICBjb25zb2xlLmxvZygnc3VjY2VzcycpO1xuICAgKiAgICAgIH0sIGVycm9yID0+IHtcbiAgICogICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAqICAgICAgfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYWJzdHJhY3QgZ2V0KFxuICAgIGRlc3RpbmF0aW9uVXJsOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyB8IGFueVxuICApOiBPYnNlcnZhYmxlPFQ+O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogR2VuZXJpYyBIdHRwIHBvc3QgbWV0aG9kIHRvIHBvc3QgdGhlIHZpZXcgbW9kZWwgYW5kIGJpbmQgdGhlIHJldHVybiB2aWV3IG1vZGVsXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkZXN0aW5hdGlvblVybCBlbmRQb2ludCBpdCBkb2Vzbid0IG5lZWQgLyBpbiBmcm9udCBvZiB0aGUgZW5kIHBvaW50LlxuICAgKiBAcGFyYW0ge0lSZXF1ZXN0T3B0aW9uc30gb3B0aW9ucyBvcHRpb25zIG9mIHRoZSByZXF1ZXN0IGxpa2UgaGVhZGVycywgYm9keSwgZXRjLlxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxUPn1cbiAgICogQHVzYWdlTm90ZXNcbiAgICogVGhlIGZvbGxvd2luZyBzbmlwcGV0IHNob3dzIGhvdyB0byB1c2UgdGhpcyBtZXRob2RcbiAgICogYGBgdHNcbiAgICogICAgdGhpcy5nZW5lcmljSHR0cFNlcnZpY2UuUG9zdChwb3N0X3VybCxwb3N0LXZpZXctbW9kZWxcIikuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgKiAgICAgICAgY29uc29sZS5sb2coJ2RhdGEgaXMgbm90IHN1Y2Nlc3MnKTtcbiAgICogICAgICB9LCBlcnJvciA9PiB7XG4gICAqICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgKiAgICAgIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIGFic3RyYWN0IHBvc3QoXG4gICAgZGVzdGluYXRpb25Vcmw6IHN0cmluZyxcbiAgICBvcHRpb25zPzogSVJlcXVlc3RPcHRpb25zIHwgYW55XG4gICk6IE9ic2VydmFibGU8VD47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBHZW5lcmljIEh0dHAgcHV0IG1ldGhvZCB0byBwb3N0IHRoZSB2aWV3IG1vZGVsIGFuZCBiaW5kIHRoZSByZXR1cm4gdmlldyBtb2RlbFxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzdGluYXRpb25VcmwgZW5kUG9pbnQgaXQgZG9lc24ndCBuZWVkIC8gaW4gZnJvbnQgb2YgdGhlIGVuZCBwb2ludC5cbiAgICogQHBhcmFtIHtJUmVxdWVzdE9wdGlvbnN9IG9wdGlvbnMgb3B0aW9ucyBvZiB0aGUgcmVxdWVzdCBsaWtlIGhlYWRlcnMsIGJvZHksIGV0Yy5cbiAgICogQHJldHVybnMge09ic2VydmFibGU8VD59XG4gICAqIEB1c2FnZU5vdGVzXG4gICAqIFRoZSBmb2xsb3dpbmcgc25pcHBldCBzaG93cyBob3cgdG8gdXNlIHRoaXMgbWV0aG9kXG4gICAqIGBgYHRzXG4gICAqICAgIHRoaXMuZ2VuZXJpY0h0dHBTZXJ2aWNlLlB1dChwdXRfdXJsLHBvc3Qtdmlldy1tb2RlbCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgKiAgICAgICAgY29uc29sZS5sb2coJ2RhdGEgaXMgbm90IHN1Y2Nlc3MnKTtcbiAgICogICAgICB9LCBlcnJvciA9PiB7XG4gICAqICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgKiAgICAgIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIGFic3RyYWN0IHB1dChcbiAgICBkZXN0aW5hdGlvblVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMgfCBhbnlcbiAgKTogT2JzZXJ2YWJsZTxUPjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEdlbmVyaWMgSHR0cCBwYXRjaCBtZXRob2QgdG8gcGF0Y2ggdGhlIHZpZXcgbW9kZWwgYW5kIGJpbmQgdGhlIHJldHVybiB2aWV3IG1vZGVsXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkZXN0aW5hdGlvblVybCBlbmRQb2ludCBpdCBkb2Vzbid0IG5lZWQgLyBpbiBmcm9udCBvZiB0aGUgZW5kIHBvaW50LlxuICAgKiBAcGFyYW0ge0lSZXF1ZXN0T3B0aW9uc30gb3B0aW9ucyBvcHRpb25zIG9mIHRoZSByZXF1ZXN0IGxpa2UgaGVhZGVycywgYm9keSwgZXRjLlxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxUPn1cbiAgICogQHVzYWdlTm90ZXNcbiAgICogVGhlIGZvbGxvd2luZyBzbmlwcGV0IHNob3dzIGhvdyB0byB1c2UgdGhpcyBtZXRob2RcbiAgICogYGBgdHNcbiAgICogICAgdGhpcy5nZW5lcmljSHR0cFNlcnZpY2UuUGF0Y2gocHV0X3VybCxwb3N0LXZpZXctbW9kZWwpLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICogICAgICAgIGNvbnNvbGUubG9nKCdkYXRhIGlzIG5vdCBzdWNjZXNzJyk7XG4gICAqICAgICAgfSwgZXJyb3IgPT4ge1xuICAgKiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICogICAgICB9KTtcbiAgICogYGBgXG4gICAqL1xuICBhYnN0cmFjdCBwYXRjaChcbiAgICBkZXN0aW5hdGlvblVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBJUmVxdWVzdE9wdGlvbnMgfCBhbnlcbiAgKTogT2JzZXJ2YWJsZTxUPjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEdlbmVyaWMgSHR0cCBEZWxldGUgbWV0aG9kIHRvIERlbGV0ZSB0aGUgaXRlbSBhbmQgYmluZCB0aGUgcmV0dXJuIHZpZXcgbW9kZWxcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRlc3RpbmF0aW9uVXJsIGVuZFBvaW50IGl0IGRvZXNuJ3QgbmVlZCAvIGluIGZyb250IG9mIHRoZSBlbmQgcG9pbnQuXG4gICAqIEBwYXJhbSB7SVJlcXVlc3RPcHRpb25zfSBvcHRpb25zIG9wdGlvbnMgb2YgdGhlIHJlcXVlc3QgbGlrZSBoZWFkZXJzLCBib2R5LCBldGMuXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPFQ+fVxuICAgKiBAdXNhZ2VOb3Rlc1xuICAgKiBUaGUgZm9sbG93aW5nIHNuaXBwZXQgc2hvd3MgaG93IHRvIHVzZSB0aGlzIG1ldGhvZFxuICAgKiBgYGB0c1xuICAgKiAgICB0aGlzLmdlbmVyaWNIdHRwQ2xpZW50U2VydmljZS5EZWxldGUodGhpcy5kZWxldGVVc2VyVXJsKS5zdWJzY3JpYmUoaXRlbSA9PiB7XG4gICAqICAgICAgICAgY29uc29sZS5sb2coJ3N1Y2Nlc3MnKTtcbiAgICogICAgICB9LCBlcnJvciA9PiB7XG4gICAqICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAqICAgICAgfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYWJzdHJhY3QgZGVsZXRlKFxuICAgIGRlc3RpbmF0aW9uVXJsOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IElSZXF1ZXN0T3B0aW9ucyB8IGFueVxuICApOiBPYnNlcnZhYmxlPFQ+O1xufVxuIl19
@@ -1,78 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class LoggerService {
4
- constructor() {
5
- this.initialized = false;
6
- this._level = "Warnings" /* LoggingLevel.Warnings */;
7
- }
8
- async initialize(appSettings) {
9
- if (this.initialized)
10
- return;
11
- this._level = appSettings.loggingLevel;
12
- this.initialized = true;
13
- }
14
- log(message, level = "Warnings" /* LoggingLevel.Warnings */, ...optionalParams) {
15
- if (this.shouldLog(level)) {
16
- switch (level) {
17
- case "Errors" /* LoggingLevel.Errors */:
18
- console.error(message, optionalParams);
19
- break;
20
- case "Warnings" /* LoggingLevel.Warnings */:
21
- console.warn(message, optionalParams);
22
- break;
23
- case "Info" /* LoggingLevel.Info */:
24
- console.info(message, optionalParams);
25
- break;
26
- default:
27
- console.debug(message, optionalParams);
28
- }
29
- }
30
- }
31
- shouldLog(level) {
32
- if (this._level === "None" /* LoggingLevel.None */) {
33
- return false;
34
- }
35
- else if (this._level === "Errors" /* LoggingLevel.Errors */) {
36
- return level === "Errors" /* LoggingLevel.Errors */;
37
- }
38
- else if (this._level === "Warnings" /* LoggingLevel.Warnings */) {
39
- return level === "Errors" /* LoggingLevel.Errors */ || level === "Warnings" /* LoggingLevel.Warnings */;
40
- }
41
- else if (this._level === "Info" /* LoggingLevel.Info */) {
42
- return level === "Errors" /* LoggingLevel.Errors */ || level === "Warnings" /* LoggingLevel.Warnings */ || level === "Info" /* LoggingLevel.Info */;
43
- }
44
- else {
45
- return true;
46
- }
47
- }
48
- error(message, ...optionalParams) {
49
- this.log(message, "Errors" /* LoggingLevel.Errors */, optionalParams);
50
- }
51
- warning(message, ...optionalParams) {
52
- this.log(message, "Warnings" /* LoggingLevel.Warnings */, optionalParams);
53
- }
54
- info(message, ...optionalParams) {
55
- this.log(message, "Info" /* LoggingLevel.Info */, optionalParams);
56
- }
57
- verbose(message, ...optionalParams) {
58
- this.log(message, "Verbose" /* LoggingLevel.Verbose */, optionalParams);
59
- }
60
- }
61
- LoggerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: LoggerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
62
- LoggerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: LoggerService, providedIn: 'root' });
63
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: LoggerService, decorators: [{
64
- type: Injectable,
65
- args: [{
66
- providedIn: 'root'
67
- }]
68
- }], ctorParameters: function () { return []; } });
69
- export function loggerServiceFactory(loggerService, appSettings) {
70
- return async () => {
71
- appSettings.isServiceReady.subscribe(item => {
72
- if (item)
73
- loggerService.initialize(appSettings.getAppsettingValue());
74
- });
75
- };
76
- }
77
- ;
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mYWxjb24tbmcvdGFpbHdpbmQvc3JjL2xpYi9zZXJ2aWNlL2xvZ2dlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBUTNDLE1BQU0sT0FBTyxhQUFhO0lBR3hCO1FBRlEsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0IsV0FBTSwwQ0FBdUM7SUFDckMsQ0FBQztJQUVqQixLQUFLLENBQUMsVUFBVSxDQUFDLFdBQWlDO1FBQ2hELElBQUksSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLFlBQTRCLENBQUM7UUFDdkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDMUIsQ0FBQztJQUVPLEdBQUcsQ0FBQyxPQUFZLEVBQUUsS0FBSyx5Q0FBd0IsRUFBRSxHQUFHLGNBQXFCO1FBQy9FLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6QixRQUFRLEtBQUssRUFBRTtnQkFDYjtvQkFDRSxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztvQkFDdkMsTUFBTTtnQkFDUjtvQkFDRSxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztvQkFDdEMsTUFBTTtnQkFDUjtvQkFDRSxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztvQkFDdEMsTUFBTTtnQkFDUjtvQkFDRSxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQzthQUMxQztTQUNGO0lBQ0gsQ0FBQztJQUVPLFNBQVMsQ0FBQyxLQUFtQjtRQUNuQyxJQUFJLElBQUksQ0FBQyxNQUFNLG1DQUFzQixFQUFFO1lBQ3JDLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7YUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLHVDQUF3QixFQUFFO1lBQzlDLE9BQU8sS0FBSyx1Q0FBd0IsQ0FBQztTQUN0QzthQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sMkNBQTBCLEVBQUU7WUFDaEQsT0FBTyxLQUFLLHVDQUF3QixJQUFJLEtBQUssMkNBQTBCLENBQUM7U0FDekU7YUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLG1DQUFzQixFQUFFO1lBQzVDLE9BQU8sS0FBSyx1Q0FBd0IsSUFBSSxLQUFLLDJDQUEwQixJQUFJLEtBQUssbUNBQXNCLENBQUM7U0FDeEc7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQVksRUFBRSxHQUFHLGNBQXFCO1FBQzFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxzQ0FBdUIsY0FBYyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUFZLEVBQUUsR0FBRyxjQUFxQjtRQUM1QyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sMENBQXlCLGNBQWMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxJQUFJLENBQUMsT0FBWSxFQUFFLEdBQUcsY0FBcUI7UUFDekMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLGtDQUFxQixjQUFjLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsT0FBTyxDQUFDLE9BQVksRUFBRSxHQUFHLGNBQXFCO1FBQzVDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyx3Q0FBd0IsY0FBYyxDQUFDLENBQUM7SUFDMUQsQ0FBQzs7MEdBekRVLGFBQWE7OEdBQWIsYUFBYSxjQUZaLE1BQU07MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBNERELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxhQUE0QixFQUFFLFdBQThCO0lBQy9GLE9BQU8sS0FBSyxJQUFJLEVBQUU7UUFDaEIsV0FBVyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDMUMsSUFBSSxJQUFJO2dCQUNOLGFBQWEsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLGtCQUFrQixFQUEwQixDQUFDLENBQUM7UUFDdkYsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUE7QUFDSCxDQUFDO0FBQUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFwcFNldHRpbmdTZXJ2aWNlIH0gZnJvbSAnLi9hcHBzZXR0aW5nLnNlcnZpY2UnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gXCIuLi9tb2RlbC9lbnVtXCI7XG5pbXBvcnQge0lBcHBTZXR0aW5nVmlld01vZGVsfSBmcm9tIFwiLi4vbW9kZWwvaW50ZXJmYWNlXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIExvZ2dlclNlcnZpY2Uge1xuICBwcml2YXRlIGluaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2xldmVsOiBMb2dnaW5nTGV2ZWwgPSBMb2dnaW5nTGV2ZWwuV2FybmluZ3M7XG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgYXN5bmMgaW5pdGlhbGl6ZShhcHBTZXR0aW5nczogSUFwcFNldHRpbmdWaWV3TW9kZWwpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pbml0aWFsaXplZCkgcmV0dXJuO1xuICAgIHRoaXMuX2xldmVsID0gYXBwU2V0dGluZ3MubG9nZ2luZ0xldmVsIGFzIExvZ2dpbmdMZXZlbDtcbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgbG9nKG1lc3NhZ2U6IGFueSwgbGV2ZWwgPSBMb2dnaW5nTGV2ZWwuV2FybmluZ3MsIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSkge1xuICAgIGlmICh0aGlzLnNob3VsZExvZyhsZXZlbCkpIHtcbiAgICAgIHN3aXRjaCAobGV2ZWwpIHtcbiAgICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuRXJyb3JzOlxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSwgb3B0aW9uYWxQYXJhbXMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvZ2dpbmdMZXZlbC5XYXJuaW5nczpcbiAgICAgICAgICBjb25zb2xlLndhcm4obWVzc2FnZSwgb3B0aW9uYWxQYXJhbXMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvZ2dpbmdMZXZlbC5JbmZvOlxuICAgICAgICAgIGNvbnNvbGUuaW5mbyhtZXNzYWdlLCBvcHRpb25hbFBhcmFtcyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY29uc29sZS5kZWJ1ZyhtZXNzYWdlLCBvcHRpb25hbFBhcmFtcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRMb2cobGV2ZWw6IExvZ2dpbmdMZXZlbCkge1xuICAgIGlmICh0aGlzLl9sZXZlbCA9PT0gTG9nZ2luZ0xldmVsLk5vbmUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2xldmVsID09PSBMb2dnaW5nTGV2ZWwuRXJyb3JzKSB7XG4gICAgICByZXR1cm4gbGV2ZWwgPT09IExvZ2dpbmdMZXZlbC5FcnJvcnM7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9sZXZlbCA9PT0gTG9nZ2luZ0xldmVsLldhcm5pbmdzKSB7XG4gICAgICByZXR1cm4gbGV2ZWwgPT09IExvZ2dpbmdMZXZlbC5FcnJvcnMgfHwgbGV2ZWwgPT09IExvZ2dpbmdMZXZlbC5XYXJuaW5ncztcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2xldmVsID09PSBMb2dnaW5nTGV2ZWwuSW5mbykge1xuICAgICAgcmV0dXJuIGxldmVsID09PSBMb2dnaW5nTGV2ZWwuRXJyb3JzIHx8IGxldmVsID09PSBMb2dnaW5nTGV2ZWwuV2FybmluZ3MgfHwgbGV2ZWwgPT09IExvZ2dpbmdMZXZlbC5JbmZvO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBlcnJvcihtZXNzYWdlOiBhbnksIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSkge1xuICAgIHRoaXMubG9nKG1lc3NhZ2UsIExvZ2dpbmdMZXZlbC5FcnJvcnMsIG9wdGlvbmFsUGFyYW1zKTtcbiAgfVxuXG4gIHdhcm5pbmcobWVzc2FnZTogYW55LCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pIHtcbiAgICB0aGlzLmxvZyhtZXNzYWdlLCBMb2dnaW5nTGV2ZWwuV2FybmluZ3MsIG9wdGlvbmFsUGFyYW1zKTtcbiAgfVxuXG4gIGluZm8obWVzc2FnZTogYW55LCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pIHtcbiAgICB0aGlzLmxvZyhtZXNzYWdlLCBMb2dnaW5nTGV2ZWwuSW5mbywgb3B0aW9uYWxQYXJhbXMpO1xuICB9XG5cbiAgdmVyYm9zZShtZXNzYWdlOiBhbnksIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSkge1xuICAgIHRoaXMubG9nKG1lc3NhZ2UsIExvZ2dpbmdMZXZlbC5WZXJib3NlLCBvcHRpb25hbFBhcmFtcyk7XG4gIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBsb2dnZXJTZXJ2aWNlRmFjdG9yeShsb2dnZXJTZXJ2aWNlOiBMb2dnZXJTZXJ2aWNlLCBhcHBTZXR0aW5nczogQXBwU2V0dGluZ1NlcnZpY2UpIHtcbiAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICBhcHBTZXR0aW5ncy5pc1NlcnZpY2VSZWFkeS5zdWJzY3JpYmUoaXRlbSA9PiB7XG4gICAgICBpZiAoaXRlbSlcbiAgICAgICAgbG9nZ2VyU2VydmljZS5pbml0aWFsaXplKGFwcFNldHRpbmdzLmdldEFwcHNldHRpbmdWYWx1ZSgpIGFzIElBcHBTZXR0aW5nVmlld01vZGVsKTtcbiAgICB9KTtcbiAgfVxufTsiXX0=
@@ -1,71 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class TokenHelperService {
4
- constructor() { }
5
- getTokenExpirationDate(dataIdToken) {
6
- if (!dataIdToken.hasOwnProperty('exp')) {
7
- return new Date();
8
- }
9
- const date = new Date(0); // The 0 here is the key, which sets the date to the epoch
10
- date.setUTCSeconds(dataIdToken.exp);
11
- return date;
12
- }
13
- getPayloadFromToken(token, encode) {
14
- let data = {};
15
- if (typeof token !== 'undefined') {
16
- const encoded = token.split('.')[1];
17
- if (encode) {
18
- return encoded;
19
- }
20
- data = JSON.parse(this.urlBase64Decode(encoded));
21
- }
22
- return data;
23
- }
24
- getHeaderFromToken(token, encode) {
25
- let data = {};
26
- if (typeof token !== 'undefined') {
27
- const encoded = token.split('.')[0];
28
- if (encode) {
29
- return encoded;
30
- }
31
- data = JSON.parse(this.urlBase64Decode(encoded));
32
- }
33
- return data;
34
- }
35
- getSignatureFromToken(token, encode) {
36
- let data = {};
37
- if (typeof token !== 'undefined') {
38
- const encoded = token.split('.')[2];
39
- if (encode) {
40
- return encoded;
41
- }
42
- data = JSON.parse(this.urlBase64Decode(encoded));
43
- }
44
- return data;
45
- }
46
- urlBase64Decode(str) {
47
- let output = str.replace('-', '+').replace('_', '/');
48
- switch (output.length % 4) {
49
- case 0:
50
- break;
51
- case 2:
52
- output += '==';
53
- break;
54
- case 3:
55
- output += '=';
56
- break;
57
- default:
58
- throw Error('Illegal base64url string!');
59
- }
60
- return window.atob(output);
61
- }
62
- }
63
- TokenHelperService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: TokenHelperService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
64
- TokenHelperService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: TokenHelperService, providedIn: 'root' });
65
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: TokenHelperService, decorators: [{
66
- type: Injectable,
67
- args: [{
68
- providedIn: 'root'
69
- }]
70
- }], ctorParameters: function () { return []; } });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVG9rZW5IZWxwZXJTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFsY29uLW5nL3RhaWx3aW5kL3NyYy9saWIvc2VydmljZS9vcGVuLWlkL1Rva2VuSGVscGVyU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLGdCQUFnQixDQUFDO0lBRWpCLHNCQUFzQixDQUFDLFdBQWdCO1FBQ3JDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3RDLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQztTQUNuQjtRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsMERBQTBEO1FBQ3BGLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXBDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQVUsRUFBRSxNQUFlO1FBQzdDLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNkLElBQUksT0FBTyxLQUFLLEtBQUssV0FBVyxFQUFFO1lBQ2hDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEMsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsT0FBTyxPQUFPLENBQUM7YUFDaEI7WUFDRCxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDbEQ7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFVLEVBQUUsTUFBZTtRQUM1QyxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZCxJQUFJLE9BQU8sS0FBSyxLQUFLLFdBQVcsRUFBRTtZQUNoQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLElBQUksTUFBTSxFQUFFO2dCQUNWLE9BQU8sT0FBTyxDQUFDO2FBQ2hCO1lBQ0QsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQ2xEO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQscUJBQXFCLENBQUMsS0FBVSxFQUFFLE1BQWU7UUFDL0MsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2QsSUFBSSxPQUFPLEtBQUssS0FBSyxXQUFXLEVBQUU7WUFDaEMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQyxJQUFJLE1BQU0sRUFBRTtnQkFDVixPQUFPLE9BQU8sQ0FBQzthQUNoQjtZQUNELElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNsRDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGVBQWUsQ0FBQyxHQUFXO1FBQ3pCLElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDckQsUUFBUSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMzQixLQUFLLENBQUM7Z0JBQ0osTUFBTTtZQUNSLEtBQUssQ0FBQztnQkFDSixNQUFNLElBQUksSUFBSSxDQUFDO2dCQUNmLE1BQU07WUFDUixLQUFLLENBQUM7Z0JBQ0osTUFBTSxJQUFJLEdBQUcsQ0FBQztnQkFDZCxNQUFNO1lBQ1I7Z0JBQ0UsTUFBTSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztTQUMxQztRQUVELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QixDQUFDOzsrR0FyRVUsa0JBQWtCO21IQUFsQixrQkFBa0IsY0FGakIsTUFBTTsyRkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBUb2tlbkhlbHBlclNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIGdldFRva2VuRXhwaXJhdGlvbkRhdGUoZGF0YUlkVG9rZW46IGFueSk6IERhdGUge1xuICAgIGlmICghZGF0YUlkVG9rZW4uaGFzT3duUHJvcGVydHkoJ2V4cCcpKSB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoMCk7IC8vIFRoZSAwIGhlcmUgaXMgdGhlIGtleSwgd2hpY2ggc2V0cyB0aGUgZGF0ZSB0byB0aGUgZXBvY2hcbiAgICBkYXRlLnNldFVUQ1NlY29uZHMoZGF0YUlkVG9rZW4uZXhwKTtcblxuICAgIHJldHVybiBkYXRlO1xuICB9XG5cbiAgZ2V0UGF5bG9hZEZyb21Ub2tlbih0b2tlbjogYW55LCBlbmNvZGU6IGJvb2xlYW4pIHtcbiAgICBsZXQgZGF0YSA9IHt9O1xuICAgIGlmICh0eXBlb2YgdG9rZW4gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zdCBlbmNvZGVkID0gdG9rZW4uc3BsaXQoJy4nKVsxXTtcbiAgICAgIGlmIChlbmNvZGUpIHtcbiAgICAgICAgcmV0dXJuIGVuY29kZWQ7XG4gICAgICB9XG4gICAgICBkYXRhID0gSlNPTi5wYXJzZSh0aGlzLnVybEJhc2U2NERlY29kZShlbmNvZGVkKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBnZXRIZWFkZXJGcm9tVG9rZW4odG9rZW46IGFueSwgZW5jb2RlOiBib29sZWFuKSB7XG4gICAgbGV0IGRhdGEgPSB7fTtcbiAgICBpZiAodHlwZW9mIHRva2VuICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc3QgZW5jb2RlZCA9IHRva2VuLnNwbGl0KCcuJylbMF07XG4gICAgICBpZiAoZW5jb2RlKSB7XG4gICAgICAgIHJldHVybiBlbmNvZGVkO1xuICAgICAgfVxuICAgICAgZGF0YSA9IEpTT04ucGFyc2UodGhpcy51cmxCYXNlNjREZWNvZGUoZW5jb2RlZCkpO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgZ2V0U2lnbmF0dXJlRnJvbVRva2VuKHRva2VuOiBhbnksIGVuY29kZTogYm9vbGVhbikge1xuICAgIGxldCBkYXRhID0ge307XG4gICAgaWYgKHR5cGVvZiB0b2tlbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnN0IGVuY29kZWQgPSB0b2tlbi5zcGxpdCgnLicpWzJdO1xuICAgICAgaWYgKGVuY29kZSkge1xuICAgICAgICByZXR1cm4gZW5jb2RlZDtcbiAgICAgIH1cbiAgICAgIGRhdGEgPSBKU09OLnBhcnNlKHRoaXMudXJsQmFzZTY0RGVjb2RlKGVuY29kZWQpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHVybEJhc2U2NERlY29kZShzdHI6IHN0cmluZykge1xuICAgIGxldCBvdXRwdXQgPSBzdHIucmVwbGFjZSgnLScsICcrJykucmVwbGFjZSgnXycsICcvJyk7XG4gICAgc3dpdGNoIChvdXRwdXQubGVuZ3RoICUgNCkge1xuICAgIGNhc2UgMDpcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjpcbiAgICAgIG91dHB1dCArPSAnPT0nO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAzOlxuICAgICAgb3V0cHV0ICs9ICc9JztcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBFcnJvcignSWxsZWdhbCBiYXNlNjR1cmwgc3RyaW5nIScpO1xuICAgIH1cblxuICAgIHJldHVybiB3aW5kb3cuYXRvYihvdXRwdXQpO1xuICB9XG59XG4iXX0=
@@ -1,30 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "./auth.service";
4
- export class AuthGuardService {
5
- constructor(authService) {
6
- this.authService = authService;
7
- }
8
- canActivate(route, state) {
9
- return new Promise(resolve => {
10
- this.authService.isServiceReady().then(() => {
11
- if (this.authService.isLoggedIn()) {
12
- resolve(true);
13
- }
14
- else {
15
- this.authService.startAuthentication(state.url);
16
- resolve(false);
17
- }
18
- });
19
- });
20
- }
21
- }
22
- AuthGuardService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AuthGuardService, deps: [{ token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Injectable });
23
- AuthGuardService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AuthGuardService, providedIn: 'root' });
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AuthGuardService, decorators: [{
25
- type: Injectable,
26
- args: [{
27
- providedIn: 'root'
28
- }]
29
- }], ctorParameters: function () { return [{ type: i1.AuthService }]; } });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1ndWFyZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFsY29uLW5nL3RhaWx3aW5kL3NyYy9saWIvc2VydmljZS9vcGVuLWlkL2F1dGgtZ3VhcmQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFRM0MsTUFBTSxPQUFPLGdCQUFnQjtJQUUzQixZQUFvQixXQUF5QjtRQUF6QixnQkFBVyxHQUFYLFdBQVcsQ0FBYztJQUFJLENBQUM7SUFFbEQsV0FBVyxDQUFDLEtBQTZCLEVBQUUsS0FBMEI7UUFDbkUsT0FBTyxJQUFJLE9BQU8sQ0FBVSxPQUFPLENBQUMsRUFBRTtZQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQzFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsRUFBRTtvQkFDakMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNmO3FCQUFNO29CQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNoRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ2hCO1lBQ0gsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OzZHQWZVLGdCQUFnQjtpSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBDYW5BY3RpdmF0ZSwgUm91dGVyU3RhdGVTbmFwc2hvdCwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhHdWFyZFNlcnZpY2UgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZXtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF1dGhTZXJ2aWNlIDogQXV0aFNlcnZpY2UpIHsgfVxuXG4gIGNhbkFjdGl2YXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCkgOiBib29sZWFuIHwgT2JzZXJ2YWJsZTxib29sZWFuPiB8IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxib29sZWFuPihyZXNvbHZlID0+IHtcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuaXNTZXJ2aWNlUmVhZHkoKS50aGVuKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuYXV0aFNlcnZpY2UuaXNMb2dnZWRJbigpKSB7XG4gICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLnN0YXJ0QXV0aGVudGljYXRpb24oc3RhdGUudXJsKTtcbiAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,154 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { UserManager } from 'oidc-client';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../logger.service";
5
- import * as i2 from "./TokenHelperService";
6
- export class AuthService {
7
- constructor(logger, tokenHelperService) {
8
- this.logger = logger;
9
- this.tokenHelperService = tokenHelperService;
10
- this.initialized = false;
11
- this.signingOut = false;
12
- }
13
- async initialize(environment) {
14
- if (this.initialized)
15
- return;
16
- this.settings = this.getClientSettings(environment);
17
- this.userManager = new UserManager(this.settings);
18
- this.userManager.events.addUserLoaded(user => {
19
- this.user = user;
20
- });
21
- this.userManager.events.addAccessTokenExpiring(() => {
22
- this.logger.info("IdSvr token expiring " + new Date().toLocaleString());
23
- });
24
- this.userManager.events.addAccessTokenExpired(() => {
25
- this.logger.info("IdSvr token expired " + new Date().toLocaleString());
26
- this.logout(false);
27
- });
28
- this.userManager.events.addSilentRenewError(e => {
29
- this.logger.error("IdSvr silent renew error " + e.message + new Date().toLocaleString());
30
- this.logout(false);
31
- });
32
- this.userManager.events.addUserLoaded(user => {
33
- this.logger.info("IdSvr user session is ready " + new Date().toLocaleString());
34
- this.accessToken = this.tokenHelperService.getPayloadFromToken(user.access_token, false);
35
- this.user = user;
36
- });
37
- this.userManager.events.addUserUnloaded(() => {
38
- this.logger.info("IdSvr user session has ended " + new Date().toLocaleString());
39
- if (!this.signingOut) {
40
- this.startAuthentication(window.location.pathname + window.location.search);
41
- }
42
- });
43
- this.userManager.events.addUserSignedOut(() => {
44
- this.logger.info("IdSvr user signed out " + new Date().toLocaleString());
45
- this.logout(false);
46
- });
47
- this.user = await this.userManager.getUser();
48
- this.initialized = true;
49
- }
50
- isLoggedIn() {
51
- return this.user != null && !this.user.expired;
52
- }
53
- getUser() {
54
- return this.userManager.getUser();
55
- }
56
- getProfile() {
57
- return this.user.profile;
58
- }
59
- getClaims() {
60
- return this.user.profile;
61
- }
62
- getAuthorizationHeaderValue() {
63
- if (this.user != null)
64
- return `${this.user.token_type} ${this.user.access_token}`;
65
- return '';
66
- }
67
- getAccessToken() {
68
- return this.accessToken || this.tokenHelperService.getPayloadFromToken(this.user.access_token, false);
69
- ;
70
- }
71
- async startAuthentication(returnUrl) {
72
- this.logger.info("[AuthService] startAuthentication", returnUrl);
73
- await this.userManager.clearStaleState();
74
- await this.userManager.signinRedirect({ data: { returnUrl: returnUrl } }).catch(err => {
75
- //this.$log.debug("IdSvr sign in failed", err);
76
- return err;
77
- });
78
- }
79
- async completeAuthentication() {
80
- this.logger.info("[AuthService] completeAuthentication");
81
- let user = await new Promise((resolve, reject) => {
82
- this.userManager.signinRedirectCallback().then(user => {
83
- resolve(user);
84
- }).catch(error => {
85
- reject(error);
86
- });
87
- });
88
- this.user = user;
89
- return this.user;
90
- }
91
- login() {
92
- return this.userManager.signinRedirect();
93
- }
94
- renewToken() {
95
- return this.userManager.signinSilent();
96
- }
97
- logout(signoutRedirect) {
98
- if (signoutRedirect === undefined || signoutRedirect !== false) {
99
- this.signingOut = true;
100
- signoutRedirect = true;
101
- }
102
- return this.userManager.signoutRedirect();
103
- }
104
- getClientSettings(environment) {
105
- return {
106
- authority: environment?.openID?.authority,
107
- client_id: environment?.openID?.client_id,
108
- redirect_uri: environment?.openID?.redirect_uri,
109
- post_logout_redirect_uri: environment?.openID?.post_logout_redirect_uri,
110
- response_type: environment?.openID?.response_type,
111
- scope: environment?.openID?.scope,
112
- filterProtocolClaims: environment?.openID?.filterProtocolClaims,
113
- loadUserInfo: true,
114
- monitorSession: true,
115
- silent_redirect_uri: environment?.openID?.silent_redirect_uri,
116
- automaticSilentRenew: environment?.openID?.automaticSilentRenew,
117
- accessTokenExpiringNotificationTime: 20,
118
- checkSessionInterval: 2000,
119
- silentRequestTimeout: 20000,
120
- };
121
- }
122
- async isServiceReady() {
123
- return new Promise(async (resolve, reject) => {
124
- if (this.initialized) {
125
- this.logger.info("[AuthService] isServiceReady", true);
126
- resolve(true);
127
- }
128
- else {
129
- this.logger.info("[AuthService] isServiceReady", false);
130
- reject(false);
131
- }
132
- });
133
- }
134
- }
135
- AuthService.USER_LOADED_EVENT = "USER_LOADED";
136
- AuthService.USER_UNLOADED_EVENT = "USER_UNLOADED";
137
- AuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AuthService, deps: [{ token: i1.LoggerService }, { token: i2.TokenHelperService }], target: i0.ɵɵFactoryTarget.Injectable });
138
- AuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AuthService, providedIn: 'root' });
139
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: AuthService, decorators: [{
140
- type: Injectable,
141
- args: [{
142
- providedIn: 'root'
143
- }]
144
- }], ctorParameters: function () { return [{ type: i1.LoggerService }, { type: i2.TokenHelperService }]; } });
145
- export function authServiceFactory(authService, appSettings, environment) {
146
- return async () => {
147
- appSettings.isServiceReady.subscribe(item => {
148
- if (item)
149
- authService.initialize(environment);
150
- });
151
- };
152
- }
153
- ;
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFsY29uLW5nL3RhaWx3aW5kL3NyYy9saWIvc2VydmljZS9vcGVuLWlkL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBZ0IsV0FBVyxFQUFzQixNQUFNLGFBQWEsQ0FBQzs7OztBQVM1RSxNQUFNLE9BQU8sV0FBVztJQVl0QixZQUFvQixNQUFxQixFQUFVLGtCQUFzQztRQUFyRSxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQVUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQVJqRixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQU03QixlQUFVLEdBQVksS0FBSyxDQUFDO0lBSXBDLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVSxDQUFDLFdBQWlDO1FBQ2hELElBQUksSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMzQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztRQUdILElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRTtZQUNsRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFD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QUFDO0lBRUQsS0FBSyxDQUFDLGNBQWM7UUFDbEIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQzNDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsOEJBQThCLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNmO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDhCQUE4QixFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUN4RCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDZjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUE3Sk0sNkJBQWlCLEdBQUcsYUFBYSxDQUFDO0FBQ2xDLCtCQUFtQixHQUFHLGVBQWUsQ0FBQzt3R0FGbEMsV0FBVzs0R0FBWCxXQUFXLGNBRlYsTUFBTTsyRkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7QUFrS0QsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFdBQXdCLEVBQUUsV0FBOEIsRUFBRSxXQUFpQztJQUM1SCxPQUFPLEtBQUssSUFBSSxFQUFFO1FBQ2hCLFdBQVcsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzFDLElBQUksSUFBSTtnQkFDTixXQUFXLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFBO0FBQ0gsQ0FBQztBQUFBLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtQcm9maWxlLCBVc2VyLCBVc2VyTWFuYWdlciwgVXNlck1hbmFnZXJTZXR0aW5nc30gZnJvbSAnb2lkYy1jbGllbnQnO1xuaW1wb3J0IHtMb2dnZXJTZXJ2aWNlfSBmcm9tICcuLi9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge1Rva2VuSGVscGVyU2VydmljZX0gZnJvbSAnLi9Ub2tlbkhlbHBlclNlcnZpY2UnO1xuaW1wb3J0IHtFbnZpcm9ubWVudFZpZXdNb2RlbH0gZnJvbSBcIi4uLy4uL21vZGVsL2Vudmlyb25tZW50c1wiO1xuaW1wb3J0IHtBcHBTZXR0aW5nU2VydmljZX0gZnJvbSBcIi4uL2FwcHNldHRpbmcuc2VydmljZVwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZSB7XG4gIHN0YXRpYyBVU0VSX0xPQURFRF9FVkVOVCA9IFwiVVNFUl9MT0FERURcIjtcbiAgc3RhdGljIFVTRVJfVU5MT0FERURfRVZFTlQgPSBcIlVTRVJfVU5MT0FERURcIjtcblxuICBwcml2YXRlIGluaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgdXNlck1hbmFnZXIhOiBVc2VyTWFuYWdlcjtcbiAgcHJpdmF0ZSB1c2VyOiBhbnk7XG4gIHB1YmxpYyBzZXR0aW5ncyE6IFVzZXJNYW5hZ2VyU2V0dGluZ3M7XG5cbiAgcHJpdmF0ZSBhY2Nlc3NUb2tlbiE6IE9iamVjdDtcbiAgcHJpdmF0ZSBzaWduaW5nT3V0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsb2dnZXI6IExvZ2dlclNlcnZpY2UsIHByaXZhdGUgdG9rZW5IZWxwZXJTZXJ2aWNlOiBUb2tlbkhlbHBlclNlcnZpY2UpIHtcblxuICB9XG5cbiAgYXN5bmMgaW5pdGlhbGl6ZShlbnZpcm9ubWVudDogRW52aXJvbm1lbnRWaWV3TW9kZWwpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pbml0aWFsaXplZCkgcmV0dXJuO1xuICAgIHRoaXMuc2V0dGluZ3MgPSB0aGlzLmdldENsaWVudFNldHRpbmdzKGVudmlyb25tZW50KTtcbiAgICB0aGlzLnVzZXJNYW5hZ2VyID0gbmV3IFVzZXJNYW5hZ2VyKHRoaXMuc2V0dGluZ3MpO1xuICAgIHRoaXMudXNlck1hbmFnZXIuZXZlbnRzLmFkZFVzZXJMb2FkZWQodXNlciA9PiB7XG4gICAgICB0aGlzLnVzZXIgPSB1c2VyO1xuICAgIH0pO1xuXG5cbiAgICB0aGlzLnVzZXJNYW5hZ2VyLmV2ZW50cy5hZGRBY2Nlc3NUb2tlbkV4cGlyaW5nKCgpID0+IHtcbiAgICAgIHRoaXMubG9nZ2VyLmluZm8oXCJJZFN2ciB0b2tlbiBleHBpcmluZyBcIiArIG5ldyBEYXRlKCkudG9Mb2NhbGVTdHJpbmcoKSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnVzZXJNYW5hZ2VyLmV2ZW50cy5hZGRBY2Nlc3NUb2tlbkV4cGlyZWQoKCkgPT4ge1xuICAgICAgdGhpcy5sb2dnZXIuaW5mbyhcIklkU3ZyIHRva2VuIGV4cGlyZWQgXCIgKyBuZXcgRGF0ZSgpLnRvTG9jYWxlU3RyaW5nKCkpO1xuICAgICAgdGhpcy5sb2dvdXQoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgdGhpcy51c2VyTWFuYWdlci5ldmVudHMuYWRkU2lsZW50UmVuZXdFcnJvcihlID0+IHtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFwiSWRTdnIgc2lsZW50IHJlbmV3IGVycm9yIFwiICsgZS5tZXNzYWdlICsgbmV3IERhdGUoKS50b0xvY2FsZVN0cmluZygpKTtcbiAgICAgIHRoaXMubG9nb3V0KGZhbHNlKTtcbiAgICB9KTtcblxuICAgIHRoaXMudXNlck1hbmFnZXIuZXZlbnRzLmFkZFVzZXJMb2FkZWQodXNlciA9PiB7XG4gICAgICB0aGlzLmxvZ2dlci5pbmZvKFwiSWRTdnIgdXNlciBzZXNzaW9uIGlzIHJlYWR5IFwiICsgbmV3IERhdGUoKS50b0xvY2FsZVN0cmluZygpKTtcbiAgICAgIHRoaXMuYWNjZXNzVG9rZW4gPSB0aGlzLnRva2VuSGVscGVyU2VydmljZS5nZXRQYXlsb2FkRnJvbVRva2VuKHVzZXIuYWNjZXNzX3Rva2VuLCBmYWxzZSk7XG4gICAgICB0aGlzLnVzZXIgPSB1c2VyO1xuICAgIH0pO1xuXG4gICAgdGhpcy51c2VyTWFuYWdlci5ldmVudHMuYWRkVXNlclVubG9hZGVkKCgpID0+IHtcbiAgICAgIHRoaXMubG9nZ2VyLmluZm8oXCJJZFN2ciB1c2VyIHNlc3Npb24gaGFzIGVuZGVkIFwiICsgbmV3IERhdGUoKS50b0xvY2FsZVN0cmluZygpKTtcblxuICAgICAgaWYgKCF0aGlzLnNpZ25pbmdPdXQpIHtcbiAgICAgICAgdGhpcy5zdGFydEF1dGhlbnRpY2F0aW9uKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSArIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy51c2VyTWFuYWdlci5ldmVudHMuYWRkVXNlclNpZ25lZE91dCgoKSA9PiB7XG4gICAgICB0aGlzLmxvZ2dlci5pbmZvKFwiSWRTdnIgdXNlciBzaWduZWQgb3V0IFwiICsgbmV3IERhdGUoKS50b0xvY2FsZVN0cmluZygpKTtcbiAgICAgIHRoaXMubG9nb3V0KGZhbHNlKTtcbiAgICB9KTtcblxuICAgIHRoaXMudXNlciA9IGF3YWl0IHRoaXMudXNlck1hbmFnZXIuZ2V0VXNlcigpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIGlzTG9nZ2VkSW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudXNlciAhPSBudWxsICYmICF0aGlzLnVzZXIuZXhwaXJlZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVc2VyKCk6IFByb21pc2U8VXNlciB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy51c2VyTWFuYWdlci5nZXRVc2VyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UHJvZmlsZSgpOiBQcm9maWxlIHtcbiAgICByZXR1cm4gdGhpcy51c2VyLnByb2ZpbGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2xhaW1zKCk6IFByb2ZpbGUge1xuICAgIHJldHVybiB0aGlzLnVzZXIucHJvZmlsZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBdXRob3JpemF0aW9uSGVhZGVyVmFsdWUoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy51c2VyICE9IG51bGwpXG4gICAgICByZXR1cm4gYCR7dGhpcy51c2VyLnRva2VuX3R5cGV9ICR7dGhpcy51c2VyLmFjY2Vzc190b2tlbn1gO1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGdldEFjY2Vzc1Rva2VuKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuYWNjZXNzVG9rZW4gfHwgdGhpcy50b2tlbkhlbHBlclNlcnZpY2UuZ2V0UGF5bG9hZEZyb21Ub2tlbih0aGlzLnVzZXIuYWNjZXNzX3Rva2VuLCBmYWxzZSk7XG4gICAgO1xuICB9XG5cbiAgYXN5bmMgc3RhcnRBdXRoZW50aWNhdGlvbihyZXR1cm5Vcmw6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMubG9nZ2VyLmluZm8oXCJbQXV0aFNlcnZpY2VdIHN0YXJ0QXV0aGVudGljYXRpb25cIiwgcmV0dXJuVXJsKTtcbiAgICBhd2FpdCB0aGlzLnVzZXJNYW5hZ2VyLmNsZWFyU3RhbGVTdGF0ZSgpO1xuICAgIGF3YWl0IHRoaXMudXNlck1hbmFnZXIuc2lnbmluUmVkaXJlY3Qoe2RhdGE6IHtyZXR1cm5Vcmw6IHJldHVyblVybH19KS5jYXRjaChlcnIgPT4ge1xuICAgICAgLy90aGlzLiRsb2cuZGVidWcoXCJJZFN2ciBzaWduIGluIGZhaWxlZFwiLCBlcnIpO1xuICAgICAgcmV0dXJuIGVycjtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGNvbXBsZXRlQXV0aGVudGljYXRpb24oKTogUHJvbWlzZTxPaWRjLlVzZXI+IHtcbiAgICB0aGlzLmxvZ2dlci5pbmZvKFwiW0F1dGhTZXJ2aWNlXSBjb21wbGV0ZUF1dGhlbnRpY2F0aW9uXCIpO1xuICAgIGxldCB1c2VyID0gYXdhaXQgbmV3IFByb21pc2U8T2lkYy5Vc2VyPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLnVzZXJNYW5hZ2VyLnNpZ25pblJlZGlyZWN0Q2FsbGJhY2soKS50aGVuKHVzZXIgPT4ge1xuICAgICAgICByZXNvbHZlKHVzZXIpXG4gICAgICB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB0aGlzLnVzZXIgPSB1c2VyO1xuICAgIHJldHVybiB0aGlzLnVzZXI7XG4gIH1cblxuICBwdWJsaWMgbG9naW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMudXNlck1hbmFnZXIuc2lnbmluUmVkaXJlY3QoKTtcbiAgfVxuXG4gIHB1YmxpYyByZW5ld1Rva2VuKCk6IFByb21pc2U8VXNlcj4ge1xuICAgIHJldHVybiB0aGlzLnVzZXJNYW5hZ2VyLnNpZ25pblNpbGVudCgpO1xuICB9XG5cbiAgcHVibGljIGxvZ291dChzaWdub3V0UmVkaXJlY3Q/OiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG5cbiAgICBpZiAoc2lnbm91dFJlZGlyZWN0ID09PSB1bmRlZmluZWQgfHwgc2lnbm91dFJlZGlyZWN0ICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5zaWduaW5nT3V0ID0gdHJ1ZTtcbiAgICAgIHNpZ25vdXRSZWRpcmVjdCA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudXNlck1hbmFnZXIuc2lnbm91dFJlZGlyZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIGdldENsaWVudFNldHRpbmdzKGVudmlyb25tZW50OiBFbnZpcm9ubWVudFZpZXdNb2RlbCk6IFVzZXJNYW5hZ2VyU2V0dGluZ3Mge1xuICAgIHJldHVybiB7XG4gICAgICBhdXRob3JpdHk6IGVudmlyb25tZW50Py5vcGVuSUQ/LmF1dGhvcml0eSxcbiAgICAgIGNsaWVudF9pZDogZW52aXJvbm1lbnQ/Lm9wZW5JRD8uY2xpZW50X2lkLFxuICAgICAgcmVkaXJlY3RfdXJpOiBlbnZpcm9ubWVudD8ub3BlbklEPy5yZWRpcmVjdF91cmksXG4gICAgICBwb3N0X2xvZ291dF9yZWRpcmVjdF91cmk6IGVudmlyb25tZW50Py5vcGVuSUQ/LnBvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaSxcbiAgICAgIHJlc3BvbnNlX3R5cGU6IGVudmlyb25tZW50Py5vcGVuSUQ/LnJlc3BvbnNlX3R5cGUsXG4gICAgICBzY29wZTogZW52aXJvbm1lbnQ/Lm9wZW5JRD8uc2NvcGUsXG4gICAgICBmaWx0ZXJQcm90b2NvbENsYWltczogZW52aXJvbm1lbnQ/Lm9wZW5JRD8uZmlsdGVyUHJvdG9jb2xDbGFpbXMsXG4gICAgICBsb2FkVXNlckluZm86IHRydWUsXG4gICAgICBtb25pdG9yU2Vzc2lvbjogdHJ1ZSxcbiAgICAgIHNpbGVudF9yZWRpcmVjdF91cmk6IGVudmlyb25tZW50Py5vcGVuSUQ/LnNpbGVudF9yZWRpcmVjdF91cmksXG4gICAgICBhdXRvbWF0aWNTaWxlbnRSZW5ldzogZW52aXJvbm1lbnQ/Lm9wZW5JRD8uYXV0b21hdGljU2lsZW50UmVuZXcsXG4gICAgICBhY2Nlc3NUb2tlbkV4cGlyaW5nTm90aWZpY2F0aW9uVGltZTogMjAsIC8vZGVmYXVsdCA2MFxuICAgICAgY2hlY2tTZXNzaW9uSW50ZXJ2YWw6IDIwMDAsIC8vZGVmYXVsdCAyMDAwXG4gICAgICBzaWxlbnRSZXF1ZXN0VGltZW91dDogMjAwMDAsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGlzU2VydmljZVJlYWR5KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKFwiW0F1dGhTZXJ2aWNlXSBpc1NlcnZpY2VSZWFkeVwiLCB0cnVlKTtcbiAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmluZm8oXCJbQXV0aFNlcnZpY2VdIGlzU2VydmljZVJlYWR5XCIsIGZhbHNlKTtcbiAgICAgICAgcmVqZWN0KGZhbHNlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXV0aFNlcnZpY2VGYWN0b3J5KGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSwgYXBwU2V0dGluZ3M6IEFwcFNldHRpbmdTZXJ2aWNlLCBlbnZpcm9ubWVudDogRW52aXJvbm1lbnRWaWV3TW9kZWwpIHtcbiAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICBhcHBTZXR0aW5ncy5pc1NlcnZpY2VSZWFkeS5zdWJzY3JpYmUoaXRlbSA9PiB7XG4gICAgICBpZiAoaXRlbSlcbiAgICAgICAgYXV0aFNlcnZpY2UuaW5pdGlhbGl6ZShlbnZpcm9ubWVudCk7XG4gICAgfSk7XG4gIH1cbn07Il19