cloud-ide-layout 1.0.8 → 1.0.9

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 (83) hide show
  1. package/README.md +34 -448
  2. package/fesm2022/{cloud-ide-layout-cloud-ide-layout-D3xzVSNA.mjs → cloud-ide-layout-cloud-ide-layout-DLceZY3Y.mjs} +335 -343
  3. package/fesm2022/{cloud-ide-layout-cloud-ide-layout-D3xzVSNA.mjs.map → cloud-ide-layout-cloud-ide-layout-DLceZY3Y.mjs.map} +1 -1
  4. package/fesm2022/{cloud-ide-layout-drawer-theme.component-BSUFE_o2.mjs → cloud-ide-layout-drawer-theme.component-Bn5--C_Q.mjs} +69 -67
  5. package/fesm2022/{cloud-ide-layout-drawer-theme.component-BSUFE_o2.mjs.map → cloud-ide-layout-drawer-theme.component-Bn5--C_Q.mjs.map} +1 -1
  6. package/fesm2022/{cloud-ide-layout-home-wrapper.component-Dr4MO4MB.mjs → cloud-ide-layout-home-wrapper.component-Bo-4LNLx.mjs} +56 -51
  7. package/fesm2022/{cloud-ide-layout-home-wrapper.component-Dr4MO4MB.mjs.map → cloud-ide-layout-home-wrapper.component-Bo-4LNLx.mjs.map} +1 -1
  8. package/fesm2022/{cloud-ide-layout-sidedrawer-notes.component-BWx03JYS.mjs → cloud-ide-layout-sidedrawer-notes.component-BmadMzdl.mjs} +28 -32
  9. package/fesm2022/{cloud-ide-layout-sidedrawer-notes.component-BWx03JYS.mjs.map → cloud-ide-layout-sidedrawer-notes.component-BmadMzdl.mjs.map} +1 -1
  10. package/fesm2022/cloud-ide-layout.mjs +1 -1
  11. package/index.d.ts +579 -3
  12. package/package.json +3 -5
  13. package/esm2022/cloud-ide-layout.mjs +0 -5
  14. package/esm2022/lib/cloud-ide-layout.component.mjs +0 -16
  15. package/esm2022/lib/cloud-ide-layout.routes.mjs +0 -28
  16. package/esm2022/lib/cloud-ide-layout.service.mjs +0 -14
  17. package/esm2022/lib/layout/console/console-wrapper/console-wrapper.component.mjs +0 -11
  18. package/esm2022/lib/layout/console/console.service.mjs +0 -28
  19. package/esm2022/lib/layout/footer/footer-wrapper/footer-wrapper.component.mjs +0 -20
  20. package/esm2022/lib/layout/footer/footer.service.mjs +0 -28
  21. package/esm2022/lib/layout/header/header-wrapper/header-wrapper.component.mjs +0 -84
  22. package/esm2022/lib/layout/header/header.service.mjs +0 -28
  23. package/esm2022/lib/layout/home/home-wrapper/home-wrapper.component.mjs +0 -198
  24. package/esm2022/lib/layout/layout/layout-wrapper/layout-wrapper.component.mjs +0 -28
  25. package/esm2022/lib/layout/request/request-wrapper/request-wrapper.component.mjs +0 -60
  26. package/esm2022/lib/layout/request/request.service.mjs +0 -235
  27. package/esm2022/lib/layout/request/tab-content/tab-content.component.mjs +0 -84
  28. package/esm2022/lib/layout/shared/shared-wrapper/shared-wrapper.component.mjs +0 -49
  29. package/esm2022/lib/layout/shared/shared.service.mjs +0 -508
  30. package/esm2022/lib/layout/sidebar/sidebar-wrapper/sidebar-wrapper.component.mjs +0 -488
  31. package/esm2022/lib/layout/sidebar/sidebar.service.mjs +0 -35
  32. package/esm2022/lib/layout/sidedrawer/cide-lyt-drawer-base.class.mjs +0 -40
  33. package/esm2022/lib/layout/sidedrawer/drawer-theme/drawer-theme.component.mjs +0 -296
  34. package/esm2022/lib/layout/sidedrawer/sidedrawer-notes/sidedrawer-notes.component.mjs +0 -175
  35. package/esm2022/lib/layout/sidedrawer/sidedrawer-notes/sidedrawer-notes.service.mjs +0 -51
  36. package/esm2022/lib/layout/sidedrawer/sidedrawer-wrapper/sidedrawer-wrapper.component.mjs +0 -257
  37. package/esm2022/lib/layout/sidedrawer/sidedrawer.service.mjs +0 -70
  38. package/esm2022/lib/services/app-state/app-state-helper.service.mjs +0 -222
  39. package/esm2022/lib/services/app-state/app-state.service.mjs +0 -256
  40. package/esm2022/lib/services/app-state/index.mjs +0 -3
  41. package/esm2022/lib/services/cache-manager/cache-manager.service.mjs +0 -112
  42. package/esm2022/lib/services/file-manager/file-manager.service.mjs +0 -21
  43. package/esm2022/lib/services/tab-state.service.mjs +0 -128
  44. package/esm2022/lib/services/theme/theme.service.mjs +0 -151
  45. package/esm2022/lib/services/user-status/user-status.service.mjs +0 -135
  46. package/esm2022/lib/utils/custom-route-reuse-strategy.mjs +0 -61
  47. package/esm2022/lib/utils/index.mjs +0 -2
  48. package/esm2022/public-api.mjs +0 -18
  49. package/lib/cloud-ide-layout.component.d.ts +0 -5
  50. package/lib/cloud-ide-layout.routes.d.ts +0 -3
  51. package/lib/cloud-ide-layout.service.d.ts +0 -6
  52. package/lib/layout/console/console-wrapper/console-wrapper.component.d.ts +0 -5
  53. package/lib/layout/console/console.service.d.ts +0 -9
  54. package/lib/layout/footer/footer-wrapper/footer-wrapper.component.d.ts +0 -9
  55. package/lib/layout/footer/footer.service.d.ts +0 -9
  56. package/lib/layout/header/header-wrapper/header-wrapper.component.d.ts +0 -25
  57. package/lib/layout/header/header.service.d.ts +0 -9
  58. package/lib/layout/home/home-wrapper/home-wrapper.component.d.ts +0 -94
  59. package/lib/layout/layout/layout-wrapper/layout-wrapper.component.d.ts +0 -5
  60. package/lib/layout/request/request-wrapper/request-wrapper.component.d.ts +0 -14
  61. package/lib/layout/request/request.service.d.ts +0 -60
  62. package/lib/layout/request/tab-content/tab-content.component.d.ts +0 -19
  63. package/lib/layout/shared/shared-wrapper/shared-wrapper.component.d.ts +0 -17
  64. package/lib/layout/shared/shared.service.d.ts +0 -114
  65. package/lib/layout/sidebar/sidebar-wrapper/sidebar-wrapper.component.d.ts +0 -140
  66. package/lib/layout/sidebar/sidebar.service.d.ts +0 -12
  67. package/lib/layout/sidedrawer/cide-lyt-drawer-base.class.d.ts +0 -16
  68. package/lib/layout/sidedrawer/drawer-theme/drawer-theme.component.d.ts +0 -71
  69. package/lib/layout/sidedrawer/sidedrawer-notes/sidedrawer-notes.component.d.ts +0 -48
  70. package/lib/layout/sidedrawer/sidedrawer-notes/sidedrawer-notes.service.d.ts +0 -13
  71. package/lib/layout/sidedrawer/sidedrawer-wrapper/sidedrawer-wrapper.component.d.ts +0 -30
  72. package/lib/layout/sidedrawer/sidedrawer.service.d.ts +0 -30
  73. package/lib/services/app-state/app-state-helper.service.d.ts +0 -150
  74. package/lib/services/app-state/app-state.service.d.ts +0 -85
  75. package/lib/services/app-state/index.d.ts +0 -3
  76. package/lib/services/cache-manager/cache-manager.service.d.ts +0 -64
  77. package/lib/services/file-manager/file-manager.service.d.ts +0 -9
  78. package/lib/services/tab-state.service.d.ts +0 -79
  79. package/lib/services/theme/theme.service.d.ts +0 -71
  80. package/lib/services/user-status/user-status.service.d.ts +0 -57
  81. package/lib/utils/custom-route-reuse-strategy.d.ts +0 -15
  82. package/lib/utils/index.d.ts +0 -1
  83. package/public-api.d.ts +0 -12
@@ -1,222 +0,0 @@
1
- import { Injectable, inject } from '@angular/core';
2
- import { AppStateService } from './app-state.service';
3
- import { CideLytSidebarService } from '../../layout/sidebar/sidebar.service';
4
- import { map } from 'rxjs/operators';
5
- import * as i0 from "@angular/core";
6
- export class AppStateHelperService {
7
- constructor() {
8
- this.appStateService = inject(AppStateService);
9
- this.sidebarService = inject(CideLytSidebarService);
10
- // Computed signals for derived state
11
- this.currentUser = this.appStateService.currentUser;
12
- this.isAuthenticated = this.appStateService.isAuthenticated;
13
- this.userInfo = this.appStateService.userInfo;
14
- this.activeModule = this.appStateService.activeModule;
15
- this.activeModuleInfo = this.appStateService.activeModuleInfo;
16
- this.activeEntity = this.appStateService.activeEntity;
17
- }
18
- /**
19
- * Get current user value (non-reactive)
20
- */
21
- getCurrentUser() {
22
- return this.appStateService.getUserValue();
23
- }
24
- /**
25
- * Set user data
26
- */
27
- setUser(user) {
28
- this.appStateService.setUser(user);
29
- }
30
- /**
31
- * Update user data (partial update)
32
- */
33
- updateUser(updates) {
34
- this.appStateService.updateUser(updates);
35
- }
36
- /**
37
- * Clear user data
38
- */
39
- clearUser() {
40
- this.appStateService.clearUser();
41
- }
42
- /**
43
- * Check if user is authenticated
44
- */
45
- isUserAuthenticated() {
46
- return this.appStateService.isAuthenticated();
47
- }
48
- /**
49
- * Get user info object
50
- */
51
- getUserInfo() {
52
- return this.appStateService.userInfo();
53
- }
54
- /**
55
- * Get user ID
56
- */
57
- getUserId() {
58
- const user = this.getCurrentUser();
59
- return user?._id || null;
60
- }
61
- /**
62
- * Get user name
63
- */
64
- getUserName() {
65
- const userInfo = this.getUserInfo();
66
- return userInfo?.name || null;
67
- }
68
- /**
69
- * Get user email
70
- */
71
- getUserEmail() {
72
- const userInfo = this.getUserInfo();
73
- return userInfo?.email || null;
74
- }
75
- /**
76
- * Get user username
77
- */
78
- getUserUsername() {
79
- const user = this.getCurrentUser();
80
- return user?.user_username || null;
81
- }
82
- /**
83
- * Get user full name
84
- */
85
- getUserFullName() {
86
- const user = this.getCurrentUser();
87
- return user?.user_fullname || null;
88
- }
89
- /**
90
- * Get user first name
91
- */
92
- getUserFirstName() {
93
- const user = this.getCurrentUser();
94
- return user?.user_firstname || null;
95
- }
96
- /**
97
- * Get user last name
98
- */
99
- getUserLastName() {
100
- const user = this.getCurrentUser();
101
- return user?.user_lastname || null;
102
- }
103
- /**
104
- * Get user mobile number
105
- */
106
- getUserMobile() {
107
- const user = this.getCurrentUser();
108
- return user?.user_mobileno || null;
109
- }
110
- /**
111
- * Set the active module
112
- */
113
- setActiveModule(module) {
114
- this.appStateService.setActiveModule(module);
115
- }
116
- /**
117
- * Get active module value (non-reactive)
118
- */
119
- getActiveModule() {
120
- return this.appStateService.getActiveModuleValue();
121
- }
122
- /**
123
- * Get active module info
124
- */
125
- getActiveModuleInfo() {
126
- return this.appStateService.activeModuleInfo();
127
- }
128
- /**
129
- * Get active module ID
130
- */
131
- getActiveModuleId() {
132
- const module = this.getActiveModule();
133
- return module?._id || null;
134
- }
135
- /**
136
- * Get active module title
137
- */
138
- getActiveModuleTitle() {
139
- const moduleInfo = this.getActiveModuleInfo();
140
- return moduleInfo?.title || null;
141
- }
142
- /**
143
- * Get active module icon
144
- */
145
- getActiveModuleIcon() {
146
- const moduleInfo = this.getActiveModuleInfo();
147
- return moduleInfo?.icon || null;
148
- }
149
- /**
150
- * Set a module as active by its ID
151
- * This replaces the previous isModuleActive method to use setActiveModule instead of getActiveModuleId
152
- */
153
- setActiveModuleById(moduleId) {
154
- return this.sidebarService.getSidebarMenues({ syme_type: "module", sort: 'asc', syme_title: "" }).pipe(map(response => {
155
- const modules = response?.data || [];
156
- const targetModule = modules.find(module => module._id === moduleId);
157
- if (targetModule) {
158
- this.setActiveModule(targetModule);
159
- return true;
160
- }
161
- else {
162
- console.warn(`Module with ID "${moduleId}" not found`);
163
- return false;
164
- }
165
- }));
166
- }
167
- /**
168
- * Check if a module is active (keeping the original functionality for backward compatibility)
169
- */
170
- isModuleActive(moduleId) {
171
- const activeModuleId = this.getActiveModuleId();
172
- return activeModuleId === moduleId;
173
- }
174
- /**
175
- * Set the active entity
176
- */
177
- setActiveEntity(entity) {
178
- this.appStateService.setActiveEntity(entity);
179
- }
180
- /**
181
- * Get active entity value (non-reactive)
182
- */
183
- getActiveEntity() {
184
- return this.appStateService.getActiveEntityValue();
185
- }
186
- /**
187
- * Get active entity ID
188
- */
189
- getActiveEntityId() {
190
- const entity = this.getActiveEntity();
191
- return entity?._id || '';
192
- }
193
- /**
194
- * Get active entity name
195
- */
196
- getActiveEntityName() {
197
- const entity = this.getActiveEntity();
198
- return entity?.syen_name || null;
199
- }
200
- /**
201
- * Get active entity code
202
- */
203
- getActiveEntityCode() {
204
- const entity = this.getActiveEntity();
205
- return entity?.syen_entity_code || null;
206
- }
207
- /**
208
- * Manually refresh state from localStorage
209
- */
210
- refreshFromLocalStorage() {
211
- this.appStateService.refreshFromLocalStorage();
212
- }
213
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AppStateHelperService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
214
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AppStateHelperService, providedIn: 'root' }); }
215
- }
216
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AppStateHelperService, decorators: [{
217
- type: Injectable,
218
- args: [{
219
- providedIn: 'root'
220
- }]
221
- }] });
222
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXN0YXRlLWhlbHBlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xvdWQtaWRlLWxheW91dC9zcmMvbGliL3NlcnZpY2VzL2FwcC1zdGF0ZS9hcHAtc3RhdGUtaGVscGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRTdFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFLckMsTUFBTSxPQUFPLHFCQUFxQjtJQUhsQztRQUlVLG9CQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzFDLG1CQUFjLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFFdkQscUNBQXFDO1FBQ3JCLGdCQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUM7UUFDL0Msb0JBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQztRQUN2RCxhQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUM7UUFDekMsaUJBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQztRQUNqRCxxQkFBZ0IsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDO1FBQ3pELGlCQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUM7S0FvT2xFO0lBbE9DOztPQUVHO0lBQ0gsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFP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ZUFBZSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDckQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsaUJBQWlCO1FBQ2YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3RDLE9BQU8sTUFBTSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CO1FBQ2pCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN0QyxPQUFPLE1BQU0sRUFBRSxTQUFTLElBQUksSUFBSSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7T0FFRztJQUNILG1CQUFtQjtRQUNqQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdEMsT0FBTyxNQUFNLEVBQUUsZ0JBQWdCLElBQUksSUFBSSxDQUFDO0lBQzFDLENBQUM7SUFFRDs7T0FFRztJQUNILHVCQUF1QjtRQUNyQixJQUFJLENBQUMsZUFBZSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDakQsQ0FBQzs4R0E3T1UscUJBQXFCO2tIQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs7MkZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBwU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9hcHAtc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBJVXNlciwgbWVudVJlc3BvbnNlRGF0YSwgSUNvcmVTeWVuIH0gZnJvbSAnY2xvdWQtaWRlLWxtcy1tb2RlbCc7XG5pbXBvcnQgeyBDaWRlTHl0U2lkZWJhclNlcnZpY2UgfSBmcm9tICcuLi8uLi9sYXlvdXQvc2lkZWJhci9zaWRlYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBcHBTdGF0ZUhlbHBlclNlcnZpY2Uge1xuICBwcml2YXRlIGFwcFN0YXRlU2VydmljZSA9IGluamVjdChBcHBTdGF0ZVNlcnZpY2UpO1xuICBwcml2YXRlIHNpZGViYXJTZXJ2aWNlID0gaW5qZWN0KENpZGVMeXRTaWRlYmFyU2VydmljZSk7XG5cbiAgLy8gQ29tcHV0ZWQgc2lnbmFscyBmb3IgZGVyaXZlZCBzdGF0ZVxuICBwdWJsaWMgcmVhZG9ubHkgY3VycmVudFVzZXIgPSB0aGlzLmFwcFN0YXRlU2VydmljZS5jdXJyZW50VXNlcjtcbiAgcHVibGljIHJlYWRvbmx5IGlzQXV0aGVudGljYXRlZCA9IHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmlzQXV0aGVudGljYXRlZDtcbiAgcHVibGljIHJlYWRvbmx5IHVzZXJJbmZvID0gdGhpcy5hcHBTdGF0ZVNlcnZpY2UudXNlckluZm87XG4gIHB1YmxpYyByZWFkb25seSBhY3RpdmVNb2R1bGUgPSB0aGlzLmFwcFN0YXRlU2VydmljZS5hY3RpdmVNb2R1bGU7XG4gIHB1YmxpYyByZWFkb25seSBhY3RpdmVNb2R1bGVJbmZvID0gdGhpcy5hcHBTdGF0ZVNlcnZpY2UuYWN0aXZlTW9kdWxlSW5mbztcbiAgcHVibGljIHJlYWRvbmx5IGFjdGl2ZUVudGl0eSA9IHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmFjdGl2ZUVudGl0eTtcblxuICAvKipcbiAgICogR2V0IGN1cnJlbnQgdXNlciB2YWx1ZSAobm9uLXJlYWN0aXZlKVxuICAgKi9cbiAgZ2V0Q3VycmVudFVzZXIoKTogSVVzZXIgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5hcHBTdGF0ZVNlcnZpY2UuZ2V0VXNlclZhbHVlKCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHVzZXIgZGF0YVxuICAgKi9cbiAgc2V0VXNlcih1c2VyOiBJVXNlciB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLmFwcFN0YXRlU2VydmljZS5zZXRVc2VyKHVzZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB1c2VyIGRhdGEgKHBhcnRpYWwgdXBkYXRlKVxuICAgKi9cbiAgdXBkYXRlVXNlcih1cGRhdGVzOiBQYXJ0aWFsPElVc2VyPik6IHZvaWQge1xuICAgIHRoaXMuYXBwU3RhdGVTZXJ2aWNlLnVwZGF0ZVVzZXIodXBkYXRlcyk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgdXNlciBkYXRhXG4gICAqL1xuICBjbGVhclVzZXIoKTogdm9pZCB7XG4gICAgdGhpcy5hcHBTdGF0ZVNlcnZpY2UuY2xlYXJVc2VyKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdXNlciBpcyBhdXRoZW50aWNhdGVkXG4gICAqL1xuICBpc1VzZXJBdXRoZW50aWNhdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFwcFN0YXRlU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdXNlciBpbmZvIG9iamVjdFxuICAgKi9cbiAgZ2V0VXNlckluZm8oKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwU3RhdGVTZXJ2aWNlLnVzZXJJbmZvKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHVzZXIgSURcbiAgICovXG4gIGdldFVzZXJJZCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCB1c2VyID0gdGhpcy5nZXRDdXJyZW50VXNlcigpO1xuICAgIHJldHVybiB1c2VyPy5faWQgfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdXNlciBuYW1lXG4gICAqL1xuICBnZXRVc2VyTmFtZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCB1c2VySW5mbyA9IHRoaXMuZ2V0VXNlckluZm8oKTtcbiAgICByZXR1cm4gdXNlckluZm8/Lm5hbWUgfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdXNlciBlbWFpbFxuICAgKi9cbiAgZ2V0VXNlckVtYWlsKCk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IHVzZXJJbmZvID0gdGhpcy5nZXRVc2VySW5mbygpO1xuICAgIHJldHVybiB1c2VySW5mbz8uZW1haWwgfHwgbnVsbDtcbiAgfVxuXG5cblxuICAvKipcbiAgICogR2V0IHVzZXIgdXNlcm5hbWVcbiAgICovXG4gIGdldFVzZXJVc2VybmFtZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCB1c2VyID0gdGhpcy5nZXRDdXJyZW50VXNlcigpO1xuICAgIHJldHVybiB1c2VyPy51c2VyX3VzZXJuYW1lIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHVzZXIgZnVsbCBuYW1lXG4gICAqL1xuICBnZXRVc2VyRnVsbE5hbWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgdXNlciA9IHRoaXMuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICByZXR1cm4gdXNlcj8udXNlcl9mdWxsbmFtZSB8fCBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB1c2VyIGZpcnN0IG5hbWVcbiAgICovXG4gIGdldFVzZXJGaXJzdE5hbWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgdXNlciA9IHRoaXMuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICByZXR1cm4gdXNlcj8udXNlcl9maXJzdG5hbWUgfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdXNlciBsYXN0IG5hbWVcbiAgICovXG4gIGdldFVzZXJMYXN0TmFtZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCB1c2VyID0gdGhpcy5nZXRDdXJyZW50VXNlcigpO1xuICAgIHJldHVybiB1c2VyPy51c2VyX2xhc3RuYW1lIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHVzZXIgbW9iaWxlIG51bWJlclxuICAgKi9cbiAgZ2V0VXNlck1vYmlsZSgpOiBudW1iZXIgfCBudWxsIHtcbiAgICBjb25zdCB1c2VyID0gdGhpcy5nZXRDdXJyZW50VXNlcigpO1xuICAgIHJldHVybiB1c2VyPy51c2VyX21vYmlsZW5vIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBhY3RpdmUgbW9kdWxlXG4gICAqL1xuICBzZXRBY3RpdmVNb2R1bGUobW9kdWxlOiBtZW51UmVzcG9uc2VEYXRhIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuYXBwU3RhdGVTZXJ2aWNlLnNldEFjdGl2ZU1vZHVsZShtb2R1bGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhY3RpdmUgbW9kdWxlIHZhbHVlIChub24tcmVhY3RpdmUpXG4gICAqL1xuICBnZXRBY3RpdmVNb2R1bGUoKTogbWVudVJlc3BvbnNlRGF0YSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmFwcFN0YXRlU2VydmljZS5nZXRBY3RpdmVNb2R1bGVWYWx1ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhY3RpdmUgbW9kdWxlIGluZm9cbiAgICovXG4gIGdldEFjdGl2ZU1vZHVsZUluZm8oKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmFjdGl2ZU1vZHVsZUluZm8oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWN0aXZlIG1vZHVsZSBJRFxuICAgKi9cbiAgZ2V0QWN0aXZlTW9kdWxlSWQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgbW9kdWxlID0gdGhpcy5nZXRBY3RpdmVNb2R1bGUoKTtcbiAgICByZXR1cm4gbW9kdWxlPy5faWQgfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWN0aXZlIG1vZHVsZSB0aXRsZVxuICAgKi9cbiAgZ2V0QWN0aXZlTW9kdWxlVGl0bGUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgbW9kdWxlSW5mbyA9IHRoaXMuZ2V0QWN0aXZlTW9kdWxlSW5mbygpO1xuICAgIHJldHVybiBtb2R1bGVJbmZvPy50aXRsZSB8fCBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhY3RpdmUgbW9kdWxlIGljb25cbiAgICovXG4gIGdldEFjdGl2ZU1vZHVsZUljb24oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgbW9kdWxlSW5mbyA9IHRoaXMuZ2V0QWN0aXZlTW9kdWxlSW5mbygpO1xuICAgIHJldHVybiBtb2R1bGVJbmZvPy5pY29uIHx8IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgbW9kdWxlIGFzIGFjdGl2ZSBieSBpdHMgSURcbiAgICogVGhpcyByZXBsYWNlcyB0aGUgcHJldmlvdXMgaXNNb2R1bGVBY3RpdmUgbWV0aG9kIHRvIHVzZSBzZXRBY3RpdmVNb2R1bGUgaW5zdGVhZCBvZiBnZXRBY3RpdmVNb2R1bGVJZFxuICAgKi9cbiAgc2V0QWN0aXZlTW9kdWxlQnlJZChtb2R1bGVJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuc2lkZWJhclNlcnZpY2UuZ2V0U2lkZWJhck1lbnVlcyh7IHN5bWVfdHlwZTogXCJtb2R1bGVcIiwgc29ydDogJ2FzYycsIHN5bWVfdGl0bGU6IFwiXCIgfSkucGlwZShcbiAgICAgIG1hcChyZXNwb25zZSA9PiB7XG4gICAgICAgIGNvbnN0IG1vZHVsZXMgPSByZXNwb25zZT8uZGF0YSB8fCBbXTtcbiAgICAgICAgY29uc3QgdGFyZ2V0TW9kdWxlID0gbW9kdWxlcy5maW5kKG1vZHVsZSA9PiBtb2R1bGUuX2lkID09PSBtb2R1bGVJZCk7XG4gICAgICAgIFxuICAgICAgICBpZiAodGFyZ2V0TW9kdWxlKSB7XG4gICAgICAgICAgdGhpcy5zZXRBY3RpdmVNb2R1bGUodGFyZ2V0TW9kdWxlKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oYE1vZHVsZSB3aXRoIElEIFwiJHttb2R1bGVJZH1cIiBub3QgZm91bmRgKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIG1vZHVsZSBpcyBhY3RpdmUgKGtlZXBpbmcgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uYWxpdHkgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpXG4gICAqL1xuICBpc01vZHVsZUFjdGl2ZShtb2R1bGVJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgYWN0aXZlTW9kdWxlSWQgPSB0aGlzLmdldEFjdGl2ZU1vZHVsZUlkKCk7XG4gICAgcmV0dXJuIGFjdGl2ZU1vZHVsZUlkID09PSBtb2R1bGVJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGFjdGl2ZSBlbnRpdHlcbiAgICovXG4gIHNldEFjdGl2ZUVudGl0eShlbnRpdHk6IElDb3JlU3llbiB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLmFwcFN0YXRlU2VydmljZS5zZXRBY3RpdmVFbnRpdHkoZW50aXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWN0aXZlIGVudGl0eSB2YWx1ZSAobm9uLXJlYWN0aXZlKVxuICAgKi9cbiAgZ2V0QWN0aXZlRW50aXR5KCk6IElDb3JlU3llbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmFwcFN0YXRlU2VydmljZS5nZXRBY3RpdmVFbnRpdHlWYWx1ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhY3RpdmUgZW50aXR5IElEXG4gICAqL1xuICBnZXRBY3RpdmVFbnRpdHlJZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGVudGl0eSA9IHRoaXMuZ2V0QWN0aXZlRW50aXR5KCk7XG4gICAgcmV0dXJuIGVudGl0eT8uX2lkIHx8ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhY3RpdmUgZW50aXR5IG5hbWVcbiAgICovXG4gIGdldEFjdGl2ZUVudGl0eU5hbWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgZW50aXR5ID0gdGhpcy5nZXRBY3RpdmVFbnRpdHkoKTtcbiAgICByZXR1cm4gZW50aXR5Py5zeWVuX25hbWUgfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWN0aXZlIGVudGl0eSBjb2RlXG4gICAqL1xuICBnZXRBY3RpdmVFbnRpdHlDb2RlKCk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IGVudGl0eSA9IHRoaXMuZ2V0QWN0aXZlRW50aXR5KCk7XG4gICAgcmV0dXJuIGVudGl0eT8uc3llbl9lbnRpdHlfY29kZSB8fCBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hbnVhbGx5IHJlZnJlc2ggc3RhdGUgZnJvbSBsb2NhbFN0b3JhZ2VcbiAgICovXG4gIHJlZnJlc2hGcm9tTG9jYWxTdG9yYWdlKCk6IHZvaWQge1xuICAgIHRoaXMuYXBwU3RhdGVTZXJ2aWNlLnJlZnJlc2hGcm9tTG9jYWxTdG9yYWdlKCk7XG4gIH1cbn0gIl19
@@ -1,256 +0,0 @@
1
- import { Injectable, signal, computed, effect } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class AppStateService {
4
- constructor() {
5
- // Private signal for current user
6
- this.currentUserSignal = signal(null);
7
- // Private signal for active module
8
- this.activeModuleSignal = signal(null);
9
- // Private signal for active entity
10
- this.activeEntitySignal = signal(null);
11
- // Public computed signal for current user, for other services to get the user value
12
- this.currentUser = computed(() => this.currentUserSignal());
13
- // Public computed signal for active module
14
- this.activeModule = computed(() => this.activeModuleSignal());
15
- // Public computed signal for active entity
16
- this.activeEntity = computed(() => this.activeEntitySignal());
17
- // Computed signals for derived state
18
- this.isAuthenticated = computed(() => !!this.currentUserSignal());
19
- this.userInfo = computed(() => {
20
- const user = this.currentUserSignal();
21
- if (!user)
22
- return null;
23
- return {
24
- id: user._id,
25
- name: user.user_fullname || `${user.user_firstname} ${user.user_lastname}`,
26
- email: user.user_emailid,
27
- role: user.user_id_role
28
- };
29
- });
30
- // Computed signal for active module info
31
- this.activeModuleInfo = computed(() => {
32
- const module = this.activeModuleSignal();
33
- if (!module)
34
- return null;
35
- return {
36
- id: module._id,
37
- title: module.syme_title,
38
- icon: module.syme_icon,
39
- path: module.syme_path,
40
- type: module.syme_type
41
- };
42
- });
43
- // Load initial state from localStorage
44
- this.loadFromLocalStorage();
45
- // Save to localStorage whenever state changes
46
- effect(() => {
47
- const currentUser = this.currentUserSignal();
48
- const activeModule = this.activeModuleSignal();
49
- const activeEntity = this.activeEntitySignal();
50
- this.saveToLocalStorage({
51
- user: currentUser,
52
- activeModule: activeModule,
53
- activeEntity: activeEntity
54
- });
55
- });
56
- // Listen for localStorage changes from other tabs/windows
57
- this.setupStorageListener();
58
- }
59
- /**
60
- * Set the current user
61
- */
62
- setUser(user) {
63
- this.currentUserSignal.set(user);
64
- }
65
- /**
66
- * Update user data (partial update)
67
- */
68
- updateUser(updates) {
69
- const currentUser = this.currentUserSignal();
70
- if (currentUser) {
71
- this.currentUserSignal.set({ ...currentUser, ...updates });
72
- }
73
- }
74
- /**
75
- * Clear user data
76
- */
77
- clearUser() {
78
- this.currentUserSignal.set(null);
79
- }
80
- /**
81
- * Get current user value (non-reactive)
82
- */
83
- getUserValue() {
84
- return this.currentUserSignal();
85
- }
86
- /**
87
- * Set the active module
88
- */
89
- setActiveModule(module) {
90
- this.activeModuleSignal.set(module);
91
- }
92
- /**
93
- * Get active module value (non-reactive)
94
- */
95
- getActiveModuleValue() {
96
- return this.activeModuleSignal();
97
- }
98
- /**
99
- * Set the active entity
100
- */
101
- setActiveEntity(entity) {
102
- this.activeEntitySignal.set(entity);
103
- }
104
- /**
105
- * Get active entity value (non-reactive)
106
- */
107
- getActiveEntityValue() {
108
- return this.activeEntitySignal();
109
- }
110
- /**
111
- * Manually refresh state from localStorage
112
- * Call this method when you need to sync with external localStorage changes
113
- */
114
- refreshFromLocalStorage() {
115
- this.loadFromLocalStorage();
116
- }
117
- /**
118
- * Check if localStorage is available (browser environment)
119
- */
120
- isLocalStorageAvailable() {
121
- try {
122
- return typeof window !== 'undefined' && typeof localStorage !== 'undefined';
123
- }
124
- catch {
125
- return false;
126
- }
127
- }
128
- /**
129
- * Save state to localStorage
130
- */
131
- saveToLocalStorage(data) {
132
- if (!this.isLocalStorageAvailable()) {
133
- return;
134
- }
135
- try {
136
- if (data.user !== undefined) {
137
- if (data.user) {
138
- localStorage.setItem('cide_auth_user', JSON.stringify(data.user));
139
- }
140
- else {
141
- localStorage.removeItem('cide_auth_user');
142
- }
143
- }
144
- if (data.activeModule !== undefined) {
145
- if (data.activeModule) {
146
- localStorage.setItem('cide_active_module', JSON.stringify(data.activeModule));
147
- }
148
- else {
149
- localStorage.removeItem('cide_active_module');
150
- }
151
- }
152
- if (data.activeEntity !== undefined) {
153
- if (data.activeEntity) {
154
- localStorage.setItem('cide_active_entity', JSON.stringify(data.activeEntity));
155
- }
156
- else {
157
- localStorage.removeItem('cide_active_entity');
158
- }
159
- }
160
- }
161
- catch (error) {
162
- console.error('Error saving to localStorage:', error);
163
- }
164
- }
165
- /**
166
- * Load state from localStorage
167
- */
168
- loadFromLocalStorage() {
169
- if (!this.isLocalStorageAvailable()) {
170
- return;
171
- }
172
- try {
173
- const userData = localStorage.getItem('cide_auth_user');
174
- if (userData) {
175
- const user = JSON.parse(userData);
176
- this.currentUserSignal.set(user);
177
- }
178
- const moduleData = localStorage.getItem('cide_active_module');
179
- if (moduleData) {
180
- const module = JSON.parse(moduleData);
181
- this.activeModuleSignal.set(module);
182
- }
183
- const entityData = localStorage.getItem('cide_active_entity');
184
- if (entityData) {
185
- const entity = JSON.parse(entityData);
186
- this.activeEntitySignal.set(entity);
187
- }
188
- }
189
- catch (error) {
190
- console.error('Error loading from localStorage:', error);
191
- // Clear corrupted data
192
- if (this.isLocalStorageAvailable()) {
193
- localStorage.removeItem('cide_auth_user');
194
- localStorage.removeItem('cide_active_module');
195
- localStorage.removeItem('cide_active_entity');
196
- }
197
- }
198
- }
199
- /**
200
- * Setup storage event listener to handle external localStorage changes
201
- */
202
- setupStorageListener() {
203
- if (!this.isLocalStorageAvailable()) {
204
- return;
205
- }
206
- // Listen for storage events (triggered when localStorage is modified from other tabs/windows)
207
- window.addEventListener('storage', (event) => {
208
- if (!event.key)
209
- return;
210
- try {
211
- // Handle user data changes
212
- if (event.key === 'cide_auth_user') {
213
- if (event.newValue) {
214
- const user = JSON.parse(event.newValue);
215
- this.currentUserSignal.set(user);
216
- }
217
- else {
218
- this.currentUserSignal.set(null);
219
- }
220
- }
221
- // Handle active module changes
222
- if (event.key === 'cide_active_module') {
223
- if (event.newValue) {
224
- const module = JSON.parse(event.newValue);
225
- this.activeModuleSignal.set(module);
226
- }
227
- else {
228
- this.activeModuleSignal.set(null);
229
- }
230
- }
231
- // Handle active entity changes
232
- if (event.key === 'cide_active_entity') {
233
- if (event.newValue) {
234
- const entity = JSON.parse(event.newValue);
235
- this.activeEntitySignal.set(entity);
236
- }
237
- else {
238
- this.activeEntitySignal.set(null);
239
- }
240
- }
241
- }
242
- catch (error) {
243
- console.error('Error parsing localStorage update:', error);
244
- }
245
- });
246
- }
247
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AppStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
248
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AppStateService, providedIn: 'root' }); }
249
- }
250
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AppStateService, decorators: [{
251
- type: Injectable,
252
- args: [{
253
- providedIn: 'root'
254
- }]
255
- }], ctorParameters: () => [] });
256
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXN0YXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbG91ZC1pZGUtbGF5b3V0L3NyYy9saWIvc2VydmljZXMvYXBwLXN0YXRlL2FwcC1zdGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBWXJFLE1BQU0sT0FBTyxlQUFlO0lBK0MxQjtRQTlDQSxrQ0FBa0M7UUFDMUIsc0JBQWlCLEdBQUcsTUFBTSxDQUFlLElBQUksQ0FBQyxDQUFDO1FBRXZELG1DQUFtQztRQUMzQix1QkFBa0IsR0FBRyxNQUFNLENBQTBCLElBQUksQ0FBQyxDQUFDO1FBRW5FLG1DQUFtQztRQUMzQix1QkFBa0IsR0FBRyxNQUFNLENBQW1CLElBQUksQ0FBQyxDQUFDO1FBRTVELG9GQUFvRjtRQUNwRSxnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBRXZFLDJDQUEyQztRQUMzQixpQkFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBRXpFLDJDQUEyQztRQUMzQixpQkFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBRXpFLHFDQUFxQztRQUNyQixvQkFBZSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztRQUM3RCxhQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN2QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZ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ZCxNQUFNOzsyRkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIHNpZ25hbCwgY29tcHV0ZWQsIGVmZmVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSVVzZXIsIG1lbnVSZXNwb25zZURhdGEsIElDb3JlU3llbiB9IGZyb20gJ2Nsb3VkLWlkZS1sbXMtbW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcFN0YXRlIHtcbiAgY3VycmVudFVzZXI6IElVc2VyIHwgbnVsbDtcbiAgYWN0aXZlTW9kdWxlOiBtZW51UmVzcG9uc2VEYXRhIHwgbnVsbDtcbiAgYWN0aXZlRW50aXR5OiBJQ29yZVN5ZW4gfCBudWxsO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBcHBTdGF0ZVNlcnZpY2Uge1xuICAvLyBQcml2YXRlIHNpZ25hbCBmb3IgY3VycmVudCB1c2VyXG4gIHByaXZhdGUgY3VycmVudFVzZXJTaWduYWwgPSBzaWduYWw8SVVzZXIgfCBudWxsPihudWxsKTtcblxuICAvLyBQcml2YXRlIHNpZ25hbCBmb3IgYWN0aXZlIG1vZHVsZVxuICBwcml2YXRlIGFjdGl2ZU1vZHVsZVNpZ25hbCA9IHNpZ25hbDxtZW51UmVzcG9uc2VEYXRhIHwgbnVsbD4obnVsbCk7XG5cbiAgLy8gUHJpdmF0ZSBzaWduYWwgZm9yIGFjdGl2ZSBlbnRpdHlcbiAgcHJpdmF0ZSBhY3RpdmVFbnRpdHlTaWduYWwgPSBzaWduYWw8SUNvcmVTeWVuIHwgbnVsbD4obnVsbCk7XG5cbiAgLy8gUHVibGljIGNvbXB1dGVkIHNpZ25hbCBmb3IgY3VycmVudCB1c2VyLCBmb3Igb3RoZXIgc2VydmljZXMgdG8gZ2V0IHRoZSB1c2VyIHZhbHVlXG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50VXNlciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY3VycmVudFVzZXJTaWduYWwoKSk7XG5cbiAgLy8gUHVibGljIGNvbXB1dGVkIHNpZ25hbCBmb3IgYWN0aXZlIG1vZHVsZVxuICBwdWJsaWMgcmVhZG9ubHkgYWN0aXZlTW9kdWxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5hY3RpdmVNb2R1bGVTaWduYWwoKSk7XG5cbiAgLy8gUHVibGljIGNvbXB1dGVkIHNpZ25hbCBmb3IgYWN0aXZlIGVudGl0eVxuICBwdWJsaWMgcmVhZG9ubHkgYWN0aXZlRW50aXR5ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5hY3RpdmVFbnRpdHlTaWduYWwoKSk7XG5cbiAgLy8gQ29tcHV0ZWQgc2lnbmFscyBmb3IgZGVyaXZlZCBzdGF0ZVxuICBwdWJsaWMgcmVhZG9ubHkgaXNBdXRoZW50aWNhdGVkID0gY29tcHV0ZWQoKCkgPT4gISF0aGlzLmN1cnJlbnRVc2VyU2lnbmFsKCkpO1xuICBwdWJsaWMgcmVhZG9ubHkgdXNlckluZm8gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdXNlciA9IHRoaXMuY3VycmVudFVzZXJTaWduYWwoKTtcbiAgICBpZiAoIXVzZXIpIHJldHVybiBudWxsO1xuICAgIFxuICAgIHJldHVybiB7XG4gICAgICBpZDogdXNlci5faWQsXG4gICAgICBuYW1lOiB1c2VyLnVzZXJfZnVsbG5hbWUgfHwgYCR7dXNlci51c2VyX2ZpcnN0bmFtZX0gJHt1c2VyLnVzZXJfbGFzdG5hbWV9YCxcbiAgICAgIGVtYWlsOiB1c2VyLnVzZXJfZW1haWxpZCxcbiAgICAgIHJvbGU6IHVzZXIudXNlcl9pZF9yb2xlXG4gICAgfTtcbiAgfSk7XG5cbiAgLy8gQ29tcHV0ZWQgc2lnbmFsIGZvciBhY3RpdmUgbW9kdWxlIGluZm9cbiAgcHVibGljIHJlYWRvbmx5IGFjdGl2ZU1vZHVsZUluZm8gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbW9kdWxlID0gdGhpcy5hY3RpdmVNb2R1bGVTaWduYWwoKTtcbiAgICBpZiAoIW1vZHVsZSkgcmV0dXJuIG51bGw7XG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBtb2R1bGUuX2lkLFxuICAgICAgdGl0bGU6IG1vZHVsZS5zeW1lX3RpdGxlLFxuICAgICAgaWNvbjogbW9kdWxlLnN5bWVfaWNvbixcbiAgICAgIHBhdGg6IG1vZHVsZS5zeW1lX3BhdGgsXG4gICAgICB0eXBlOiBtb2R1bGUuc3ltZV90eXBlXG4gICAgfTtcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gTG9hZCBpbml0aWFsIHN0YXRlIGZyb20gbG9jYWxTdG9yYWdlXG4gICAgdGhpcy5sb2FkRnJvbUxvY2FsU3RvcmFnZSgpO1xuICAgIFxuICAgIC8vIFNhdmUgdG8gbG9jYWxTdG9yYWdlIHdoZW5ldmVyIHN0YXRlIGNoYW5nZXNcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudFVzZXIgPSB0aGlzLmN1cnJlbnRVc2VyU2lnbmFsKCk7XG4gICAgICBjb25zdCBhY3RpdmVNb2R1bGUgPSB0aGlzLmFjdGl2ZU1vZHVsZVNpZ25hbCgpO1xuICAgICAgY29uc3QgYWN0aXZlRW50aXR5ID0gdGhpcy5hY3RpdmVFbnRpdHlTaWduYWwoKTtcbiAgICAgIHRoaXMuc2F2ZVRvTG9jYWxTdG9yYWdlKHtcbiAgICAgICAgdXNlcjogY3VycmVudFVzZXIsXG4gICAgICAgIGFjdGl2ZU1vZHVsZTogYWN0aXZlTW9kdWxlLFxuICAgICAgICBhY3RpdmVFbnRpdHk6IGFjdGl2ZUVudGl0eVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAvLyBMaXN0ZW4gZm9yIGxvY2FsU3RvcmFnZSBjaGFuZ2VzIGZyb20gb3RoZXIgdGFicy93aW5kb3dzXG4gICAgdGhpcy5zZXR1cFN0b3JhZ2VMaXN0ZW5lcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgY3VycmVudCB1c2VyXG4gICAqL1xuICBzZXRVc2VyKHVzZXI6IElVc2VyIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFVzZXJTaWduYWwuc2V0KHVzZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB1c2VyIGRhdGEgKHBhcnRpYWwgdXBkYXRlKVxuICAgKi9cbiAgdXBkYXRlVXNlcih1cGRhdGVzOiBQYXJ0aWFsPElVc2VyPik6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRVc2VyID0gdGhpcy5jdXJyZW50VXNlclNpZ25hbCgpO1xuICAgIGlmIChjdXJyZW50VXNlcikge1xuICAgICAgdGhpcy5jdXJyZW50VXNlclNpZ25hbC5zZXQoeyAuLi5jdXJyZW50VXNlciwgLi4udXBkYXRlcyB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgdXNlciBkYXRhXG4gICAqL1xuICBjbGVhclVzZXIoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50VXNlclNpZ25hbC5zZXQobnVsbCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGN1cnJlbnQgdXNlciB2YWx1ZSAobm9uLXJlYWN0aXZlKVxuICAgKi9cbiAgZ2V0VXNlclZhbHVlKCk6IElVc2VyIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFVzZXJTaWduYWwoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGFjdGl2ZSBtb2R1bGVcbiAgICovXG4gIHNldEFjdGl2ZU1vZHVsZShtb2R1bGU6IG1lbnVSZXNwb25zZURhdGEgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVNb2R1bGVTaWduYWwuc2V0KG1vZHVsZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFjdGl2ZSBtb2R1bGUgdmFsdWUgKG5vbi1yZWFjdGl2ZSlcbiAgICovXG4gIGdldEFjdGl2ZU1vZHVsZVZhbHVlKCk6IG1lbnVSZXNwb25zZURhdGEgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVNb2R1bGVTaWduYWwoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGFjdGl2ZSBlbnRpdHlcbiAgICovXG4gIHNldEFjdGl2ZUVudGl0eShlbnRpdHk6IElDb3JlU3llbiB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZUVudGl0eVNpZ25hbC5zZXQoZW50aXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWN0aXZlIGVudGl0eSB2YWx1ZSAobm9uLXJlYWN0aXZlKVxuICAgKi9cbiAgZ2V0QWN0aXZlRW50aXR5VmFsdWUoKTogSUNvcmVTeWVuIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlRW50aXR5U2lnbmFsKCk7XG4gIH1cblxuICAvKipcbiAgICogTWFudWFsbHkgcmVmcmVzaCBzdGF0ZSBmcm9tIGxvY2FsU3RvcmFnZVxuICAgKiBDYWxsIHRoaXMgbWV0aG9kIHdoZW4geW91IG5lZWQgdG8gc3luYyB3aXRoIGV4dGVybmFsIGxvY2FsU3RvcmFnZSBjaGFuZ2VzXG4gICAqL1xuICByZWZyZXNoRnJvbUxvY2FsU3RvcmFnZSgpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRGcm9tTG9jYWxTdG9yYWdlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgbG9jYWxTdG9yYWdlIGlzIGF2YWlsYWJsZSAoYnJvd3NlciBlbnZpcm9ubWVudClcbiAgICovXG4gIHByaXZhdGUgaXNMb2NhbFN0b3JhZ2VBdmFpbGFibGUoKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgbG9jYWxTdG9yYWdlICE9PSAndW5kZWZpbmVkJztcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSBzdGF0ZSB0byBsb2NhbFN0b3JhZ2VcbiAgICovXG4gIHByaXZhdGUgc2F2ZVRvTG9jYWxTdG9yYWdlKGRhdGE6IHtcbiAgICB1c2VyPzogSVVzZXIgfCBudWxsO1xuICAgIGFjdGl2ZU1vZHVsZT86IG1lbnVSZXNwb25zZURhdGEgfCBudWxsO1xuICAgIGFjdGl2ZUVudGl0eT86IElDb3JlU3llbiB8IG51bGw7XG4gIH0pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNMb2NhbFN0b3JhZ2VBdmFpbGFibGUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBpZiAoZGF0YS51c2VyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKGRhdGEudXNlcikge1xuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjaWRlX2F1dGhfdXNlcicsIEpTT04uc3RyaW5naWZ5KGRhdGEudXNlcikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdjaWRlX2F1dGhfdXNlcicpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmFjdGl2ZU1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChkYXRhLmFjdGl2ZU1vZHVsZSkge1xuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjaWRlX2FjdGl2ZV9tb2R1bGUnLCBKU09OLnN0cmluZ2lmeShkYXRhLmFjdGl2ZU1vZHVsZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdjaWRlX2FjdGl2ZV9tb2R1bGUnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5hY3RpdmVFbnRpdHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoZGF0YS5hY3RpdmVFbnRpdHkpIHtcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY2lkZV9hY3RpdmVfZW50aXR5JywgSlNPTi5zdHJpbmdpZnkoZGF0YS5hY3RpdmVFbnRpdHkpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnY2lkZV9hY3RpdmVfZW50aXR5Jyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igc2F2aW5nIHRvIGxvY2FsU3RvcmFnZTonLCBlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgc3RhdGUgZnJvbSBsb2NhbFN0b3JhZ2VcbiAgICovXG4gIHByaXZhdGUgbG9hZEZyb21Mb2NhbFN0b3JhZ2UoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzTG9jYWxTdG9yYWdlQXZhaWxhYmxlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdXNlckRhdGEgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY2lkZV9hdXRoX3VzZXInKTtcbiAgICAgIGlmICh1c2VyRGF0YSkge1xuICAgICAgICBjb25zdCB1c2VyID0gSlNPTi5wYXJzZSh1c2VyRGF0YSkgYXMgSVVzZXI7XG4gICAgICAgIHRoaXMuY3VycmVudFVzZXJTaWduYWwuc2V0KHVzZXIpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtb2R1bGVEYXRhID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2NpZGVfYWN0aXZlX21vZHVsZScpO1xuICAgICAgaWYgKG1vZHVsZURhdGEpIHtcbiAgICAgICAgY29uc3QgbW9kdWxlID0gSlNPTi5wYXJzZShtb2R1bGVEYXRhKSBhcyBtZW51UmVzcG9uc2VEYXRhO1xuICAgICAgICB0aGlzLmFjdGl2ZU1vZHVsZVNpZ25hbC5zZXQobW9kdWxlKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZW50aXR5RGF0YSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjaWRlX2FjdGl2ZV9lbnRpdHknKTtcbiAgICAgIGlmIChlbnRpdHlEYXRhKSB7XG4gICAgICAgIGNvbnN0IGVudGl0eSA9IEpTT04ucGFyc2UoZW50aXR5RGF0YSkgYXMgSUNvcmVTeWVuO1xuICAgICAgICB0aGlzLmFjdGl2ZUVudGl0eVNpZ25hbC5zZXQoZW50aXR5KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyBmcm9tIGxvY2FsU3RvcmFnZTonLCBlcnJvcik7XG4gICAgICAvLyBDbGVhciBjb3JydXB0ZWQgZGF0YVxuICAgICAgaWYgKHRoaXMuaXNMb2NhbFN0b3JhZ2VBdmFpbGFibGUoKSkge1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnY2lkZV9hdXRoX3VzZXInKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2NpZGVfYWN0aXZlX21vZHVsZScpO1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnY2lkZV9hY3RpdmVfZW50aXR5Jyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHVwIHN0b3JhZ2UgZXZlbnQgbGlzdGVuZXIgdG8gaGFuZGxlIGV4dGVybmFsIGxvY2FsU3RvcmFnZSBjaGFuZ2VzXG4gICAqL1xuICBwcml2YXRlIHNldHVwU3RvcmFnZUxpc3RlbmVyKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0xvY2FsU3RvcmFnZUF2YWlsYWJsZSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTGlzdGVuIGZvciBzdG9yYWdlIGV2ZW50cyAodHJpZ2dlcmVkIHdoZW4gbG9jYWxTdG9yYWdlIGlzIG1vZGlmaWVkIGZyb20gb3RoZXIgdGFicy93aW5kb3dzKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzdG9yYWdlJywgKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoIWV2ZW50LmtleSkgcmV0dXJuO1xuXG4gICAgICB0cnkge1xuICAgICAgICAvLyBIYW5kbGUgdXNlciBkYXRhIGNoYW5nZXNcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ2NpZGVfYXV0aF91c2VyJykge1xuICAgICAgICAgIGlmIChldmVudC5uZXdWYWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgdXNlciA9IEpTT04ucGFyc2UoZXZlbnQubmV3VmFsdWUpIGFzIElVc2VyO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50VXNlclNpZ25hbC5zZXQodXNlcik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFVzZXJTaWduYWwuc2V0KG51bGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhhbmRsZSBhY3RpdmUgbW9kdWxlIGNoYW5nZXNcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ2NpZGVfYWN0aXZlX21vZHVsZScpIHtcbiAgICAgICAgICBpZiAoZXZlbnQubmV3VmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IG1vZHVsZSA9IEpTT04ucGFyc2UoZXZlbnQubmV3VmFsdWUpIGFzIG1lbnVSZXNwb25zZURhdGE7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZU1vZHVsZVNpZ25hbC5zZXQobW9kdWxlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVNb2R1bGVTaWduYWwuc2V0KG51bGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhhbmRsZSBhY3RpdmUgZW50aXR5IGNoYW5nZXNcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ2NpZGVfYWN0aXZlX2VudGl0eScpIHtcbiAgICAgICAgICBpZiAoZXZlbnQubmV3VmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGVudGl0eSA9IEpTT04ucGFyc2UoZXZlbnQubmV3VmFsdWUpIGFzIElDb3JlU3llbjtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRW50aXR5U2lnbmFsLnNldChlbnRpdHkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUVudGl0eVNpZ25hbC5zZXQobnVsbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIGxvY2FsU3RvcmFnZSB1cGRhdGU6JywgZXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59ICJdfQ==
@@ -1,3 +0,0 @@
1
- export { AppStateService } from './app-state.service';
2
- export { AppStateHelperService } from './app-state-helper.service';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbG91ZC1pZGUtbGF5b3V0L3NyYy9saWIvc2VydmljZXMvYXBwLXN0YXRlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEFwcFN0YXRlU2VydmljZSB9IGZyb20gJy4vYXBwLXN0YXRlLnNlcnZpY2UnO1xyXG5leHBvcnQgeyBBcHBTdGF0ZUhlbHBlclNlcnZpY2UgfSBmcm9tICcuL2FwcC1zdGF0ZS1oZWxwZXIuc2VydmljZSc7XHJcbmV4cG9ydCB0eXBlIHsgQXBwU3RhdGUgfSBmcm9tICcuL2FwcC1zdGF0ZS5zZXJ2aWNlJzsgIl19