@osovitny/anatoly 2.1.14 → 2.14.2

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 (168) hide show
  1. package/assets/styles/alerts.less +182 -0
  2. package/assets/styles/spinner.less +64 -0
  3. package/assets/styles/toastr.less +192 -0
  4. package/{esm2015/lib/core/consts/settings.js → esm2020/lib/core/consts/settings.mjs} +2 -2
  5. package/{esm2015/lib/core/convert.js → esm2020/lib/core/convert.mjs} +2 -2
  6. package/esm2020/lib/core/core.module.mjs +72 -0
  7. package/esm2020/lib/core/go/base-go.service.mjs +41 -0
  8. package/{esm2015/lib/core/guards/once-import.guard.js → esm2020/lib/core/guards/once-import.guard.mjs} +2 -2
  9. package/{esm2015/lib/core/guid.js → esm2020/lib/core/guid.mjs} +2 -2
  10. package/esm2020/lib/core/interceptors/httpInterceptor.mjs +108 -0
  11. package/esm2020/lib/core/localization/localization.module.mjs +47 -0
  12. package/esm2020/lib/core/localization/localization.service.mjs +185 -0
  13. package/esm2020/lib/core/localization/localizationSettings.module.mjs +88 -0
  14. package/esm2020/lib/core/localization/localize.pipe.mjs +78 -0
  15. package/{esm2015/lib/core/localization/utils.js → esm2020/lib/core/localization/utils.mjs} +2 -2
  16. package/esm2020/lib/core/logging/globalErrorHandler.mjs +44 -0
  17. package/esm2020/lib/core/logging/logging.service.mjs +39 -0
  18. package/{esm2015/lib/core/notifications/alerts.js → esm2020/lib/core/notifications/alerts.mjs} +2 -2
  19. package/{esm2015/lib/core/notifications/interfaces/notification.js → esm2020/lib/core/notifications/interfaces/notification.mjs} +2 -2
  20. package/esm2020/lib/core/notifications/services/notification-service.mjs +228 -0
  21. package/esm2020/lib/core/services/appcontext.service.mjs +118 -0
  22. package/esm2020/lib/core/services/dm.service.mjs +72 -0
  23. package/esm2020/lib/core/services/google-analytics.service.mjs +54 -0
  24. package/{esm2015/lib/core/services/idle.service.js → esm2020/lib/core/services/idle.service.mjs} +10 -8
  25. package/{esm2015/lib/core/services/loading.service.js → esm2020/lib/core/services/loading.service.mjs} +10 -9
  26. package/esm2020/lib/core/services/web-storage.service.mjs +69 -0
  27. package/{esm2015/lib/core/subs.js → esm2020/lib/core/subs.mjs} +2 -2
  28. package/esm2020/lib/core/utils.mjs +82 -0
  29. package/esm2020/lib/data/base/base-api.service.mjs +89 -0
  30. package/esm2020/lib/data/base/grid/base-grid-edit.service.mjs +77 -0
  31. package/esm2020/lib/data/base/grid/base-grid-read.service.mjs +62 -0
  32. package/{esm2015/lib/data/consts.js → esm2020/lib/data/consts.mjs} +2 -2
  33. package/esm2020/lib/data/data.module.mjs +51 -0
  34. package/esm2020/lib/data/services/billing-api.service.mjs +65 -0
  35. package/esm2020/lib/data/services/emails-api.service.mjs +42 -0
  36. package/esm2020/lib/data/services/notifications/notifications-api-service.mjs +43 -0
  37. package/esm2020/lib/ui/components/base-edit.component.mjs +143 -0
  38. package/esm2020/lib/ui/components/base.component.mjs +47 -0
  39. package/esm2020/lib/ui/components/base.dialog.mjs +49 -0
  40. package/esm2020/lib/ui/components/billing/buyaccess-button.component.mjs +69 -0
  41. package/esm2020/lib/ui/components/billing/subscribe-plan-button.component.mjs +63 -0
  42. package/esm2020/lib/ui/components/billing/upgrade-plan-button.component.mjs +52 -0
  43. package/esm2020/lib/ui/components/content-header/content-header.component.mjs +37 -0
  44. package/esm2020/lib/ui/components/html-editor/base-html-editor.component.mjs +111 -0
  45. package/esm2020/lib/ui/components/html-editor/forms-html-editor.component.mjs +48 -0
  46. package/esm2020/lib/ui/components/html-editor/html-editor.component.mjs +52 -0
  47. package/{esm2015/lib/ui/components/html-editor/html-editor.defaultoptions.js → esm2020/lib/ui/components/html-editor/html-editor.defaultoptions.mjs} +2 -2
  48. package/esm2020/lib/ui/components/identity/signin-button.component.mjs +32 -0
  49. package/esm2020/lib/ui/components/identity/signout-button.component.mjs +32 -0
  50. package/esm2020/lib/ui/components/identity/signup-button.component.mjs +31 -0
  51. package/esm2020/lib/ui/components/loading/loading.component.mjs +49 -0
  52. package/esm2020/lib/ui/components/spinner/spinner.component.mjs +74 -0
  53. package/esm2020/lib/ui/directives/native-element.directive.mjs +41 -0
  54. package/esm2020/lib/ui/forms/contact-us/contact-us.mjs +120 -0
  55. package/esm2020/lib/ui/pipes/filesize.pipe.mjs +45 -0
  56. package/esm2020/lib/ui/pipes/replace-text.pipe.mjs +40 -0
  57. package/esm2020/lib/ui/pipes/safeHtml.pipe.mjs +37 -0
  58. package/esm2020/lib/ui/ui.module.mjs +167 -0
  59. package/esm2020/lib/ui/validation/form-validation-summary.component.mjs +67 -0
  60. package/esm2020/lib/ui/validation/item-validation-summary.component.mjs +40 -0
  61. package/esm2020/lib/ui/validation/validation-summary.component.mjs +128 -0
  62. package/esm2020/public-api.mjs +68 -0
  63. package/fesm2015/osovitny-anatoly.mjs +3650 -0
  64. package/fesm2015/osovitny-anatoly.mjs.map +1 -0
  65. package/fesm2020/osovitny-anatoly.mjs +3658 -0
  66. package/fesm2020/osovitny-anatoly.mjs.map +1 -0
  67. package/{osovitny-anatoly.d.ts → index.d.ts} +1 -0
  68. package/lib/core/core.module.d.ts +5 -0
  69. package/lib/core/go/base-go.service.d.ts +3 -0
  70. package/lib/core/interceptors/httpInterceptor.d.ts +3 -0
  71. package/lib/core/localization/localization.module.d.ts +6 -0
  72. package/lib/core/localization/localization.service.d.ts +3 -0
  73. package/lib/core/localization/localizationSettings.module.d.ts +5 -0
  74. package/lib/core/localization/localize.pipe.d.ts +3 -0
  75. package/lib/core/logging/globalErrorHandler.d.ts +3 -0
  76. package/lib/core/logging/logging.service.d.ts +3 -0
  77. package/lib/core/notifications/services/notification-service.d.ts +3 -0
  78. package/lib/core/services/appcontext.service.d.ts +3 -0
  79. package/lib/core/services/dm.service.d.ts +3 -0
  80. package/lib/core/services/google-analytics.service.d.ts +3 -0
  81. package/lib/core/services/idle.service.d.ts +3 -0
  82. package/lib/core/services/loading.service.d.ts +3 -0
  83. package/lib/core/services/web-storage.service.d.ts +5 -0
  84. package/lib/data/base/base-api.service.d.ts +3 -0
  85. package/lib/data/base/grid/base-grid-edit.service.d.ts +3 -0
  86. package/lib/data/base/grid/base-grid-read.service.d.ts +3 -0
  87. package/lib/data/data.module.d.ts +5 -0
  88. package/lib/data/services/billing-api.service.d.ts +3 -0
  89. package/lib/data/services/emails-api.service.d.ts +10 -0
  90. package/lib/data/services/notifications/notifications-api-service.d.ts +3 -0
  91. package/lib/ui/components/base-edit.component.d.ts +5 -2
  92. package/lib/ui/components/base.component.d.ts +4 -1
  93. package/lib/ui/components/base.dialog.d.ts +3 -0
  94. package/lib/ui/components/billing/buyaccess-button.component.d.ts +5 -2
  95. package/lib/ui/components/billing/subscribe-plan-button.component.d.ts +4 -1
  96. package/lib/ui/components/billing/upgrade-plan-button.component.d.ts +4 -1
  97. package/lib/ui/components/content-header/content-header.component.d.ts +3 -0
  98. package/lib/ui/components/html-editor/base-html-editor.component.d.ts +3 -0
  99. package/lib/ui/components/html-editor/forms-html-editor.component.d.ts +3 -0
  100. package/lib/ui/components/html-editor/html-editor.component.d.ts +3 -0
  101. package/lib/ui/components/identity/signin-button.component.d.ts +3 -0
  102. package/lib/ui/components/identity/signout-button.component.d.ts +3 -0
  103. package/lib/ui/components/identity/signup-button.component.d.ts +3 -0
  104. package/lib/ui/components/loading/loading.component.d.ts +4 -1
  105. package/lib/ui/components/spinner/spinner.component.d.ts +3 -0
  106. package/lib/ui/directives/native-element.directive.d.ts +3 -0
  107. package/lib/ui/forms/contact-us/contact-us.d.ts +33 -0
  108. package/lib/ui/pipes/filesize.pipe.d.ts +3 -0
  109. package/lib/ui/pipes/replace-text.pipe.d.ts +3 -0
  110. package/lib/ui/pipes/safeHtml.pipe.d.ts +3 -0
  111. package/lib/ui/ui.module.d.ts +26 -0
  112. package/lib/ui/validation/form-validation-summary.component.d.ts +3 -0
  113. package/lib/ui/validation/item-validation-summary.component.d.ts +3 -0
  114. package/lib/ui/validation/validation-summary.component.d.ts +3 -0
  115. package/package.json +23 -11
  116. package/public-api.d.ts +3 -2
  117. package/bundles/osovitny-anatoly.umd.js +0 -3700
  118. package/bundles/osovitny-anatoly.umd.js.map +0 -1
  119. package/esm2015/lib/core/core.module.js +0 -58
  120. package/esm2015/lib/core/go/base-go.service.js +0 -42
  121. package/esm2015/lib/core/interceptors/httpInterceptor.js +0 -109
  122. package/esm2015/lib/core/localization/localization.module.js +0 -41
  123. package/esm2015/lib/core/localization/localization.service.js +0 -187
  124. package/esm2015/lib/core/localization/localizationSettings.module.js +0 -78
  125. package/esm2015/lib/core/localization/localize.pipe.js +0 -78
  126. package/esm2015/lib/core/logging/globalErrorHandler.js +0 -44
  127. package/esm2015/lib/core/logging/logging.service.js +0 -38
  128. package/esm2015/lib/core/notifications/services/notification-service.js +0 -230
  129. package/esm2015/lib/core/services/appcontext.service.js +0 -119
  130. package/esm2015/lib/core/services/dm.service.js +0 -74
  131. package/esm2015/lib/core/services/google-analytics.service.js +0 -53
  132. package/esm2015/lib/core/services/web-storage.service.js +0 -66
  133. package/esm2015/lib/core/utils.js +0 -81
  134. package/esm2015/lib/data/base/base-api.service.js +0 -89
  135. package/esm2015/lib/data/base/grid/base-grid-edit.service.js +0 -77
  136. package/esm2015/lib/data/base/grid/base-grid-read.service.js +0 -62
  137. package/esm2015/lib/data/data.module.js +0 -43
  138. package/esm2015/lib/data/services/billing-api.service.js +0 -65
  139. package/esm2015/lib/data/services/notifications/notifications-api-service.js +0 -45
  140. package/esm2015/lib/ui/components/base-edit.component.js +0 -142
  141. package/esm2015/lib/ui/components/base.component.js +0 -43
  142. package/esm2015/lib/ui/components/base.dialog.js +0 -47
  143. package/esm2015/lib/ui/components/billing/buyaccess-button.component.js +0 -71
  144. package/esm2015/lib/ui/components/billing/subscribe-plan-button.component.js +0 -63
  145. package/esm2015/lib/ui/components/billing/upgrade-plan-button.component.js +0 -54
  146. package/esm2015/lib/ui/components/content-header/content-header.component.js +0 -37
  147. package/esm2015/lib/ui/components/html-editor/base-html-editor.component.js +0 -108
  148. package/esm2015/lib/ui/components/html-editor/forms-html-editor.component.js +0 -44
  149. package/esm2015/lib/ui/components/html-editor/html-editor.component.js +0 -51
  150. package/esm2015/lib/ui/components/identity/signin-button.component.js +0 -33
  151. package/esm2015/lib/ui/components/identity/signout-button.component.js +0 -33
  152. package/esm2015/lib/ui/components/identity/signup-button.component.js +0 -31
  153. package/esm2015/lib/ui/components/loading/loading.component.js +0 -49
  154. package/esm2015/lib/ui/components/spinner/spinner.component.js +0 -73
  155. package/esm2015/lib/ui/directives/native-element.directive.js +0 -41
  156. package/esm2015/lib/ui/pipes/filesize.pipe.js +0 -41
  157. package/esm2015/lib/ui/pipes/replace-text.pipe.js +0 -36
  158. package/esm2015/lib/ui/pipes/safeHtml.pipe.js +0 -36
  159. package/esm2015/lib/ui/ui.module.js +0 -105
  160. package/esm2015/lib/ui/validation/form-validation-summary.component.js +0 -64
  161. package/esm2015/lib/ui/validation/item-validation-summary.component.js +0 -38
  162. package/esm2015/lib/ui/validation/validation-summary.component.js +0 -126
  163. package/esm2015/public-api.js +0 -62
  164. package/fesm2015/osovitny-anatoly.js +0 -3434
  165. package/fesm2015/osovitny-anatoly.js.map +0 -1
  166. package/osovitny-anatoly.metadata.json +0 -1
  167. /package/{esm2015/lib/core/consts/urls.js → esm2020/lib/core/consts/urls.mjs} +0 -0
  168. /package/{esm2015/osovitny-anatoly.js → esm2020/osovitny-anatoly.mjs} +0 -0
@@ -1,230 +0,0 @@
1
- /*
2
- <file>
3
- Project:
4
- @osovitny/anatoly
5
-
6
- Authors:
7
- Vadim Osovitny
8
- Anatoly Osovitny
9
-
10
- Created:
11
- 2 Jun 2020
12
-
13
- Version:
14
- 1.0
15
-
16
- Copyright (c) 2016-2021 Osovitny Inc. All rights reserved.
17
- </file>
18
- */
19
- // Node
20
- import { Injectable } from '@angular/core';
21
- import { ToastrService } from 'ngx-toastr';
22
- // RxJs
23
- import { BehaviorSubject } from 'rxjs';
24
- // App
25
- import { L10nUtils } from '../../localization/utils';
26
- import { Guid } from '../../guid';
27
- import * as i0 from "@angular/core";
28
- import * as i1 from "ngx-toastr";
29
- // SignalR
30
- // import * as signalR from '@microsoft/signalr';
31
- // import { NotificationsApiService } from '../../../data/services/notifications/notifications-api-service';
32
- export class NotificationService {
33
- constructor(toastrService) {
34
- this.toastrService = toastrService;
35
- // SignalR
36
- // private hubConnection: signalR.HubConnection;
37
- // private socketUrl: string;
38
- // Notifications
39
- this._sessionNotifications = new BehaviorSubject([]);
40
- this._serverNotifications = new BehaviorSubject([]);
41
- // Public
42
- this.sessionNotifications$ = this._sessionNotifications.asObservable();
43
- this.serverNotifications$ = this._serverNotifications.asObservable();
44
- // this.onInit();
45
- }
46
- /*
47
- onInit() {
48
- if (AppCoreSettings.AzureAD) {
49
- this.authService.getAuthToken().subscribe((token: string) => {
50
- this.startSignalRConnection(token);
51
- });
52
-
53
- return;
54
- }
55
-
56
- this.startSignalRConnection();
57
- }
58
-
59
- ngOnDestroy() {
60
- this.stopSignalRConnection();
61
- }
62
-
63
- // SignalR
64
- private startSignalRConnection(accessToken?) {
65
- const cskii = AppCoreSettings.selectedClientID;
66
- // tslint:disable-next-line:variable-name
67
- const cskii_upn = AppCoreSettings.CSKII_UPN;
68
- // tslint:disable-next-line:variable-name
69
- const cli_sessionguid = AppCoreSettings.CLI_SessionGUID;
70
-
71
- const url = this.socketUrl + '?cskii=' + cskii + '&cskii_upn=' + cskii_upn + '&cli_sessionguid=' + cli_sessionguid;
72
-
73
- if (accessToken) {
74
- this.hubConnection = new signalR.HubConnectionBuilder()
75
- .withUrl(url, {
76
- skipNegotiation: false,
77
- transport: signalR.HttpTransportType.WebSockets,
78
- accessTokenFactory: () => accessToken
79
- })
80
- .withAutomaticReconnect()
81
- .configureLogging(signalR.LogLevel.Debug)
82
- .build();
83
- }
84
- else {
85
- this.hubConnection = new signalR.HubConnectionBuilder()
86
- .withUrl(this.socketUrl, {
87
- skipNegotiation: true,
88
- transport: signalR.HttpTransportType.WebSockets
89
- })
90
- .withAutomaticReconnect()
91
- .configureLogging(signalR.LogLevel.Debug)
92
- .build();
93
- }
94
-
95
- this.hubConnection
96
- .start()
97
- .then(() => this.signalRConnection_onSuccess())
98
- .catch(err => {
99
- console.error('Connection failed to SignalR Notification Hub')
100
- })
101
- }
102
-
103
- private signalRConnection_onSuccess() {
104
- this.addReceiveMessageDataListener();
105
-
106
- this.notificationsApiService.retrieveNotifications().subscribe(data => {
107
- this.serverNotifications = data;
108
- });
109
- }
110
-
111
- stopSignalRConnection() {
112
- if (this.hubConnection) {
113
- this.hubConnection.stop();
114
- this.hubConnection = null;
115
- }
116
- }
117
-
118
- private addReceiveMessageDataListener = () => {
119
- this.hubConnection.on('ReceiveMessage', (message) => {
120
- if (message) {
121
- if (message.type === 'error') {
122
- this.error(message.text, null, null, false);
123
- }
124
- else {
125
- this.success(message.text, null, null, false);
126
- }
127
-
128
- const notification = {
129
- id: message.id,
130
- isNew: message.isNew,
131
- isSession: true,
132
- text: message.text,
133
- type: message.type,
134
- createdDate: message.createdDate
135
- };
136
-
137
- this.addSessionNotificationToList(notification);
138
- }
139
- });
140
- }
141
- */
142
- addSessionNotification(text, type) {
143
- const id = Guid.newGuid();
144
- const notification = { id, isNew: true, isSession: true, text, type, createdDate: new Date(Date.now()).toISOString() };
145
- this.addSessionNotificationToList(notification);
146
- }
147
- addSessionNotificationToList(notification) {
148
- this.sessionNotifications = [
149
- notification,
150
- ...this.sessionNotifications,
151
- ];
152
- }
153
- // Public API
154
- removeNotification(id, isSession) {
155
- if (isSession) {
156
- this.sessionNotifications = this.sessionNotifications.filter(notifications => notifications.id !== id);
157
- }
158
- else {
159
- this.serverNotifications = this.serverNotifications.filter(notifications => notifications.id !== id);
160
- }
161
- }
162
- success(text, params, title, createSessionNotification = true) {
163
- text = L10nUtils.getLocalizedValue(text, params, 'OperationSuccessFull');
164
- title = L10nUtils.getLocalizedValue(title);
165
- this.toastrService.success(text, title, {
166
- timeOut: 3000,
167
- progressBar: true
168
- });
169
- if (createSessionNotification) {
170
- this.addSessionNotification(text, 'success');
171
- }
172
- }
173
- info(text, params, title) {
174
- text = L10nUtils.getLocalizedValue(text, params);
175
- title = L10nUtils.getLocalizedValue(title);
176
- this.toastrService.info(text, title, {
177
- timeOut: 3000,
178
- progressBar: true
179
- });
180
- }
181
- warning(text, params, title) {
182
- text = L10nUtils.getLocalizedValue(text, params);
183
- title = L10nUtils.getLocalizedValue(title);
184
- this.toastrService.warning(text, title, {
185
- timeOut: 3000,
186
- progressBar: true
187
- });
188
- }
189
- error(text, params, title, createSessionNotification = true) {
190
- text = L10nUtils.getLocalizedValue(text, params, 'ErrorOccured');
191
- title = L10nUtils.getLocalizedValue(title);
192
- this.toastrService.error(text, title, {
193
- timeOut: 3000,
194
- progressBar: true
195
- });
196
- if (createSessionNotification) {
197
- this.addSessionNotification(text, 'error');
198
- }
199
- }
200
- cancel(text, params, title) {
201
- text = L10nUtils.getLocalizedValue(text, params, 'OperationCancelled');
202
- title = L10nUtils.getLocalizedValue(title);
203
- this.toastrService.info(text, title, {
204
- timeOut: 3000,
205
- progressBar: true
206
- });
207
- }
208
- // SessionNotifications
209
- get sessionNotifications() {
210
- return this._sessionNotifications.getValue();
211
- }
212
- set sessionNotifications(val) {
213
- this._sessionNotifications.next(val);
214
- }
215
- // ServerNotifications
216
- get serverNotifications() {
217
- return this._serverNotifications.getValue();
218
- }
219
- set serverNotifications(val) {
220
- this._serverNotifications.next(val);
221
- }
222
- }
223
- NotificationService.ɵprov = i0.ɵɵdefineInjectable({ factory: function NotificationService_Factory() { return new NotificationService(i0.ɵɵinject(i1.ToastrService)); }, token: NotificationService, providedIn: "root" });
224
- NotificationService.decorators = [
225
- { type: Injectable, args: [{ providedIn: 'root' },] }
226
- ];
227
- NotificationService.ctorParameters = () => [
228
- { type: ToastrService }
229
- ];
230
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvY29yZS9ub3RpZmljYXRpb25zL3NlcnZpY2VzL25vdGlmaWNhdGlvbi1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQWlCRTtBQUVGLE9BQU87QUFDUCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFFekMsT0FBTztBQUNQLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFckMsTUFBTTtBQUNOLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sWUFBWSxDQUFDOzs7QUFHbEMsVUFBVTtBQUNWLGlEQUFpRDtBQUNqRCw0R0FBNEc7QUFHNUcsTUFBTSxPQUFPLG1CQUFtQjtJQWE5QixZQUFvQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQVpoRCxVQUFVO1FBQ1YsZ0RBQWdEO1FBQ2hELDZCQUE2QjtRQUU3QixnQkFBZ0I7UUFDUiwwQkFBcUIsR0FBRyxJQUFJLGVBQWUsQ0FBa0IsRUFBRSxDQUFDLENBQUM7UUFDakUseUJBQW9CLEdBQUcsSUFBSSxlQUFlLENBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBRXhFLFNBQVM7UUFDQSwwQkFBcUIsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEUseUJBQW9CLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBR3ZFLGlCQUFpQjtJQUNuQixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUFtQixDQUFDLEdBQW9CO1FBQzFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7OztZQW5ORixVQUFVLFNBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOzs7WUFkeEIsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbjxmaWxlPlxyXG4gIFByb2plY3Q6XHJcbiAgICBAb3Nvdml0bnkvYW5hdG9seVxyXG5cclxuICBBdXRob3JzOlxyXG4gICAgVmFkaW0gT3Nvdml0bnlcclxuICAgIEFuYXRvbHkgT3Nvdml0bnlcclxuXHJcbiAgQ3JlYXRlZDpcclxuICAgIDIgSnVuIDIwMjBcclxuXHJcbiAgVmVyc2lvbjpcclxuICAgIDEuMFxyXG5cclxuICBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMSBPc292aXRueSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbjwvZmlsZT5cclxuKi9cclxuXHJcbi8vIE5vZGVcclxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtUb2FzdHJTZXJ2aWNlfSBmcm9tICduZ3gtdG9hc3RyJztcclxuXHJcbi8vIFJ4SnNcclxuaW1wb3J0IHtCZWhhdmlvclN1YmplY3R9IGZyb20gJ3J4anMnO1xyXG5cclxuLy8gQXBwXHJcbmltcG9ydCB7IEwxMG5VdGlscyB9IGZyb20gJy4uLy4uL2xvY2FsaXphdGlvbi91dGlscyc7XHJcbmltcG9ydCB7IEd1aWQgfSBmcm9tICcuLi8uLi9ndWlkJztcclxuaW1wb3J0IHsgSU5vdGlmaWNhdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvbm90aWZpY2F0aW9uJztcclxuXHJcbi8vIFNpZ25hbFJcclxuLy8gaW1wb3J0ICogYXMgc2lnbmFsUiBmcm9tICdAbWljcm9zb2Z0L3NpZ25hbHInO1xyXG4vLyBpbXBvcnQgeyBOb3RpZmljYXRpb25zQXBpU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2RhdGEvc2VydmljZXMvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLWFwaS1zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxyXG5leHBvcnQgY2xhc3MgTm90aWZpY2F0aW9uU2VydmljZSB7XHJcbiAgLy8gU2lnbmFsUlxyXG4gIC8vIHByaXZhdGUgaHViQ29ubmVjdGlvbjogc2lnbmFsUi5IdWJDb25uZWN0aW9uO1xyXG4gIC8vIHByaXZhdGUgc29ja2V0VXJsOiBzdHJpbmc7XHJcblxyXG4gIC8vIE5vdGlmaWNhdGlvbnNcclxuICBwcml2YXRlIF9zZXNzaW9uTm90aWZpY2F0aW9ucyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SU5vdGlmaWNhdGlvbltdPihbXSk7XHJcbiAgcHJpdmF0ZSBfc2VydmVyTm90aWZpY2F0aW9ucyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SU5vdGlmaWNhdGlvbltdPihbXSk7XHJcblxyXG4gIC8vIFB1YmxpY1xyXG4gIHJlYWRvbmx5IHNlc3Npb25Ob3RpZmljYXRpb25zJCA9IHRoaXMuX3Nlc3Npb25Ob3RpZmljYXRpb25zLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIHJlYWRvbmx5IHNlcnZlck5vdGlmaWNhdGlvbnMkID0gdGhpcy5fc2VydmVyTm90aWZpY2F0aW9ucy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0b2FzdHJTZXJ2aWNlOiBUb2FzdHJTZXJ2aWNlKSB7XHJcbiAgICAvLyB0aGlzLm9uSW5pdCgpO1xyXG4gIH1cclxuXHJcbiAgLypcclxuICBvbkluaXQoKSB7XHJcbiAgICBpZiAoQXBwQ29yZVNldHRpbmdzLkF6dXJlQUQpIHtcclxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRoVG9rZW4oKS5zdWJzY3JpYmUoKHRva2VuOiBzdHJpbmcpID0+IHtcclxuICAgICAgICB0aGlzLnN0YXJ0U2lnbmFsUkNvbm5lY3Rpb24odG9rZW4pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN0YXJ0U2lnbmFsUkNvbm5lY3Rpb24oKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5zdG9wU2lnbmFsUkNvbm5lY3Rpb24oKTtcclxuICB9XHJcblxyXG4gIC8vIFNpZ25hbFJcclxuICBwcml2YXRlIHN0YXJ0U2lnbmFsUkNvbm5lY3Rpb24oYWNjZXNzVG9rZW4/KSB7XHJcbiAgICBjb25zdCBjc2tpaSA9IEFwcENvcmVTZXR0aW5ncy5zZWxlY3RlZENsaWVudElEO1xyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhcmlhYmxlLW5hbWVcclxuICAgIGNvbnN0IGNza2lpX3VwbiA9IEFwcENvcmVTZXR0aW5ncy5DU0tJSV9VUE47XHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxyXG4gICAgY29uc3QgY2xpX3Nlc3Npb25ndWlkID0gQXBwQ29yZVNldHRpbmdzLkNMSV9TZXNzaW9uR1VJRDtcclxuXHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLnNvY2tldFVybCArICc/Y3NraWk9JyArIGNza2lpICsgJyZjc2tpaV91cG49JyArIGNza2lpX3VwbiArICcmY2xpX3Nlc3Npb25ndWlkPScgKyBjbGlfc2Vzc2lvbmd1aWQ7XHJcblxyXG4gICAgaWYgKGFjY2Vzc1Rva2VuKSB7XHJcbiAgICAgIHRoaXMuaHViQ29ubmVjdGlvbiA9IG5ldyBzaWduYWxSLkh1YkNvbm5lY3Rpb25CdWlsZGVyKClcclxuICAgICAgICAud2l0aFVybCh1cmwsIHtcclxuICAgICAgICAgIHNraXBOZWdvdGlhdGlvbjogZmFsc2UsXHJcbiAgICAgICAgICB0cmFuc3BvcnQ6IHNpZ25hbFIuSHR0cFRyYW5zcG9ydFR5cGUuV2ViU29ja2V0cyxcclxuICAgICAgICAgIGFjY2Vzc1Rva2VuRmFjdG9yeTogKCkgPT4gYWNjZXNzVG9rZW5cclxuICAgICAgICB9KVxyXG4gICAgICAgIC53aXRoQXV0b21hdGljUmVjb25uZWN0KClcclxuICAgICAgICAuY29uZmlndXJlTG9nZ2luZyhzaWduYWxSLkxvZ0xldmVsLkRlYnVnKVxyXG4gICAgICAgIC5idWlsZCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuaHViQ29ubmVjdGlvbiA9IG5ldyBzaWduYWxSLkh1YkNvbm5lY3Rpb25CdWlsZGVyKClcclxuICAgICAgICAud2l0aFVybCh0aGlzLnNvY2tldFVybCwge1xyXG4gICAgICAgICAgc2tpcE5lZ290aWF0aW9uOiB0cnVlLFxyXG4gICAgICAgICAgdHJhbnNwb3J0OiBzaWduYWxSLkh0dHBUcmFuc3BvcnRUeXBlLldlYlNvY2tldHNcclxuICAgICAgICB9KVxyXG4gICAgICAgIC53aXRoQXV0b21hdGljUmVjb25uZWN0KClcclxuICAgICAgICAuY29uZmlndXJlTG9nZ2luZyhzaWduYWxSLkxvZ0xldmVsLkRlYnVnKVxyXG4gICAgICAgIC5idWlsZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaHViQ29ubmVjdGlvblxyXG4gICAgICAuc3RhcnQoKVxyXG4gICAgICAudGhlbigoKSA9PiB0aGlzLnNpZ25hbFJDb25uZWN0aW9uX29uU3VjY2VzcygpKVxyXG4gICAgICAuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdDb25uZWN0aW9uIGZhaWxlZCB0byBTaWduYWxSIE5vdGlmaWNhdGlvbiBIdWInKVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzaWduYWxSQ29ubmVjdGlvbl9vblN1Y2Nlc3MoKSB7XHJcbiAgICB0aGlzLmFkZFJlY2VpdmVNZXNzYWdlRGF0YUxpc3RlbmVyKCk7XHJcblxyXG4gICAgdGhpcy5ub3RpZmljYXRpb25zQXBpU2VydmljZS5yZXRyaWV2ZU5vdGlmaWNhdGlvbnMoKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMuc2VydmVyTm90aWZpY2F0aW9ucyA9IGRhdGE7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN0b3BTaWduYWxSQ29ubmVjdGlvbigpIHtcclxuICAgIGlmICh0aGlzLmh1YkNvbm5lY3Rpb24pIHtcclxuICAgICAgdGhpcy5odWJDb25uZWN0aW9uLnN0b3AoKTtcclxuICAgICAgdGhpcy5odWJDb25uZWN0aW9uID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkUmVjZWl2ZU1lc3NhZ2VEYXRhTGlzdGVuZXIgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmh1YkNvbm5lY3Rpb24ub24oJ1JlY2VpdmVNZXNzYWdlJywgKG1lc3NhZ2UpID0+IHtcclxuICAgICAgaWYgKG1lc3NhZ2UpIHtcclxuICAgICAgICBpZiAobWVzc2FnZS50eXBlID09PSAnZXJyb3InKSB7XHJcbiAgICAgICAgICB0aGlzLmVycm9yKG1lc3NhZ2UudGV4dCwgbnVsbCwgbnVsbCwgZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3VjY2VzcyhtZXNzYWdlLnRleHQsIG51bGwsIG51bGwsIGZhbHNlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbiA9IHtcclxuICAgICAgICAgIGlkOiBtZXNzYWdlLmlkLFxyXG4gICAgICAgICAgaXNOZXc6IG1lc3NhZ2UuaXNOZXcsXHJcbiAgICAgICAgICBpc1Nlc3Npb246IHRydWUsXHJcbiAgICAgICAgICB0ZXh0OiBtZXNzYWdlLnRleHQsXHJcbiAgICAgICAgICB0eXBlOiBtZXNzYWdlLnR5cGUsXHJcbiAgICAgICAgICBjcmVhdGVkRGF0ZTogbWVzc2FnZS5jcmVhdGVkRGF0ZVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuYWRkU2Vzc2lvbk5vdGlmaWNhdGlvblRvTGlzdChub3RpZmljYXRpb24pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgKi9cclxuXHJcbiAgcHJpdmF0ZSBhZGRTZXNzaW9uTm90aWZpY2F0aW9uKHRleHQ6IHN0cmluZywgdHlwZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBpZCA9IEd1aWQubmV3R3VpZCgpO1xyXG4gICAgY29uc3Qgbm90aWZpY2F0aW9uID0geyBpZCwgaXNOZXc6IHRydWUsIGlzU2Vzc2lvbjogdHJ1ZSwgdGV4dCwgdHlwZSwgY3JlYXRlZERhdGU6IG5ldyBEYXRlKERhdGUubm93KCkpLnRvSVNPU3RyaW5nKCkgfTtcclxuXHJcbiAgICB0aGlzLmFkZFNlc3Npb25Ob3RpZmljYXRpb25Ub0xpc3Qobm90aWZpY2F0aW9uKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkU2Vzc2lvbk5vdGlmaWNhdGlvblRvTGlzdChub3RpZmljYXRpb246IElOb3RpZmljYXRpb24pIHtcclxuICAgIHRoaXMuc2Vzc2lvbk5vdGlmaWNhdGlvbnMgPSBbXHJcbiAgICAgIG5vdGlmaWNhdGlvbixcclxuICAgICAgLi4udGhpcy5zZXNzaW9uTm90aWZpY2F0aW9ucyxcclxuICAgIF07XHJcbiAgfVxyXG5cclxuICAvLyBQdWJsaWMgQVBJXHJcbiAgcmVtb3ZlTm90aWZpY2F0aW9uKGlkOiBzdHJpbmcsIGlzU2Vzc2lvbjogYm9vbGVhbikge1xyXG4gICAgaWYgKGlzU2Vzc2lvbikge1xyXG4gICAgICB0aGlzLnNlc3Npb25Ob3RpZmljYXRpb25zID0gdGhpcy5zZXNzaW9uTm90aWZpY2F0aW9ucy5maWx0ZXIobm90aWZpY2F0aW9ucyA9PiBub3RpZmljYXRpb25zLmlkICE9PSBpZCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zZXJ2ZXJOb3RpZmljYXRpb25zID0gdGhpcy5zZXJ2ZXJOb3RpZmljYXRpb25zLmZpbHRlcihub3RpZmljYXRpb25zID0+IG5vdGlmaWNhdGlvbnMuaWQgIT09IGlkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN1Y2Nlc3ModGV4dD8sIHBhcmFtcz86IGFueVtdLCB0aXRsZT8sIGNyZWF0ZVNlc3Npb25Ob3RpZmljYXRpb246IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICB0ZXh0ID0gTDEwblV0aWxzLmdldExvY2FsaXplZFZhbHVlKHRleHQsIHBhcmFtcywgJ09wZXJhdGlvblN1Y2Nlc3NGdWxsJyk7XHJcbiAgICB0aXRsZSA9IEwxMG5VdGlscy5nZXRMb2NhbGl6ZWRWYWx1ZSh0aXRsZSk7XHJcblxyXG4gICAgdGhpcy50b2FzdHJTZXJ2aWNlLnN1Y2Nlc3ModGV4dCwgdGl0bGUsIHtcclxuICAgICAgdGltZU91dDogMzAwMCxcclxuICAgICAgcHJvZ3Jlc3NCYXI6IHRydWVcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChjcmVhdGVTZXNzaW9uTm90aWZpY2F0aW9uKSB7XHJcbiAgICAgIHRoaXMuYWRkU2Vzc2lvbk5vdGlmaWNhdGlvbih0ZXh0LCAnc3VjY2VzcycpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5mbyh0ZXh0LCBwYXJhbXM/OiBhbnlbXSwgdGl0bGU/KSB7XHJcbiAgICB0ZXh0ID0gTDEwblV0aWxzLmdldExvY2FsaXplZFZhbHVlKHRleHQsIHBhcmFtcyk7XHJcbiAgICB0aXRsZSA9IEwxMG5VdGlscy5nZXRMb2NhbGl6ZWRWYWx1ZSh0aXRsZSk7XHJcblxyXG4gICAgdGhpcy50b2FzdHJTZXJ2aWNlLmluZm8odGV4dCwgdGl0bGUsIHtcclxuICAgICAgdGltZU91dDogMzAwMCxcclxuICAgICAgcHJvZ3Jlc3NCYXI6IHRydWVcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgd2FybmluZyh0ZXh0LCBwYXJhbXM/OiBhbnlbXSwgdGl0bGU/KSB7XHJcbiAgICB0ZXh0ID0gTDEwblV0aWxzLmdldExvY2FsaXplZFZhbHVlKHRleHQsIHBhcmFtcyk7XHJcbiAgICB0aXRsZSA9IEwxMG5VdGlscy5nZXRMb2NhbGl6ZWRWYWx1ZSh0aXRsZSk7XHJcblxyXG4gICAgdGhpcy50b2FzdHJTZXJ2aWNlLndhcm5pbmcodGV4dCwgdGl0bGUsIHtcclxuICAgICAgdGltZU91dDogMzAwMCxcclxuICAgICAgcHJvZ3Jlc3NCYXI6IHRydWVcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZXJyb3IodGV4dD8sIHBhcmFtcz86IGFueVtdLCB0aXRsZT8sIGNyZWF0ZVNlc3Npb25Ob3RpZmljYXRpb246IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICB0ZXh0ID0gTDEwblV0aWxzLmdldExvY2FsaXplZFZhbHVlKHRleHQsIHBhcmFtcywgJ0Vycm9yT2NjdXJlZCcpO1xyXG4gICAgdGl0bGUgPSBMMTBuVXRpbHMuZ2V0TG9jYWxpemVkVmFsdWUodGl0bGUpO1xyXG5cclxuICAgIHRoaXMudG9hc3RyU2VydmljZS5lcnJvcih0ZXh0LCB0aXRsZSwge1xyXG4gICAgICB0aW1lT3V0OiAzMDAwLFxyXG4gICAgICBwcm9ncmVzc0JhcjogdHJ1ZVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKGNyZWF0ZVNlc3Npb25Ob3RpZmljYXRpb24pIHtcclxuICAgICAgdGhpcy5hZGRTZXNzaW9uTm90aWZpY2F0aW9uKHRleHQsICdlcnJvcicpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FuY2VsKHRleHQ/LCBwYXJhbXM/OiBhbnlbXSwgdGl0bGU/KSB7XHJcbiAgICB0ZXh0ID0gTDEwblV0aWxzLmdldExvY2FsaXplZFZhbHVlKHRleHQsIHBhcmFtcywgJ09wZXJhdGlvbkNhbmNlbGxlZCcpO1xyXG4gICAgdGl0bGUgPSBMMTBuVXRpbHMuZ2V0TG9jYWxpemVkVmFsdWUodGl0bGUpO1xyXG5cclxuICAgIHRoaXMudG9hc3RyU2VydmljZS5pbmZvKHRleHQsIHRpdGxlLCB7XHJcbiAgICAgIHRpbWVPdXQ6IDMwMDAsXHJcbiAgICAgIHByb2dyZXNzQmFyOiB0cnVlXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIFNlc3Npb25Ob3RpZmljYXRpb25zXHJcbiAgZ2V0IHNlc3Npb25Ob3RpZmljYXRpb25zKCk6IElOb3RpZmljYXRpb25bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbk5vdGlmaWNhdGlvbnMuZ2V0VmFsdWUoKTtcclxuICB9XHJcbiAgc2V0IHNlc3Npb25Ob3RpZmljYXRpb25zKHZhbDogSU5vdGlmaWNhdGlvbltdKSB7XHJcbiAgICB0aGlzLl9zZXNzaW9uTm90aWZpY2F0aW9ucy5uZXh0KHZhbCk7XHJcbiAgfVxyXG5cclxuICAvLyBTZXJ2ZXJOb3RpZmljYXRpb25zXHJcbiAgZ2V0IHNlcnZlck5vdGlmaWNhdGlvbnMoKTogSU5vdGlmaWNhdGlvbltdIHtcclxuICAgIHJldHVybiB0aGlzLl9zZXJ2ZXJOb3RpZmljYXRpb25zLmdldFZhbHVlKCk7XHJcbiAgfVxyXG4gIHNldCBzZXJ2ZXJOb3RpZmljYXRpb25zKHZhbDogSU5vdGlmaWNhdGlvbltdKSB7XHJcbiAgICB0aGlzLl9zZXJ2ZXJOb3RpZmljYXRpb25zLm5leHQodmFsKTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,119 +0,0 @@
1
- /*
2
- <file>
3
- Project:
4
- @osovitny/anatoly
5
-
6
- Authors:
7
- Vadim Osovitny
8
- Anatoly Osovitny
9
-
10
- Created:
11
- 13 Nov 2017
12
-
13
- Copyright (c) 2016-2021 Osovitny Inc. All rights reserved.
14
- </file>
15
- */
16
- // Node
17
- import { Injectable } from '@angular/core';
18
- import { HttpClient } from '@angular/common/http';
19
- // App
20
- import { ContextInitState } from '../consts/settings';
21
- import { BaseApiService } from '../../data/base/base-api.service';
22
- import { SessionStorageService } from './web-storage.service';
23
- export class AppContextService extends BaseApiService {
24
- constructor(http, sessionStorage) {
25
- super(http);
26
- this.http = http;
27
- this.sessionStorage = sessionStorage;
28
- //Consts
29
- this.storageKeyName = 'appContext';
30
- this.subscription = null;
31
- this.successes = [];
32
- this.baseUrl = '/api/appContext';
33
- }
34
- //Session
35
- getCurrentFromSession() {
36
- return this.sessionStorage.getObject(this.storageKeyName);
37
- }
38
- setCurrentFromSession(value) {
39
- this.sessionStorage.setObject(this.storageKeyName, value);
40
- }
41
- updateCurrentIfExpired() {
42
- let context = this.getCurrentFromSession();
43
- if (!context) {
44
- return;
45
- }
46
- let lu = context.lastRequested;
47
- if (lu) {
48
- let now = new Date();
49
- let lastRequested = new Date(context.lastRequested);
50
- let in2Mins = new Date(lastRequested.getFullYear(), lastRequested.getMonth(), lastRequested.getDate(), lastRequested.getHours(), lastRequested.getMinutes() + 2, 0, 0);
51
- if (in2Mins.getTime() < now.getTime()) {
52
- this.updateCurrent();
53
- }
54
- }
55
- }
56
- dataReceived(data) {
57
- this.current = data;
58
- for (let i = 0; i < this.successes.length; i++) {
59
- let success = this.successes[i];
60
- if (success) {
61
- success(data);
62
- }
63
- }
64
- this.successes = [];
65
- this.subscription.unsubscribe();
66
- this.subscription = null;
67
- }
68
- //Public
69
- getCurrent(success = null, getCachedIfExist = true) {
70
- let context = this.getCurrentFromSession();
71
- if (getCachedIfExist && context != null) {
72
- if (success) {
73
- success(context);
74
- }
75
- return;
76
- }
77
- if (success) {
78
- this.successes.push(success);
79
- }
80
- if (this.subscription != null) {
81
- return;
82
- }
83
- let now = new Date();
84
- console.log('Requesting a new AppContext at ' + now);
85
- this.subscription = this.get('getCurrentContext', null).subscribe((data) => {
86
- this.dataReceived(data);
87
- }, (e) => {
88
- });
89
- }
90
- updateCurrent(success = null) {
91
- this.getCurrent(success, false);
92
- }
93
- clearCurrent() {
94
- this.sessionStorage.remove(this.storageKeyName);
95
- }
96
- isUserSignedIn() {
97
- return ContextInitState.isUserSignedIn;
98
- }
99
- isUserAdmin() {
100
- return ContextInitState.isUserAdmin;
101
- }
102
- //Properties
103
- //current
104
- get current() {
105
- this.updateCurrentIfExpired();
106
- return this.getCurrentFromSession();
107
- }
108
- set current(value) {
109
- this.setCurrentFromSession(value);
110
- }
111
- }
112
- AppContextService.decorators = [
113
- { type: Injectable }
114
- ];
115
- AppContextService.ctorParameters = () => [
116
- { type: HttpClient },
117
- { type: SessionStorageService }
118
- ];
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwY29udGV4dC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5hdG9seS9zcmMvbGliL2NvcmUvc2VydmljZXMvYXBwY29udGV4dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTztBQUNQLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR2xELE1BQU07QUFDTixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFHN0QsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGNBQWM7SUFPbkQsWUFDWSxJQUFnQixFQUNoQixjQUFxQztRQUMvQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFGRixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQVJqRCxRQUFRO1FBQ0EsbUJBQWMsR0FBRyxZQUFZLENBQUM7UUFFOUIsaUJBQVksR0FBaUIsSUFBSSxDQUFDO1FBQ2xDLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFNckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQztJQUNuQyxDQUFDO0lBRUQsU0FBUztJQUNELHFCQUFxQjtRQUMzQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRU8scUJBQXFCLENBQUMsS0FBVTtRQUN0QyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEtB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RCxDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sZ0JBQWdCLENBQUMsY0FBYyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUM7SUFDdEMsQ0FBQztJQUVELFlBQVk7SUFDWixTQUFTO0lBQ1QsSUFBVyxPQUFPO1FBQ2hCLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUNELElBQVcsT0FBTyxDQUFDLEtBQVU7UUFDM0IsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7OztZQXBIRixVQUFVOzs7WUFSRixVQUFVO1lBTVYscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuPGZpbGU+XHJcbiAgUHJvamVjdDpcclxuICAgIEBvc292aXRueS9hbmF0b2x5XHJcblxyXG4gIEF1dGhvcnM6XHJcbiAgICBWYWRpbSBPc292aXRueVxyXG4gICAgQW5hdG9seSBPc292aXRueVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgMTMgTm92IDIwMTdcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjEgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG4vLyBOb2RlXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcblxyXG4vLyBBcHBcclxuaW1wb3J0IHsgQ29udGV4dEluaXRTdGF0ZSB9IGZyb20gJy4uL2NvbnN0cy9zZXR0aW5ncyc7XHJcbmltcG9ydCB7IEJhc2VBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZGF0YS9iYXNlL2Jhc2UtYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL3dlYi1zdG9yYWdlLnNlcnZpY2UnXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBcHBDb250ZXh0U2VydmljZSBleHRlbmRzIEJhc2VBcGlTZXJ2aWNlIHtcclxuICAvL0NvbnN0c1xyXG4gIHByaXZhdGUgc3RvcmFnZUtleU5hbWUgPSAnYXBwQ29udGV4dCc7XHJcblxyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBudWxsO1xyXG4gIHByaXZhdGUgc3VjY2Vzc2VzID0gW107ICBcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCwgXHJcbiAgICBwcm90ZWN0ZWQgc2Vzc2lvblN0b3JhZ2U6IFNlc3Npb25TdG9yYWdlU2VydmljZSkge1xyXG4gICAgc3VwZXIoaHR0cCk7XHJcbiAgICB0aGlzLmJhc2VVcmwgPSAnL2FwaS9hcHBDb250ZXh0JztcclxuICB9XHJcblxyXG4gIC8vU2Vzc2lvblxyXG4gIHByaXZhdGUgZ2V0Q3VycmVudEZyb21TZXNzaW9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvblN0b3JhZ2UuZ2V0T2JqZWN0KHRoaXMuc3RvcmFnZUtleU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRDdXJyZW50RnJvbVNlc3Npb24odmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5zZXNzaW9uU3RvcmFnZS5zZXRPYmplY3QodGhpcy5zdG9yYWdlS2V5TmFtZSwgdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVDdXJyZW50SWZFeHBpcmVkKCkge1xyXG4gICAgbGV0IGNvbnRleHQgPSB0aGlzLmdldEN1cnJlbnRGcm9tU2Vzc2lvbigpO1xyXG5cclxuICAgIGlmICghY29udGV4dCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGx1ID0gY29udGV4dC5sYXN0UmVxdWVzdGVkO1xyXG5cclxuICAgIGlmIChsdSkge1xyXG4gICAgICBsZXQgbm93ID0gbmV3IERhdGUoKTtcclxuICAgICAgbGV0IGxhc3RSZXF1ZXN0ZWQgPSBuZXcgRGF0ZShjb250ZXh0Lmxhc3RSZXF1ZXN0ZWQpO1xyXG4gICAgICBsZXQgaW4yTWlucyA9IG5ldyBEYXRlKGxhc3RSZXF1ZXN0ZWQuZ2V0RnVsbFllYXIoKSwgbGFzdFJlcXVlc3RlZC5nZXRNb250aCgpLCBsYXN0UmVxdWVzdGVkLmdldERhdGUoKSxcclxuICAgICAgICBsYXN0UmVxdWVzdGVkLmdldEhvdXJzKCksIGxhc3RSZXF1ZXN0ZWQuZ2V0TWludXRlcygpICsgMiwgMCwgMCk7XHJcblxyXG4gICAgICBpZiAoaW4yTWlucy5nZXRUaW1lKCkgPCBub3cuZ2V0VGltZSgpKSB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVDdXJyZW50KCk7XHJcbiAgICAgIH1cclxuICAgIH0gICAgXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRhdGFSZWNlaXZlZChkYXRhKSB7XHJcbiAgICB0aGlzLmN1cnJlbnQgPSBkYXRhO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdWNjZXNzZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHN1Y2Nlc3MgPSB0aGlzLnN1Y2Nlc3Nlc1tpXTtcclxuICAgICAgaWYgKHN1Y2Nlc3MpIHtcclxuICAgICAgICBzdWNjZXNzKGRhdGEpO1xyXG4gICAgICB9ICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zdWNjZXNzZXMgPSBbXTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IG51bGw7XHJcbiAgfVxyXG5cclxuICAvL1B1YmxpY1xyXG4gIGdldEN1cnJlbnQoc3VjY2VzczogRnVuY3Rpb24gPSBudWxsLCBnZXRDYWNoZWRJZkV4aXN0OiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgbGV0IGNvbnRleHQgPSB0aGlzLmdldEN1cnJlbnRGcm9tU2Vzc2lvbigpO1xyXG5cclxuICAgIGlmIChnZXRDYWNoZWRJZkV4aXN0ICYmIGNvbnRleHQgIT0gbnVsbCkgeyAgICBcclxuICAgICAgaWYgKHN1Y2Nlc3MpIHtcclxuICAgICAgICBzdWNjZXNzKGNvbnRleHQpO1xyXG4gICAgICB9IFxyXG5cclxuICAgICAgcmV0dXJuOyAgICAgIFxyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdWNjZXNzKSB7XHJcbiAgICAgIHRoaXMuc3VjY2Vzc2VzLnB1c2goc3VjY2Vzcyk7XHJcbiAgICB9ICAgIFxyXG5cclxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbiAhPSBudWxsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgbm93ID0gbmV3IERhdGUoKTtcclxuICAgIGNvbnNvbGUubG9nKCdSZXF1ZXN0aW5nIGEgbmV3IEFwcENvbnRleHQgYXQgJyArIG5vdyk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmdldCgnZ2V0Q3VycmVudENvbnRleHQnLCBudWxsKS5zdWJzY3JpYmUoXHJcbiAgICAgIChkYXRhKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhUmVjZWl2ZWQoZGF0YSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlKSA9PiB7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVDdXJyZW50KHN1Y2Nlc3M6IEZ1bmN0aW9uID0gbnVsbCkge1xyXG4gICAgdGhpcy5nZXRDdXJyZW50KHN1Y2Nlc3MsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGNsZWFyQ3VycmVudCgpIHtcclxuICAgIHRoaXMuc2Vzc2lvblN0b3JhZ2UucmVtb3ZlKHRoaXMuc3RvcmFnZUtleU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgaXNVc2VyU2lnbmVkSW4oKSB7XHJcbiAgICByZXR1cm4gQ29udGV4dEluaXRTdGF0ZS5pc1VzZXJTaWduZWRJbjtcclxuICB9XHJcblxyXG4gIGlzVXNlckFkbWluKCkge1xyXG4gICAgcmV0dXJuIENvbnRleHRJbml0U3RhdGUuaXNVc2VyQWRtaW47XHJcbiAgfVxyXG5cclxuICAvL1Byb3BlcnRpZXNcclxuICAvL2N1cnJlbnRcclxuICBwdWJsaWMgZ2V0IGN1cnJlbnQoKSB7XHJcbiAgICB0aGlzLnVwZGF0ZUN1cnJlbnRJZkV4cGlyZWQoKTtcclxuICAgIHJldHVybiB0aGlzLmdldEN1cnJlbnRGcm9tU2Vzc2lvbigpO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGN1cnJlbnQodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5zZXRDdXJyZW50RnJvbVNlc3Npb24odmFsdWUpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,74 +0,0 @@
1
- /*
2
- <file>
3
- Project:
4
- @osovitny/anatoly
5
-
6
- Authors:
7
- Vadim Osovitny
8
- Anatoly Osovitny
9
-
10
- Created:
11
- 29 Щсе 2020
12
-
13
- Version:
14
- 1.0
15
-
16
- Copyright (c) 2016-2021 Osovitny Inc. All rights reserved.
17
- </file>
18
- */
19
- // Node
20
- import { Injectable, Inject } from '@angular/core';
21
- import { DOCUMENT } from '@angular/common';
22
- import { Title, Meta } from '@angular/platform-browser';
23
- import * as i0 from "@angular/core";
24
- import * as i1 from "@angular/platform-browser";
25
- import * as i2 from "@angular/common";
26
- export class DigitalMarketingService {
27
- constructor(title, meta, dom) {
28
- this.title = title;
29
- this.meta = meta;
30
- this.dom = dom;
31
- }
32
- updateTitle(title) {
33
- this.title.setTitle(title);
34
- }
35
- updateDescription(desc) {
36
- this.meta.updateTag({ name: 'description', content: desc });
37
- }
38
- updateKeywords(keywords) {
39
- this.meta.updateTag({ name: 'keywords', content: keywords });
40
- }
41
- updateMetaTags(meta) {
42
- meta.forEach(m => this.meta.updateTag(m));
43
- }
44
- setCanonicalUrl(url) {
45
- const canUrl = url === undefined ? this.dom.URL : url;
46
- const link = this.dom.createElement('link');
47
- link.setAttribute('rel', 'canonical');
48
- this.dom.head.appendChild(link);
49
- link.setAttribute('href', canUrl);
50
- }
51
- updateCanonicalUrl(url) {
52
- const canUrl = url === undefined ? this.dom.URL : url;
53
- const head = this.dom.getElementsByTagName('head')[0];
54
- let link = this.dom.querySelector(`link[rel='canonical']`) || null;
55
- if (link == null) {
56
- link = this.dom.createElement('link');
57
- head.appendChild(link);
58
- }
59
- link.setAttribute('rel', 'canonical');
60
- link.setAttribute('href', canUrl);
61
- }
62
- }
63
- DigitalMarketingService.ɵprov = i0.ɵɵdefineInjectable({ factory: function DigitalMarketingService_Factory() { return new DigitalMarketingService(i0.ɵɵinject(i1.Title), i0.ɵɵinject(i1.Meta), i0.ɵɵinject(i2.DOCUMENT)); }, token: DigitalMarketingService, providedIn: "root" });
64
- DigitalMarketingService.decorators = [
65
- { type: Injectable, args: [{
66
- providedIn: 'root'
67
- },] }
68
- ];
69
- DigitalMarketingService.ctorParameters = () => [
70
- { type: Title },
71
- { type: Meta },
72
- { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }
73
- ];
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG0uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuYXRvbHkvc3JjL2xpYi9jb3JlL3NlcnZpY2VzL2RtLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBaUJFO0FBRUYsT0FBTztBQUNQLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBa0IsTUFBTSwyQkFBMkIsQ0FBQzs7OztBQUt4RSxNQUFNLE9BQU8sdUJBQXVCO0lBQ2xDLFlBQ1UsS0FBWSxFQUNaLElBQVUsRUFDUSxHQUFRO1FBRjFCLFVBQUssR0FBTCxLQUFLLENBQU87UUFDWixTQUFJLEdBQUosSUFBSSxDQUFNO1FBQ1EsUUFBRyxHQUFILEdBQUcsQ0FBSztJQUVwQyxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWM7UUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELGlCQUFpQixDQUFDLElBQWE7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxjQUFjLENBQUMsUUFBYztRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFzQjtRQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsZUFBZSxDQUFDLEdBQVk7UUFDMUIsTUFBTSxNQUFNLEdBQUcsR0FBRyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUN0RCxNQUFNLElBQUksR0FBb0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxHQUFZO1FBQzdCLE1BQU0sTUFBTSxHQUFHLEdBQUcsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDdEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RCxJQUFJLElBQUksR0FBb0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsSUFBSSxJQUFJLENBQUM7UUFFcEYsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFO1lBQ2hCLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQW9CLENBQUM7WUFDekQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4QjtRQUVELElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7Ozs7WUEvQ0YsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFKUSxLQUFLO1lBQUUsSUFBSTs0Q0FTZixNQUFNLFNBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbjxmaWxlPlxyXG4gIFByb2plY3Q6XHJcbiAgICBAb3Nvdml0bnkvYW5hdG9seVxyXG5cclxuICBBdXRob3JzOlxyXG4gICAgVmFkaW0gT3Nvdml0bnlcclxuICAgIEFuYXRvbHkgT3Nvdml0bnlcclxuXHJcbiAgQ3JlYXRlZDpcclxuICAgIDI5INCp0YHQtSAyMDIwXHJcblxyXG4gIFZlcnNpb246XHJcbiAgICAxLjBcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjEgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG4vLyBOb2RlXHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFRpdGxlLCBNZXRhLCBNZXRhRGVmaW5pdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRGlnaXRhbE1hcmtldGluZ1NlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB0aXRsZTogVGl0bGUsXHJcbiAgICBwcml2YXRlIG1ldGE6IE1ldGEsXHJcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvbTogYW55LFxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlVGl0bGUodGl0bGU/OiBzdHJpbmcpIHtcclxuICAgIHRoaXMudGl0bGUuc2V0VGl0bGUodGl0bGUpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRGVzY3JpcHRpb24oZGVzYz86IHN0cmluZykge1xyXG4gICAgdGhpcy5tZXRhLnVwZGF0ZVRhZyh7IG5hbWU6ICdkZXNjcmlwdGlvbicsIGNvbnRlbnQ6IGRlc2MgfSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVLZXl3b3JkcyhrZXl3b3Jkcz86IGFueSkge1xyXG4gICAgdGhpcy5tZXRhLnVwZGF0ZVRhZyh7IG5hbWU6ICdrZXl3b3JkcycsIGNvbnRlbnQ6IGtleXdvcmRzIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlTWV0YVRhZ3MobWV0YTogTWV0YURlZmluaXRpb25bXSkge1xyXG4gICAgbWV0YS5mb3JFYWNoKG0gPT4gdGhpcy5tZXRhLnVwZGF0ZVRhZyhtKSk7XHJcbiAgfVxyXG5cclxuICBzZXRDYW5vbmljYWxVcmwodXJsPzogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBjYW5VcmwgPSB1cmwgPT09IHVuZGVmaW5lZCA/IHRoaXMuZG9tLlVSTCA6IHVybDtcclxuICAgIGNvbnN0IGxpbms6IEhUTUxMaW5rRWxlbWVudCA9IHRoaXMuZG9tLmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTtcclxuICAgIGxpbmsuc2V0QXR0cmlidXRlKCdyZWwnLCAnY2Fub25pY2FsJyk7XHJcbiAgICB0aGlzLmRvbS5oZWFkLmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgbGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBjYW5VcmwpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlQ2Fub25pY2FsVXJsKHVybD86IHN0cmluZykge1xyXG4gICAgY29uc3QgY2FuVXJsID0gdXJsID09PSB1bmRlZmluZWQgPyB0aGlzLmRvbS5VUkwgOiB1cmw7XHJcbiAgICBjb25zdCBoZWFkID0gdGhpcy5kb20uZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcclxuICAgIGxldCBsaW5rOiBIVE1MTGlua0VsZW1lbnQgPSB0aGlzLmRvbS5xdWVyeVNlbGVjdG9yKGBsaW5rW3JlbD0nY2Fub25pY2FsJ11gKSB8fCBudWxsO1xyXG5cclxuICAgIGlmIChsaW5rID09IG51bGwpIHtcclxuICAgICAgbGluayA9IHRoaXMuZG9tLmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKSBhcyBIVE1MTGlua0VsZW1lbnQ7XHJcbiAgICAgIGhlYWQuYXBwZW5kQ2hpbGQobGluayk7XHJcbiAgICB9XHJcblxyXG4gICAgbGluay5zZXRBdHRyaWJ1dGUoJ3JlbCcsICdjYW5vbmljYWwnKTtcclxuICAgIGxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgY2FuVXJsKTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,53 +0,0 @@
1
- /*
2
- <file>
3
- Project:
4
- @osovitny/anatoly
5
-
6
- Authors:
7
- Vadim Osovitny
8
- Anatoly Osovitny
9
-
10
- Created:
11
- 29 Nov 2020
12
-
13
- Version:
14
- 1.0
15
-
16
- Copyright (c) 2016-2021 Osovitny Inc. All rights reserved.
17
- </file>
18
- */
19
- // Node
20
- import { Injectable } from '@angular/core';
21
- import { Router, NavigationEnd } from '@angular/router';
22
- export class GoogleAnalyticsService {
23
- constructor(router) {
24
- this.router = router;
25
- /*
26
- https://yashints.dev/blog/2019/02/12/angular-ga-tagmanager
27
- https://developers.google.com/analytics/devguides/collection/gtagjs/pages
28
- https://developers.google.com/analytics/devguides/collection/upgrade/analyticsjs
29
- */
30
- }
31
- subscribe() {
32
- this.subscription = this.router.events.subscribe(event => {
33
- if (event instanceof NavigationEnd) {
34
- if (window.ga) {
35
- window.ga('set', 'page', event.urlAfterRedirects);
36
- window.ga('send', 'pageview');
37
- }
38
- }
39
- });
40
- }
41
- unsubscribe() {
42
- if (this.subscription) {
43
- this.subscription.unsubscribe();
44
- }
45
- }
46
- }
47
- GoogleAnalyticsService.decorators = [
48
- { type: Injectable }
49
- ];
50
- GoogleAnalyticsService.ctorParameters = () => [
51
- { type: Router }
52
- ];
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLWFuYWx5dGljcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5hdG9seS9zcmMvbGliL2NvcmUvc2VydmljZXMvZ29vZ2xlLWFuYWx5dGljcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztFQWlCRTtBQUVGLE9BQU87QUFDUCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHeEQsTUFBTSxPQUFPLHNCQUFzQjtJQUdqQyxZQUFvQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNoQzs7OztVQUlFO0lBQ0osQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN2RCxJQUFJLEtBQUssWUFBWSxhQUFhLEVBQUU7Z0JBQ2xDLElBQVUsTUFBTyxDQUFDLEVBQUUsRUFBRTtvQkFDZCxNQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7b0JBQ25ELE1BQU8sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO2lCQUN0QzthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNqQztJQUNILENBQUM7OztZQTNCRixVQUFVOzs7WUFGRixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuPGZpbGU+XHJcbiAgUHJvamVjdDpcclxuICAgIEBvc292aXRueS9hbmF0b2x5XHJcblxyXG4gIEF1dGhvcnM6XHJcbiAgICBWYWRpbSBPc292aXRueVxyXG4gICAgQW5hdG9seSBPc292aXRueVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgMjkgTm92IDIwMjBcclxuXHJcbiAgVmVyc2lvbjpcclxuICAgIDEuMFxyXG5cclxuICBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMSBPc292aXRueSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbjwvZmlsZT5cclxuKi9cclxuXHJcbi8vIE5vZGVcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUm91dGVyLCBOYXZpZ2F0aW9uRW5kIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEdvb2dsZUFuYWx5dGljc1NlcnZpY2Uge1xyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHsgXHJcbiAgICAvKlxyXG4gICAgICBodHRwczovL3lhc2hpbnRzLmRldi9ibG9nLzIwMTkvMDIvMTIvYW5ndWxhci1nYS10YWdtYW5hZ2VyXHJcbiAgICAgIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2FuYWx5dGljcy9kZXZndWlkZXMvY29sbGVjdGlvbi9ndGFnanMvcGFnZXNcclxuICAgICAgaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vYW5hbHl0aWNzL2Rldmd1aWRlcy9jb2xsZWN0aW9uL3VwZ3JhZGUvYW5hbHl0aWNzanNcclxuICAgICovXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3Vic2NyaWJlKCkge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xyXG4gICAgICAgIGlmICgoPGFueT53aW5kb3cpLmdhKSB7XHJcbiAgICAgICAgICAoPGFueT53aW5kb3cpLmdhKCdzZXQnLCAncGFnZScsIGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzKTtcclxuICAgICAgICAgICg8YW55PndpbmRvdykuZ2EoJ3NlbmQnLCAncGFnZXZpZXcnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHVuc3Vic2NyaWJlKCkge1xyXG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,66 +0,0 @@
1
- /*
2
- <file>
3
- Project:
4
- @osovitny/anatoly
5
-
6
- Authors:
7
- Vadim Osovitny
8
- Anatoly Osovitny
9
-
10
- Created:
11
- 26 Jun 2020
12
-
13
- Version:
14
- 1.0
15
-
16
- Copyright (c) 2016-2021 Osovitny Inc. All rights reserved.
17
- </file>
18
- */
19
- //Node
20
- import { Injectable } from '@angular/core';
21
- class WebStorageService {
22
- constructor(storage) {
23
- this.storage =
24
- storage === 'local' || storage === 'localStorage'
25
- ? localStorage
26
- : sessionStorage;
27
- }
28
- setItem(key, value) {
29
- this.storage.setItem(key, value);
30
- }
31
- setObject(key, value) {
32
- this.storage.setItem(key, JSON.stringify(value));
33
- }
34
- getItem(key) {
35
- return this.storage.getItem(key);
36
- }
37
- getObject(key) {
38
- let value = this.storage.getItem(key);
39
- if (!value) {
40
- return null;
41
- }
42
- return JSON.parse(value);
43
- }
44
- remove(key) {
45
- this.storage.removeItem(key);
46
- }
47
- }
48
- export class LocalStorageService extends WebStorageService {
49
- constructor() {
50
- super('localStorage');
51
- }
52
- }
53
- LocalStorageService.decorators = [
54
- { type: Injectable }
55
- ];
56
- LocalStorageService.ctorParameters = () => [];
57
- export class SessionStorageService extends WebStorageService {
58
- constructor() {
59
- super('sessionStorage');
60
- }
61
- }
62
- SessionStorageService.decorators = [
63
- { type: Injectable }
64
- ];
65
- SessionStorageService.ctorParameters = () => [];
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLXN0b3JhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuYXRvbHkvc3JjL2xpYi9jb3JlL3NlcnZpY2VzL3dlYi1zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBaUJFO0FBRUYsTUFBTTtBQUNOLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFLekMsTUFBTSxpQkFBaUI7SUFHckIsWUFBWSxPQUFlO1FBQ3pCLElBQUksQ0FBQyxPQUFPO1lBQ1YsT0FBTyxLQUFLLE9BQU8sSUFBSSxPQUFPLEtBQUssY0FBYztnQkFDL0MsQ0FBQyxDQUFDLFlBQVk7Z0JBQ2QsQ0FBQyxDQUFDLGNBQWMsQ0FBQztJQUN2QixDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLO1FBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQUcsRUFBRSxLQUFLO1FBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFHO1FBQ1QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQUc7UUFDWCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUc7UUFDUixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDO0NBQ0Y7QUFHRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsaUJBQWlCO0lBQ3hEO1FBQ0UsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7OztZQUpGLFVBQVU7OztBQVFYLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxpQkFBaUI7SUFDMUQ7UUFDRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMxQixDQUFDOzs7WUFKRixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuPGZpbGU+XHJcbiAgUHJvamVjdDpcclxuICAgIEBvc292aXRueS9hbmF0b2x5XHJcblxyXG4gIEF1dGhvcnM6XHJcbiAgICBWYWRpbSBPc292aXRueVxyXG4gICAgQW5hdG9seSBPc292aXRueVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgMjYgSnVuIDIwMjBcclxuXHJcbiAgVmVyc2lvbjpcclxuICAgIDEuMFxyXG5cclxuICBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMSBPc292aXRueSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbjwvZmlsZT5cclxuKi9cclxuXHJcbi8vTm9kZVxyXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLy9BcHBcclxuaW1wb3J0IHtBcHBDb3JlU2V0dGluZ3N9IGZyb20gJy4uL2NvbnN0cy9zZXR0aW5ncyc7XHJcblxyXG5jbGFzcyBXZWJTdG9yYWdlU2VydmljZSB7XHJcbiAgc3RvcmFnZTogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcihzdG9yYWdlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc3RvcmFnZSA9XHJcbiAgICAgIHN0b3JhZ2UgPT09ICdsb2NhbCcgfHwgc3RvcmFnZSA9PT0gJ2xvY2FsU3RvcmFnZSdcclxuICAgICAgICA/IGxvY2FsU3RvcmFnZVxyXG4gICAgICAgIDogc2Vzc2lvblN0b3JhZ2U7XHJcbiAgfVxyXG5cclxuICBzZXRJdGVtKGtleSwgdmFsdWUpIHtcclxuICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKGtleSwgdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgc2V0T2JqZWN0KGtleSwgdmFsdWUpIHtcclxuICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKGtleSwgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcclxuICB9XHJcblxyXG4gIGdldEl0ZW0oa2V5KSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yYWdlLmdldEl0ZW0oa2V5KTtcclxuICB9XHJcblxyXG4gIGdldE9iamVjdChrZXkpIHtcclxuICAgIGxldCB2YWx1ZSA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKGtleSk7XHJcbiAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBKU09OLnBhcnNlKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZShrZXkpIHtcclxuICAgIHRoaXMuc3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XHJcbiAgfVxyXG59XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIGV4dGVuZHMgV2ViU3RvcmFnZVNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoJ2xvY2FsU3RvcmFnZScpO1xyXG4gIH1cclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIGV4dGVuZHMgV2ViU3RvcmFnZVNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoJ3Nlc3Npb25TdG9yYWdlJyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==