http-request-manager 18.3.3 → 18.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +478 -255
- package/esm2022/lib/http-request-manager.module.mjs +20 -47
- package/esm2022/lib/http-request-services-demo/database-data-demo/database-data-demo.component.mjs +113 -32
- package/esm2022/lib/http-request-services-demo/http-request-services-demo.component.mjs +11 -8
- package/esm2022/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.mjs +3 -6
- package/esm2022/lib/http-request-services-demo/request-manager-ws-demo/models/oidc-client.model.mjs +13 -0
- package/esm2022/lib/http-request-services-demo/request-manager-ws-demo/models/user-data.model.mjs +13 -0
- package/esm2022/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.mjs +128 -0
- package/esm2022/lib/http-request-services-demo/request-manager-ws-demo/services/state-request.service.mjs +74 -0
- package/esm2022/lib/http-request-services-demo/store-state-manager-demo/services/settings-state.service.mjs +4 -1
- package/esm2022/lib/interceptors/index.mjs +2 -2
- package/esm2022/lib/interceptors/models/index.mjs +2 -0
- package/esm2022/lib/models/database-storage.model.mjs +1 -1
- package/esm2022/lib/models/index.mjs +2 -1
- package/esm2022/lib/services/database-manager-service/database.manager.service.mjs +171 -0
- package/esm2022/lib/services/database-manager-service/db.storage.service.mjs +183 -0
- package/esm2022/lib/services/database-manager-service/index.mjs +4 -0
- package/esm2022/lib/services/database-manager-service/models/index.mjs +2 -0
- package/esm2022/lib/services/database-manager-service/models/table-schema.mjs +19 -0
- package/esm2022/lib/services/index.mjs +3 -2
- package/esm2022/lib/services/local-storage-manager-service/index.mjs +2 -2
- package/esm2022/lib/services/local-storage-manager-service/local-storage-manager.service.mjs +7 -1
- package/esm2022/lib/services/local-storage-manager-service/models/storage-option.model.mjs +4 -3
- package/esm2022/lib/services/request-manager-services/index.mjs +3 -2
- package/esm2022/lib/services/request-manager-services/request.service.mjs +2 -2
- package/esm2022/lib/services/request-manager-state-service/http-manager-state.store.mjs +272 -84
- package/esm2022/lib/services/request-manager-state-service/models/index.mjs +2 -1
- package/esm2022/lib/services/request-manager-state-service/models/ws-options.model.mjs +6 -3
- package/esm2022/lib/services/request-manager-state-service/models/ws-user.model.mjs +10 -0
- package/esm2022/lib/services/store-state-manager-service/store-state-manager.service.mjs +4 -4
- package/esm2022/lib/services/utils/utils.service.mjs +14 -14
- package/esm2022/lib/services/ws-manager-service/index.mjs +2 -2
- package/esm2022/lib/services/ws-manager-service/models/channel-notification.model.mjs +5 -3
- package/esm2022/lib/services/ws-manager-service/models/communication-type.enum.mjs +7 -0
- package/esm2022/lib/services/ws-manager-service/models/index.mjs +2 -3
- package/esm2022/lib/services/ws-manager-service/models/user-message.model.mjs +1 -1
- package/esm2022/lib/services/ws-manager-service/services/websocket.service.mjs +178 -0
- package/fesm2022/http-request-manager.mjs +2344 -1758
- package/fesm2022/http-request-manager.mjs.map +1 -1
- package/http-request-manager-18.4.1.tgz +0 -0
- package/lib/http-request-manager.module.d.ts +25 -22
- package/lib/http-request-services-demo/database-data-demo/database-data-demo.component.d.ts +39 -12
- package/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.d.ts +0 -1
- package/lib/http-request-services-demo/request-manager-ws-demo/models/oidc-client.model.d.ts +16 -0
- package/lib/http-request-services-demo/request-manager-ws-demo/models/user-data.model.d.ts +14 -0
- package/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.d.ts +39 -0
- package/lib/http-request-services-demo/request-manager-ws-demo/services/state-request.service.d.ts +14 -0
- package/lib/http-request-services-demo/store-state-manager-demo/services/settings-state.service.d.ts +1 -0
- package/lib/interceptors/index.d.ts +1 -1
- package/lib/interceptors/models/index.d.ts +1 -0
- package/lib/models/index.d.ts +1 -0
- package/lib/services/{database-manager-services → database-manager-service}/database.manager.service.d.ts +9 -7
- package/lib/services/{database-manager-services → database-manager-service}/db.storage.service.d.ts +14 -14
- package/lib/services/{database-manager-services → database-manager-service}/index.d.ts +1 -1
- package/lib/services/database-manager-service/models/index.d.ts +1 -0
- package/lib/services/index.d.ts +2 -1
- package/lib/services/local-storage-manager-service/index.d.ts +1 -1
- package/lib/services/local-storage-manager-service/models/storage-option.model.d.ts +3 -1
- package/lib/services/request-manager-services/index.d.ts +2 -0
- package/lib/services/request-manager-services/request.service.d.ts +1 -1
- package/lib/services/request-manager-state-service/http-manager-state.store.d.ts +34 -19
- package/lib/services/request-manager-state-service/models/index.d.ts +1 -0
- package/lib/services/request-manager-state-service/models/ws-options.model.d.ts +9 -1
- package/lib/services/request-manager-state-service/models/ws-user.model.d.ts +10 -0
- package/lib/services/store-state-manager-service/store-state-manager.service.d.ts +3 -2
- package/lib/services/ws-manager-service/index.d.ts +1 -1
- package/lib/services/ws-manager-service/models/channel-notification.model.d.ts +4 -1
- package/lib/services/ws-manager-service/models/communication-type.enum.d.ts +5 -0
- package/lib/services/ws-manager-service/models/index.d.ts +1 -2
- package/lib/services/ws-manager-service/models/user-message.model.d.ts +5 -6
- package/lib/services/ws-manager-service/{websocket.service.d.ts → services/websocket.service.d.ts} +5 -2
- package/package.json +1 -1
- package/esm2022/lib/services/database-manager-services/database.manager.service.mjs +0 -119
- package/esm2022/lib/services/database-manager-services/db.storage.service.mjs +0 -143
- package/esm2022/lib/services/database-manager-services/index.mjs +0 -4
- package/esm2022/lib/services/database-manager-services/models/table-schema.mjs +0 -20
- package/esm2022/lib/services/ws-manager-service/models/user-info.model.mjs +0 -11
- package/esm2022/lib/services/ws-manager-service/models/user-name-info.model.mjs +0 -12
- package/esm2022/lib/services/ws-manager-service/websocket.service.mjs +0 -133
- package/http-request-manager-18.3.3.tgz +0 -0
- package/lib/services/ws-manager-service/models/user-info.model.d.ts +0 -11
- package/lib/services/ws-manager-service/models/user-name-info.model.d.ts +0 -14
- /package/lib/services/{database-manager-services → database-manager-service}/models/table-schema.d.ts +0 -0
|
@@ -2,10 +2,6 @@ import { HTTP_INTERCEPTORS } from '@angular/common/http';
|
|
|
2
2
|
import { NgModule } from '@angular/core';
|
|
3
3
|
import { WithCredentialsInterceptor, RequestHeadersInterceptor } from './interceptors';
|
|
4
4
|
import { TranslateModule } from '@ngx-translate/core';
|
|
5
|
-
import { RequestManagerDemoComponent } from './http-request-services-demo/request-manager-demo/request-manager-demo.component';
|
|
6
|
-
import { RequestManagerStateDemoComponent } from './http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component';
|
|
7
|
-
import { LocalStorageDemoComponent } from './http-request-services-demo/local-storage-demo/local-storage-demo.component';
|
|
8
|
-
// import { DatabaseDataDemoComponent } from './global-data-demo/database-data-demo/database-data-demo.component';
|
|
9
5
|
import { CommonModule } from '@angular/common';
|
|
10
6
|
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
11
7
|
import { MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
@@ -24,17 +20,21 @@ import { MatToolbarModule } from '@angular/material/toolbar';
|
|
|
24
20
|
import { MatTableModule } from '@angular/material/table';
|
|
25
21
|
import { MatButtonToggleModule } from '@angular/material/button-toggle';
|
|
26
22
|
import { ProxyDebuggerInterceptor } from './interceptors/proxy-debugger.interceptor';
|
|
27
|
-
import { HttpRequestServicesDemoComponent } from './http-request-services-demo/http-request-services-demo.component';
|
|
28
|
-
import { RequestSignalsManagerDemoComponent } from './http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component';
|
|
29
23
|
import { ConfigOptions } from './models';
|
|
30
24
|
import { CONFIG_SETTINGS_TOKEN } from './models/config-token.model';
|
|
31
25
|
import { HTTPManagerService, LocalStorageManagerService } from './services';
|
|
32
26
|
import { FileDownloaderModule } from './http-request-services-demo/request-manager-demo/file-downloader/file-download.module';
|
|
33
|
-
import { LocalStorageSignalsDemoComponent } from './http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component';
|
|
34
27
|
import { ToastMessageDisplayModule } from 'toast-message-display';
|
|
28
|
+
import { MatTabsModule } from '@angular/material/tabs';
|
|
29
|
+
import { DatabaseDataDemoComponent, HttpRequestServicesDemoComponent, LocalStorageDemoComponent, RequestManagerDemoComponent, RequestManagerStateDemoComponent } from '../public-api';
|
|
30
|
+
import { LocalStorageSignalsDemoComponent } from './http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component';
|
|
31
|
+
import { RequestManagerWsDemoComponent } from './http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component';
|
|
32
|
+
import { RequestSignalsManagerDemoComponent } from './http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component';
|
|
35
33
|
import { StoreStateManagerDemoComponent } from './http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component';
|
|
36
34
|
import * as i0 from "@angular/core";
|
|
37
35
|
import * as i1 from "@ngx-translate/core";
|
|
36
|
+
// import { MessengerChatModule } from 'src/app/components/messenger-chat/messenger-chat.module';
|
|
37
|
+
// import { StoreStateManagerModule } from "src/app/beta_components/store-state-manager/store-state-manager.module";
|
|
38
38
|
export class HttpRequestManagerModule {
|
|
39
39
|
static forRoot(config = ConfigOptions.adapt()) {
|
|
40
40
|
return {
|
|
@@ -52,11 +52,14 @@ export class HttpRequestManagerModule {
|
|
|
52
52
|
RequestSignalsManagerDemoComponent,
|
|
53
53
|
LocalStorageDemoComponent,
|
|
54
54
|
LocalStorageSignalsDemoComponent,
|
|
55
|
-
|
|
55
|
+
RequestManagerWsDemoComponent,
|
|
56
|
+
StoreStateManagerDemoComponent,
|
|
57
|
+
DatabaseDataDemoComponent], imports: [CommonModule,
|
|
56
58
|
ToastMessageDisplayModule,
|
|
57
59
|
FormsModule,
|
|
58
60
|
ReactiveFormsModule,
|
|
59
61
|
MatButtonModule,
|
|
62
|
+
MatTabsModule,
|
|
60
63
|
MatSelectModule,
|
|
61
64
|
MatChipsModule,
|
|
62
65
|
MatMenuModule,
|
|
@@ -71,19 +74,7 @@ export class HttpRequestManagerModule {
|
|
|
71
74
|
MatInputModule,
|
|
72
75
|
MatToolbarModule,
|
|
73
76
|
MatSlideToggleModule, i1.TranslateModule, MatSidenavModule,
|
|
74
|
-
FileDownloaderModule], exports: [HttpRequestServicesDemoComponent
|
|
75
|
-
// Re-export commonly used modules so demo component templates have access to
|
|
76
|
-
// Angular common pipes and Material components when the library is imported.
|
|
77
|
-
CommonModule,
|
|
78
|
-
MatButtonToggleModule,
|
|
79
|
-
MatFormFieldModule,
|
|
80
|
-
MatSelectModule,
|
|
81
|
-
MatInputModule,
|
|
82
|
-
MatIconModule,
|
|
83
|
-
MatTableModule,
|
|
84
|
-
MatSlideToggleModule,
|
|
85
|
-
MatProgressBarModule,
|
|
86
|
-
MatDividerModule] }); }
|
|
77
|
+
FileDownloaderModule], exports: [HttpRequestServicesDemoComponent] }); }
|
|
87
78
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpRequestManagerModule, providers: [
|
|
88
79
|
{ provide: HTTP_INTERCEPTORS, useClass: WithCredentialsInterceptor, multi: true },
|
|
89
80
|
{ provide: HTTP_INTERCEPTORS, useClass: RequestHeadersInterceptor, multi: true },
|
|
@@ -95,6 +86,7 @@ export class HttpRequestManagerModule {
|
|
|
95
86
|
FormsModule,
|
|
96
87
|
ReactiveFormsModule,
|
|
97
88
|
MatButtonModule,
|
|
89
|
+
MatTabsModule,
|
|
98
90
|
MatSelectModule,
|
|
99
91
|
MatChipsModule,
|
|
100
92
|
MatMenuModule,
|
|
@@ -111,19 +103,7 @@ export class HttpRequestManagerModule {
|
|
|
111
103
|
MatSlideToggleModule,
|
|
112
104
|
TranslateModule.forRoot(),
|
|
113
105
|
MatSidenavModule,
|
|
114
|
-
FileDownloaderModule
|
|
115
|
-
// Re-export commonly used modules so demo component templates have access to
|
|
116
|
-
// Angular common pipes and Material components when the library is imported.
|
|
117
|
-
CommonModule,
|
|
118
|
-
MatButtonToggleModule,
|
|
119
|
-
MatFormFieldModule,
|
|
120
|
-
MatSelectModule,
|
|
121
|
-
MatInputModule,
|
|
122
|
-
MatIconModule,
|
|
123
|
-
MatTableModule,
|
|
124
|
-
MatSlideToggleModule,
|
|
125
|
-
MatProgressBarModule,
|
|
126
|
-
MatDividerModule] }); }
|
|
106
|
+
FileDownloaderModule] }); }
|
|
127
107
|
}
|
|
128
108
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpRequestManagerModule, decorators: [{
|
|
129
109
|
type: NgModule,
|
|
@@ -134,6 +114,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
134
114
|
FormsModule,
|
|
135
115
|
ReactiveFormsModule,
|
|
136
116
|
MatButtonModule,
|
|
117
|
+
MatTabsModule,
|
|
137
118
|
MatSelectModule,
|
|
138
119
|
MatChipsModule,
|
|
139
120
|
MatMenuModule,
|
|
@@ -151,6 +132,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
151
132
|
TranslateModule.forRoot(),
|
|
152
133
|
MatSidenavModule,
|
|
153
134
|
FileDownloaderModule,
|
|
135
|
+
// MessengerChatModule,
|
|
136
|
+
// StoreStateManagerModule
|
|
154
137
|
],
|
|
155
138
|
declarations: [
|
|
156
139
|
HttpRequestServicesDemoComponent,
|
|
@@ -159,23 +142,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
159
142
|
RequestSignalsManagerDemoComponent,
|
|
160
143
|
LocalStorageDemoComponent,
|
|
161
144
|
LocalStorageSignalsDemoComponent,
|
|
145
|
+
RequestManagerWsDemoComponent,
|
|
162
146
|
StoreStateManagerDemoComponent,
|
|
147
|
+
DatabaseDataDemoComponent,
|
|
163
148
|
// DatabaseDataDemoComponent,
|
|
164
149
|
],
|
|
165
150
|
exports: [
|
|
166
151
|
HttpRequestServicesDemoComponent,
|
|
167
|
-
// Re-export commonly used modules so demo component templates have access to
|
|
168
|
-
// Angular common pipes and Material components when the library is imported.
|
|
169
|
-
CommonModule,
|
|
170
|
-
MatButtonToggleModule,
|
|
171
|
-
MatFormFieldModule,
|
|
172
|
-
MatSelectModule,
|
|
173
|
-
MatInputModule,
|
|
174
|
-
MatIconModule,
|
|
175
|
-
MatTableModule,
|
|
176
|
-
MatSlideToggleModule,
|
|
177
|
-
MatProgressBarModule,
|
|
178
|
-
MatDividerModule,
|
|
179
152
|
],
|
|
180
153
|
providers: [
|
|
181
154
|
{ provide: HTTP_INTERCEPTORS, useClass: WithCredentialsInterceptor, multi: true },
|
|
@@ -186,4 +159,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
186
159
|
],
|
|
187
160
|
}]
|
|
188
161
|
}] });
|
|
189
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1yZXF1ZXN0LW1hbmFnZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9odHRwLXJlcXVlc3QtbWFuYWdlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHOUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtGQUFrRixDQUFDO0FBQy9ILE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDhGQUE4RixDQUFDO0FBQ2hKLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhFQUE4RSxDQUFDO0FBQ3pILGtIQUFrSDtBQUVsSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxj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ekIsZ0JBQWdCO3dCQUNoQixvQkFBb0I7cUJBQ3JCO29CQUNELFlBQVksRUFBRTt3QkFDWixnQ0FBZ0M7d0JBQ2hDLGdDQUFnQzt3QkFDaEMsMkJBQTJCO3dCQUMzQixrQ0FBa0M7d0JBQ2xDLHlCQUF5Qjt3QkFDekIsZ0NBQWdDO3dCQUNoQyw4QkFBOEI7d0JBQzlCLDZCQUE2QjtxQkFDOUI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGdDQUFnQzt3QkFDaEMsNkVBQTZFO3dCQUM3RSw2RUFBNkU7d0JBQzdFLFlBQVk7d0JBQ1oscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGNBQWM7d0JBQ2Qsb0JBQW9CO3dCQUNwQixvQkFBb0I7d0JBQ3BCLGdCQUFnQjtxQkFDakI7b0JBQ0QsU0FBUyxFQUFFO3dCQUNULEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSwwQkFBMEIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO3dCQUNqRixFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUseUJBQXlCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTt3QkFDaEYsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7d0JBQy9FLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUMsS0FBSyxFQUFFLEVBQUU7d0JBQ25FLGtCQUFrQixFQUFFLDBCQUEwQjtxQkFDL0M7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIVFRQX0lOVEVSQ0VQVE9SUyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cblxuaW1wb3J0IHsgV2l0aENyZWRlbnRpYWxzSW50ZXJjZXB0b3IsIFJlcXVlc3RIZWFkZXJzSW50ZXJjZXB0b3IgfSBmcm9tICcuL2ludGVyY2VwdG9ycyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuaW1wb3J0IHsgUmVxdWVzdE1hbmFnZXJEZW1vQ29tcG9uZW50IH0gZnJvbSAnLi9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby9yZXF1ZXN0LW1hbmFnZXItZGVtby9yZXF1ZXN0LW1hbmFnZXItZGVtby5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVxdWVzdE1hbmFnZXJTdGF0ZURlbW9Db21wb25lbnQgfSBmcm9tICcuL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vL3JlcXVlc3QtbWFuYWdlci1zdGF0ZS1kZW1vL3JlcXVlc3QtbWFuYWdlci1zdGF0ZS1kZW1vLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VEZW1vQ29tcG9uZW50IH0gZnJvbSAnLi9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby9sb2NhbC1zdG9yYWdlLWRlbW8vbG9jYWwtc3RvcmFnZS1kZW1vLmNvbXBvbmVudCc7XG4vLyBpbXBvcnQgeyBEYXRhYmFzZURhdGFEZW1vQ29tcG9uZW50IH0gZnJvbSAnLi9nbG9iYWwtZGF0YS1kZW1vL2RhdGFiYXNlLWRhdGEtZGVtby9kYXRhYmFzZS1kYXRhLWRlbW8uY29tcG9uZW50JztcblxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdENoaXBzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdFByb2dyZXNzQmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBNYXRTaWRlbmF2TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZSc7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBNYXRUb29sYmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbGJhcic7XG5pbXBvcnQgeyBNYXRUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGUnO1xuaW1wb3J0IHsgUHJveHlEZWJ1Z2dlckludGVyY2VwdG9yIH0gZnJvbSAnLi9pbnRlcmNlcHRvcnMvcHJveHktZGVidWdnZXIuaW50ZXJjZXB0b3InO1xuXG5pbXBvcnQgeyBIdHRwUmVxdWVzdFNlcnZpY2VzRGVtb0NvbXBvbmVudCB9IGZyb20gJy4vaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8vaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8uY29tcG9uZW50JztcbmltcG9ydCB7IFJlcXVlc3RTaWduYWxzTWFuYWdlckRlbW9Db21wb25lbnQgfSBmcm9tICcuL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vL3JlcXVlc3Qtc2lnbmFscy1tYW5hZ2VyLWRlbW8vcmVxdWVzdC1zaWduYWxzLW1hbmFnZXItZGVtby5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBDb25maWdPcHRpb25zIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgQ09ORklHX1NFVFRJTkdTX1RPS0VOIH0gZnJvbSAnLi9tb2RlbHMvY29uZmlnLXRva2VuLm1vZGVsJztcbmltcG9ydCB7IEhUVFBNYW5hZ2VyU2VydmljZSwgTG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzJztcblxuaW1wb3J0IHsgRmlsZURvd25sb2FkZXJNb2R1bGUgfSBmcm9tICcuL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vL3JlcXVlc3QtbWFuYWdlci1kZW1vL2ZpbGUtZG93bmxvYWRlci9maWxlLWRvd25sb2FkLm1vZHVsZSc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VTaWduYWxzRGVtb0NvbXBvbmVudCB9IGZyb20gJy4vaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8vbG9jYWwtc3RvcmFnZS1zaWduYWxzLWRlbW8vbG9jYWwtc3RvcmFnZS1zaWduYWxzLWRlbW8uY29tcG9uZW50JztcbmltcG9ydCB7IFRvYXN0TWVzc2FnZURpc3BsYXlNb2R1bGUgfSBmcm9tICd0b2FzdC1tZXNzYWdlLWRpc3BsYXknO1xuaW1wb3J0IHsgU3RvcmVTdGF0ZU1hbmFnZXJEZW1vQ29tcG9uZW50IH0gZnJvbSAnLi9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby9zdG9yZS1zdGF0ZS1tYW5hZ2VyLWRlbW8vc3RvcmUtc3RhdGUtbWFuYWdlci1kZW1vLmNvbXBvbmVudCc7XG5cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUb2FzdE1lc3NhZ2VEaXNwbGF5TW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBNYXRDaGlwc01vZHVsZSxcbiAgICBNYXRNZW51TW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0VGFibGVNb2R1bGUsXG4gICAgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlLFxuICAgIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcbiAgICBNYXRQcm9ncmVzc0Jhck1vZHVsZSxcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcbiAgICBNYXREaXZpZGVyTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRUb29sYmFyTW9kdWxlLFxuICAgIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZS5mb3JSb290KCksXG4gICAgTWF0U2lkZW5hdk1vZHVsZSxcbiAgICBGaWxlRG93bmxvYWRlck1vZHVsZSxcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgSHR0cFJlcXVlc3RTZXJ2aWNlc0RlbW9Db21wb25lbnQsXG4gICAgUmVxdWVzdE1hbmFnZXJTdGF0ZURlbW9Db21wb25lbnQsXG4gICAgUmVxdWVzdE1hbmFnZXJEZW1vQ29tcG9uZW50LFxuICAgIFJlcXVlc3RTaWduYWxzTWFuYWdlckRlbW9Db21wb25lbnQsXG4gICAgTG9jYWxTdG9yYWdlRGVtb0NvbXBvbmVudCxcbiAgICBMb2NhbFN0b3JhZ2VTaWduYWxzRGVtb0NvbXBvbmVudCxcbiAgICBTdG9yZVN0YXRlTWFuYWdlckRlbW9Db21wb25lbnQsXG4gICAgLy8gRGF0YWJhc2VEYXRhRGVtb0NvbXBvbmVudCxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEh0dHBSZXF1ZXN0U2VydmljZXNEZW1vQ29tcG9uZW50LFxuICAgIC8vIFJlLWV4cG9ydCBjb21tb25seSB1c2VkIG1vZHVsZXMgc28gZGVtbyBjb21wb25lbnQgdGVtcGxhdGVzIGhhdmUgYWNjZXNzIHRvXG4gICAgLy8gQW5ndWxhciBjb21tb24gcGlwZXMgYW5kIE1hdGVyaWFsIGNvbXBvbmVudHMgd2hlbiB0aGUgbGlicmFyeSBpcyBpbXBvcnRlZC5cbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRUYWJsZU1vZHVsZSxcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcbiAgICBNYXRQcm9ncmVzc0Jhck1vZHVsZSxcbiAgICBNYXREaXZpZGVyTW9kdWxlLFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogV2l0aENyZWRlbnRpYWxzSW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlIH0sXG4gICAgeyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IFJlcXVlc3RIZWFkZXJzSW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlIH0sXG4gICAgeyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IFByb3h5RGVidWdnZXJJbnRlcmNlcHRvciwgbXVsdGk6IHRydWUgfSxcbiAgICB7IHByb3ZpZGU6IENPTkZJR19TRVRUSU5HU19UT0tFTiwgdXNlVmFsdWU6IENvbmZpZ09wdGlvbnMuYWRhcHQoKSB9LFxuICAgIEhUVFBNYW5hZ2VyU2VydmljZSwgTG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2VcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgSHR0cFJlcXVlc3RNYW5hZ2VyTW9kdWxlIHtcblxuICBzdGF0aWMgZm9yUm9vdChjb25maWc6IENvbmZpZ09wdGlvbnMgPSBDb25maWdPcHRpb25zLmFkYXB0KCkpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEh0dHBSZXF1ZXN0TWFuYWdlck1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogSHR0cFJlcXVlc3RNYW5hZ2VyTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogQ09ORklHX1NFVFRJTkdTX1RPS0VOLCB1c2VWYWx1ZTogQ29uZmlnT3B0aW9ucy5hZGFwdChjb25maWcpIH0sXG4gICAgICAgIEhUVFBNYW5hZ2VyU2VydmljZSwgTG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2UgLy9hbGwgc2VydmljZXMgdGhhdCBuZWVkIGFjY2VzcyB0byBjb25maWdcbiAgICAgIF0sXG4gICAgfTtcbiAgICB9XG5cbn1cblxuXG4iXX0=
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1yZXF1ZXN0LW1hbmFnZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9odHRwLXJlcXVlc3QtbWFuYWdlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHOUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBR3JGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTVFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdGQUF3RixDQUFDO0FBQzlILE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsZ0NBQWdDLEVBQUUseUJBQXlCLEVBQUUsMkJBQTJCLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdEwsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sOEZBQThGLENBQUM7QUFDaEosT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sd0ZBQXdGLENBQUM7QUFDdkksT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sa0dBQWtHLENBQUM7QUFDdEosT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sMEZBQTBGLENBQUM7OztBQUUxSSxpR0FBaUc7QUFDakcsb0hBQW9IO0FBc0RwSCxNQUFNLE9BQU8sd0JBQXdCO0lBRW5DLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBd0IsYUFBYSxDQUFDLEtBQUssRUFBRTtRQUMxRCxPQUFPO1lBQ0wsUUFBUSxFQUFFLHdCQUF3QjtZQUNsQyxTQUFTLEVBQUU7Z0JBQ1QsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3pFLGtCQUFrQixFQUFFLDBCQUEwQixDQUFDLHlDQUF5QzthQUN6RjtTQUNGLENBQUM7SUFDRixDQUFDOytHQVZRLHdCQUF3QjtnSEFBeEIsd0JBQXdCLGlCQXRCakMsZ0NBQWdDO1lBQ2hDLGdDQUFnQztZQUNoQywyQkFBMkI7WUFDM0Isa0NBQWtDO1lBQ2xDLHlCQUF5QjtZQUN6QixnQ0FBZ0M7WUFDaEMsNkJBQTZCO1lBQzdCLDhCQUE4QjtZQUM5Qix5QkFBeUIsYUFuQ3pCLFlBQVk7WUFDWix5QkFBeUI7WUFDekIsV0FBVztZQUNYLG1CQUFtQjtZQUNuQixlQUFlO1lBQ2YsYUFBYTtZQUNiLGVBQWU7WUFDZixjQUFjO1lBQ2QsYUFBYTtZQUNiLGFBQWE7WUFDYixjQUFjO1lBQ2QscUJBQXFCO1lBQ3JCLHFCQUFxQjtZQUNyQixvQkFBb0I7WUFDcEIsb0JBQW9CO1lBQ3BCLGdCQUFnQjtZQUNoQixrQkFBa0I7WUFDbEIsY0FBYztZQUNkLGdCQUFnQjtZQUNoQixvQkFBb0Isc0JBRXBCLGdCQUFnQjtZQUNoQixvQkFBb0IsYUFpQnBCLGdDQUFnQztnSEFVdkIsd0JBQXdCLGFBUnhCO1lBQ1QsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLDBCQUEwQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7WUFDakYsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLHlCQUF5QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7WUFDaEYsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7WUFDL0UsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuRSxrQkFBa0IsRUFBRSwwQkFBMEI7U0FDL0MsWUEvQ0MsWUFBWTtZQUNaLHlCQUF5QjtZQUN6QixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGVBQWU7WUFDZixhQUFhO1lBQ2IsZUFBZTtZQUNmLGNBQWM7WUFDZCxhQUFhO1lBQ2IsYUFBYTtZQUNiLGNBQWM7WUFDZCxxQkFBcUI7WUFDckIscUJBQXFCO1lBQ3JCLG9CQUFvQjtZQUNwQixvQkFBb0I7WUFDcEIsZ0JBQWdCO1lBQ2hCLGtCQUFrQjtZQUNsQixjQUFjO1lBQ2QsZ0JBQWdCO1lBQ2hCLG9CQUFvQjtZQUNwQixlQUFlLENBQUMsT0FBTyxFQUFFO1lBQ3pCLGdCQUFnQjtZQUNoQixvQkFBb0I7OzRGQTJCWCx3QkFBd0I7a0JBbkRwQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLHlCQUF5Qjt3QkFDekIsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixhQUFhO3dCQUNiLGNBQWM7d0JBQ2QscUJBQXFCO3dCQUNyQixxQkFBcUI7d0JBQ3JCLG9CQUFvQjt3QkFDcEIsb0JBQW9CO3dCQUNwQixnQkFBZ0I7d0JBQ2hCLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLG9CQUFvQjt3QkFDcEIsZUFBZSxDQUFDLE9BQU8sRUFBRTt3QkFDekIsZ0JBQWdCO3dCQUNoQixvQkFBb0I7d0JBQ3BCLHVCQUF1Qjt3QkFDdkIsMEJBQTBCO3FCQUM3QjtvQkFDQyxZQUFZLEVBQUU7d0JBQ1osZ0NBQWdDO3dCQUNoQyxnQ0FBZ0M7d0JBQ2hDLDJCQUEyQjt3QkFDM0Isa0NBQWtDO3dCQUNsQyx5QkFBeUI7d0JBQ3pCLGdDQUFnQzt3QkFDaEMsNkJBQTZCO3dCQUM3Qiw4QkFBOEI7d0JBQzlCLHlCQUF5Qjt3QkFDekIsNkJBQTZCO3FCQUM5QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsZ0NBQWdDO3FCQUNqQztvQkFDRCxTQUFTLEVBQUU7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLDBCQUEwQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7d0JBQ2pGLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSx5QkFBeUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO3dCQUNoRixFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTt3QkFDL0UsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsRUFBRTt3QkFDbkUsa0JBQWtCLEVBQUUsMEJBQTBCO3FCQUMvQztpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhUVFBfSU5URVJDRVBUT1JTIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuXG5pbXBvcnQgeyBXaXRoQ3JlZGVudGlhbHNJbnRlcmNlcHRvciwgUmVxdWVzdEhlYWRlcnNJbnRlcmNlcHRvciB9IGZyb20gJy4vaW50ZXJjZXB0b3JzJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Q2hpcHNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XG5pbXBvcnQgeyBNYXREaXZpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlcic7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IE1hdFNpZGVuYXZNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcbmltcG9ydCB7IE1hdFNsaWRlVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IE1hdFRvb2xiYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sYmFyJztcbmltcG9ydCB7IE1hdFRhYmxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZSc7XG5pbXBvcnQgeyBQcm94eURlYnVnZ2VySW50ZXJjZXB0b3IgfSBmcm9tICcuL2ludGVyY2VwdG9ycy9wcm94eS1kZWJ1Z2dlci5pbnRlcmNlcHRvcic7XG5cblxuaW1wb3J0IHsgQ29uZmlnT3B0aW9ucyB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IENPTkZJR19TRVRUSU5HU19UT0tFTiB9IGZyb20gJy4vbW9kZWxzL2NvbmZpZy10b2tlbi5tb2RlbCc7XG5pbXBvcnQgeyBIVFRQTWFuYWdlclNlcnZpY2UsIExvY2FsU3RvcmFnZU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcyc7XG5cbmltcG9ydCB7IEZpbGVEb3dubG9hZGVyTW9kdWxlIH0gZnJvbSAnLi9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby9yZXF1ZXN0LW1hbmFnZXItZGVtby9maWxlLWRvd25sb2FkZXIvZmlsZS1kb3dubG9hZC5tb2R1bGUnO1xuaW1wb3J0IHsgVG9hc3RNZXNzYWdlRGlzcGxheU1vZHVsZSB9IGZyb20gJ3RvYXN0LW1lc3NhZ2UtZGlzcGxheSc7XG5pbXBvcnQgeyBNYXRUYWJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5cbmltcG9ydCB7IERhdGFiYXNlRGF0YURlbW9Db21wb25lbnQsIEh0dHBSZXF1ZXN0U2VydmljZXNEZW1vQ29tcG9uZW50LCBMb2NhbFN0b3JhZ2VEZW1vQ29tcG9uZW50LCBSZXF1ZXN0TWFuYWdlckRlbW9Db21wb25lbnQsIFJlcXVlc3RNYW5hZ2VyU3RhdGVEZW1vQ29tcG9uZW50IH0gZnJvbSAnLi4vcHVibGljLWFwaSc7XG5cbmltcG9ydCB7IExvY2FsU3RvcmFnZVNpZ25hbHNEZW1vQ29tcG9uZW50IH0gZnJvbSAnLi9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby9sb2NhbC1zdG9yYWdlLXNpZ25hbHMtZGVtby9sb2NhbC1zdG9yYWdlLXNpZ25hbHMtZGVtby5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVxdWVzdE1hbmFnZXJXc0RlbW9Db21wb25lbnQgfSBmcm9tICcuL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vL3JlcXVlc3QtbWFuYWdlci13cy1kZW1vL3JlcXVlc3QtbWFuYWdlci13cy1kZW1vLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZXF1ZXN0U2lnbmFsc01hbmFnZXJEZW1vQ29tcG9uZW50IH0gZnJvbSAnLi9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby9yZXF1ZXN0LXNpZ25hbHMtbWFuYWdlci1kZW1vL3JlcXVlc3Qtc2lnbmFscy1tYW5hZ2VyLWRlbW8uY29tcG9uZW50JztcbmltcG9ydCB7IFN0b3JlU3RhdGVNYW5hZ2VyRGVtb0NvbXBvbmVudCB9IGZyb20gJy4vaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8vc3RvcmUtc3RhdGUtbWFuYWdlci1kZW1vL3N0b3JlLXN0YXRlLW1hbmFnZXItZGVtby5jb21wb25lbnQnO1xuXG4vLyBpbXBvcnQgeyBNZXNzZW5nZXJDaGF0TW9kdWxlIH0gZnJvbSAnc3JjL2FwcC9jb21wb25lbnRzL21lc3Nlbmdlci1jaGF0L21lc3Nlbmdlci1jaGF0Lm1vZHVsZSc7XG4vLyBpbXBvcnQgeyBTdG9yZVN0YXRlTWFuYWdlck1vZHVsZSB9IGZyb20gXCJzcmMvYXBwL2JldGFfY29tcG9uZW50cy9zdG9yZS1zdGF0ZS1tYW5hZ2VyL3N0b3JlLXN0YXRlLW1hbmFnZXIubW9kdWxlXCI7XG5cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUb2FzdE1lc3NhZ2VEaXNwbGF5TW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdFRhYnNNb2R1bGUsXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxuICAgIE1hdENoaXBzTW9kdWxlLFxuICAgIE1hdE1lbnVNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRUYWJsZU1vZHVsZSxcbiAgICBNYXRCdXR0b25Ub2dnbGVNb2R1bGUsXG4gICAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuICAgIE1hdFByb2dyZXNzQmFyTW9kdWxlLFxuICAgIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLFxuICAgIE1hdERpdmlkZXJNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdFRvb2xiYXJNb2R1bGUsXG4gICAgTWF0U2xpZGVUb2dnbGVNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLmZvclJvb3QoKSxcbiAgICBNYXRTaWRlbmF2TW9kdWxlLFxuICAgIEZpbGVEb3dubG9hZGVyTW9kdWxlLFxuICAgIC8vIE1lc3NlbmdlckNoYXRNb2R1bGUsXG4gICAgLy8gU3RvcmVTdGF0ZU1hbmFnZXJNb2R1bGVcbl0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEh0dHBSZXF1ZXN0U2VydmljZXNEZW1vQ29tcG9uZW50LFxuICAgIFJlcXVlc3RNYW5hZ2VyU3RhdGVEZW1vQ29tcG9uZW50LFxuICAgIFJlcXVlc3RNYW5hZ2VyRGVtb0NvbXBvbmVudCxcbiAgICBSZXF1ZXN0U2lnbmFsc01hbmFnZXJEZW1vQ29tcG9uZW50LFxuICAgIExvY2FsU3RvcmFnZURlbW9Db21wb25lbnQsXG4gICAgTG9jYWxTdG9yYWdlU2lnbmFsc0RlbW9Db21wb25lbnQsXG4gICAgUmVxdWVzdE1hbmFnZXJXc0RlbW9Db21wb25lbnQsXG4gICAgU3RvcmVTdGF0ZU1hbmFnZXJEZW1vQ29tcG9uZW50LFxuICAgIERhdGFiYXNlRGF0YURlbW9Db21wb25lbnQsXG4gICAgLy8gRGF0YWJhc2VEYXRhRGVtb0NvbXBvbmVudCxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEh0dHBSZXF1ZXN0U2VydmljZXNEZW1vQ29tcG9uZW50LFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogV2l0aENyZWRlbnRpYWxzSW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlIH0sXG4gICAgeyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IFJlcXVlc3RIZWFkZXJzSW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlIH0sXG4gICAgeyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IFByb3h5RGVidWdnZXJJbnRlcmNlcHRvciwgbXVsdGk6IHRydWUgfSxcbiAgICB7IHByb3ZpZGU6IENPTkZJR19TRVRUSU5HU19UT0tFTiwgdXNlVmFsdWU6IENvbmZpZ09wdGlvbnMuYWRhcHQoKSB9LFxuICAgIEhUVFBNYW5hZ2VyU2VydmljZSwgTG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2VcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgSHR0cFJlcXVlc3RNYW5hZ2VyTW9kdWxlIHtcblxuICBzdGF0aWMgZm9yUm9vdChjb25maWc6IENvbmZpZ09wdGlvbnMgPSBDb25maWdPcHRpb25zLmFkYXB0KCkpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEh0dHBSZXF1ZXN0TWFuYWdlck1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogSHR0cFJlcXVlc3RNYW5hZ2VyTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogQ09ORklHX1NFVFRJTkdTX1RPS0VOLCB1c2VWYWx1ZTogQ29uZmlnT3B0aW9ucy5hZGFwdChjb25maWcpIH0sXG4gICAgICAgIEhUVFBNYW5hZ2VyU2VydmljZSwgTG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2UgLy9hbGwgc2VydmljZXMgdGhhdCBuZWVkIGFjY2VzcyB0byBjb25maWdcbiAgICAgIF0sXG4gICAgfTtcbiAgICB9XG5cbn1cblxuXG4iXX0=
|
package/esm2022/lib/http-request-services-demo/database-data-demo/database-data-demo.component.mjs
CHANGED
|
@@ -1,46 +1,99 @@
|
|
|
1
1
|
import { Component, inject } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { Subject, ReplaySubject } from 'rxjs';
|
|
3
|
+
import { tap } from 'rxjs/operators';
|
|
4
|
+
import { DataSource } from '@angular/cdk/collections';
|
|
5
|
+
import { TableSchemaDef } from '../../services/database-manager-service/models/table-schema';
|
|
6
|
+
import { DatabaseManagerService } from '../../services/database-manager-service';
|
|
4
7
|
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/material/button";
|
|
9
|
+
import * as i2 from "@angular/material/table";
|
|
10
|
+
import * as i3 from "@angular/common";
|
|
5
11
|
export class DatabaseDataDemoComponent {
|
|
6
12
|
constructor() {
|
|
7
13
|
this.db = inject(DatabaseManagerService);
|
|
14
|
+
this.destroy$ = new Subject();
|
|
15
|
+
this.dataToDisplay = [];
|
|
16
|
+
this.dataSource = new DatabaseDataSource(this.dataToDisplay);
|
|
17
|
+
this.displayedColumns = ['id', 'last_name', 'age', 'amount'];
|
|
18
|
+
this.names = ['Smith', 'Johnson', 'Williams', 'Brown', 'Jones', 'Garcia', 'Miller', 'Davis'];
|
|
19
|
+
}
|
|
20
|
+
ngOnDestroy() {
|
|
21
|
+
this.destroy$.next();
|
|
22
|
+
this.destroy$.complete();
|
|
23
|
+
}
|
|
24
|
+
addData() {
|
|
25
|
+
const newRecord = {
|
|
26
|
+
id: Math.max(...this.dataToDisplay.map(r => r.id), 0) + 1,
|
|
27
|
+
last_name: this.names[Math.floor(Math.random() * this.names.length)],
|
|
28
|
+
age: Math.floor(Math.random() * 80) + 18,
|
|
29
|
+
amount: Math.floor(Math.random() * 1000)
|
|
30
|
+
};
|
|
31
|
+
this.dataToDisplay = [...this.dataToDisplay, newRecord];
|
|
32
|
+
this.db.createTableRecord('sample_table', newRecord).subscribe(() => this.refreshData());
|
|
33
|
+
}
|
|
34
|
+
removeData() {
|
|
35
|
+
if (this.dataToDisplay.length > 0) {
|
|
36
|
+
const removedRecord = this.dataToDisplay[this.dataToDisplay.length - 1];
|
|
37
|
+
this.dataToDisplay = this.dataToDisplay.slice(0, -1);
|
|
38
|
+
this.db.deleteTableRecord('sample_table', removedRecord.id).subscribe(() => this.refreshData());
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
updateData() {
|
|
42
|
+
if (this.dataToDisplay.length === 0)
|
|
43
|
+
return;
|
|
44
|
+
const randomIndex = Math.floor(Math.random() * this.dataToDisplay.length);
|
|
45
|
+
const recordToUpdate = this.dataToDisplay[randomIndex];
|
|
46
|
+
const updatedRecord = {
|
|
47
|
+
...recordToUpdate,
|
|
48
|
+
last_name: this.names[Math.floor(Math.random() * this.names.length)],
|
|
49
|
+
age: Math.floor(Math.random() * 80) + 18,
|
|
50
|
+
amount: Math.floor(Math.random() * 1000)
|
|
51
|
+
};
|
|
52
|
+
this.dataToDisplay = this.dataToDisplay.map((r, index) => index === randomIndex ? updatedRecord : r);
|
|
53
|
+
this.db.updateTableRecord('sample_table', updatedRecord).subscribe(() => this.refreshData());
|
|
54
|
+
}
|
|
55
|
+
clearAllData() {
|
|
56
|
+
if (this.dataToDisplay.length === 0)
|
|
57
|
+
return;
|
|
58
|
+
const idsToDelete = this.dataToDisplay.map(r => r.id);
|
|
59
|
+
this.dataToDisplay = [];
|
|
60
|
+
this.db.deleteTableRecords('sample_table', idsToDelete).subscribe(() => this.refreshData());
|
|
61
|
+
}
|
|
62
|
+
refreshData() {
|
|
63
|
+
this.db.getTableRecords('sample_table').subscribe((records) => {
|
|
64
|
+
this.dataToDisplay = records || [];
|
|
65
|
+
this.dataSource.setData(this.dataToDisplay);
|
|
66
|
+
});
|
|
8
67
|
}
|
|
9
68
|
ngOnInit() {
|
|
10
|
-
const tableDef = TableSchemaDef.adapt({
|
|
11
|
-
|
|
12
|
-
|
|
69
|
+
const tableDef = TableSchemaDef.adapt({
|
|
70
|
+
table: 'sample_table',
|
|
71
|
+
schema: '++id, last_name, age, amount'
|
|
72
|
+
});
|
|
73
|
+
this.db.createDatabaseTable(tableDef).subscribe(() => {
|
|
74
|
+
console.log('Database Table Initialized');
|
|
13
75
|
// hasTable
|
|
14
|
-
this.db.hasDatabaseTable('
|
|
76
|
+
this.db.hasDatabaseTable('sample_table')
|
|
77
|
+
.subscribe(data => console.log('hasDatabaseTable:', data));
|
|
15
78
|
// Tables
|
|
16
|
-
this.db.getDatabaseTables()
|
|
79
|
+
this.db.getDatabaseTables()
|
|
80
|
+
.subscribe(data => console.log('getDatabaseTables:', data));
|
|
17
81
|
// getTable
|
|
18
|
-
this.db.getDatabaseTable('
|
|
82
|
+
this.db.getDatabaseTable('sample_table')
|
|
83
|
+
.subscribe(data => console.log('getDatabaseTable:', data));
|
|
19
84
|
// Table Schema
|
|
20
|
-
this.db.getDatabaseTableSchema('
|
|
21
|
-
|
|
22
|
-
// const newTableDef = TableSchemaDef.adapt({table: 'sample', schema: ['id', 'name', 'age', 'amount']})
|
|
23
|
-
// this.db.updateDatabaseTableSchema(newTableDef)
|
|
24
|
-
// Insert Table Record
|
|
25
|
-
const record = { id: 12, age: 45, last_name: 'Bonifacio', amount: 1200 };
|
|
26
|
-
this.db.createTableRecord('Sample Table', record).subscribe(data => console.log(data));
|
|
85
|
+
this.db.getDatabaseTableSchema('sample_table')
|
|
86
|
+
.subscribe(data => console.log('getDatabaseTableSchema:', data));
|
|
27
87
|
// Insert Table Records
|
|
28
88
|
const records = [
|
|
29
|
-
{ id:
|
|
30
|
-
{ id:
|
|
31
|
-
{ id:
|
|
32
|
-
{ id:
|
|
89
|
+
{ id: 1, age: 12, last_name: 'Bonifacio', amount: 80 },
|
|
90
|
+
{ id: 2, age: 15, last_name: 'Johns', amount: 700 },
|
|
91
|
+
{ id: 3, age: 22, last_name: 'Kims', amount: 234 },
|
|
92
|
+
{ id: 4, age: 45, last_name: 'Harrys', amount: 1200 },
|
|
33
93
|
];
|
|
34
|
-
this.db.createTableRecords('
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
this.db.createTableRecord('Sample Table', record).subscribe(data => console.log(data));
|
|
38
|
-
// Update Table Records
|
|
39
|
-
// const recordsUpdate = [
|
|
40
|
-
// { id: 12, age: 12, last_name: 'Bonifacio', amount: 5000 },
|
|
41
|
-
// { id: 10, age: 15, last_name: 'Johns', amount: 5000 },
|
|
42
|
-
// ]
|
|
43
|
-
// this.db.updateTableRecords('sample_table', records).subscribe(data => console.log(data))
|
|
94
|
+
this.db.createTableRecords('sample_table', records).subscribe(() => {
|
|
95
|
+
this.refreshData();
|
|
96
|
+
});
|
|
44
97
|
});
|
|
45
98
|
}
|
|
46
99
|
createTable(tableDef) {
|
|
@@ -48,24 +101,52 @@ export class DatabaseDataDemoComponent {
|
|
|
48
101
|
}
|
|
49
102
|
// CRUD
|
|
50
103
|
findTableRecords(table, column, value) {
|
|
104
|
+
return this.db.findTableRecords(table, column, value)
|
|
105
|
+
.pipe(tap((data) => console.log('findTableRecords:', data)));
|
|
51
106
|
}
|
|
52
107
|
findTableRecord(table, column, value) {
|
|
108
|
+
return this.db.findTableRecord(table, column, value)
|
|
109
|
+
.pipe(tap((data) => console.log('findTableRecord:', data)));
|
|
53
110
|
}
|
|
54
111
|
getTableRecords(table) {
|
|
112
|
+
return this.db.getTableRecords(table)
|
|
113
|
+
.pipe(tap((data) => console.log('getTableRecords:', data)));
|
|
55
114
|
}
|
|
56
115
|
getTableRecord(table, id) {
|
|
116
|
+
return this.db.getTableRecord(table, id)
|
|
117
|
+
.pipe(tap((data) => console.log('getTableRecord:', data)));
|
|
57
118
|
}
|
|
58
119
|
createTableRecord(table, record) {
|
|
120
|
+
return this.db.createTableRecord(table, record)
|
|
121
|
+
.pipe(tap((data) => console.log('createTableRecord:', data)));
|
|
59
122
|
}
|
|
60
123
|
updateTableRecord(table, record) {
|
|
124
|
+
return this.db.updateTableRecord(table, record)
|
|
125
|
+
.pipe(tap((data) => console.log('updateTableRecord:', data)));
|
|
61
126
|
}
|
|
62
127
|
deleteTableRecord(table, id) {
|
|
128
|
+
return this.db.deleteTableRecord(table, id)
|
|
129
|
+
.pipe(tap((data) => console.log('deleteTableRecord:', data)));
|
|
63
130
|
}
|
|
64
131
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DatabaseDataDemoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
65
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DatabaseDataDemoComponent, selector: "app-database-data-demo", ngImport: i0, template: "<
|
|
132
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DatabaseDataDemoComponent, selector: "app-database-data-demo", ngImport: i0, template: "<div style=\"padding: 2rem;\">\n\n <h2>\n Database Manager Service Demo\n </h2>\n\n <div style=\"margin-bottom: 1rem; display: flex; gap: 1rem;\">\n <button mat-stroked-button\n color=\"primary\"\n (click)=\"clearAllData()\"\n >\n Clear Data\n </button>\n <button mat-stroked-button\n color=\"primary\"\n (click)=\"updateData()\"\n >\n Update Data\n </button>\n <div style=\"flex:1\"></div>\n <button\n mat-stroked-button\n color=\"warn\"\n [disabled]=\"!dataToDisplay.length\"\n (click)=\"removeData()\"\n >\n Remove Data\n </button>\n <button mat-stroked-button\n color=\"primary\"\n (click)=\"addData()\"\n >\n Add Data\n </button>\n </div>\n\n <div class=\"table-container\">\n <table mat-table [dataSource]=\"dataSource\">\n\n <ng-container matColumnDef=\"id\">\n <th mat-header-cell *matHeaderCellDef>ID</th>\n <td mat-cell *matCellDef=\"let element\">{{element.id}}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"last_name\">\n <th mat-header-cell *matHeaderCellDef>Last Name</th>\n <td mat-cell *matCellDef=\"let element\">{{element.last_name}}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"age\">\n <th mat-header-cell *matHeaderCellDef>Age</th>\n <td mat-cell *matCellDef=\"let element\">{{element.age}}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"amount\">\n <th mat-header-cell *matHeaderCellDef>Amount</th>\n <td mat-cell *matCellDef=\"let element\">{{element.amount | currency}}</td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </div>\n\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "pipe", type: i3.CurrencyPipe, name: "currency" }] }); }
|
|
66
133
|
}
|
|
67
134
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DatabaseDataDemoComponent, decorators: [{
|
|
68
135
|
type: Component,
|
|
69
|
-
args: [{ selector: 'app-database-data-demo', template: "<
|
|
136
|
+
args: [{ selector: 'app-database-data-demo', template: "<div style=\"padding: 2rem;\">\n\n <h2>\n Database Manager Service Demo\n </h2>\n\n <div style=\"margin-bottom: 1rem; display: flex; gap: 1rem;\">\n <button mat-stroked-button\n color=\"primary\"\n (click)=\"clearAllData()\"\n >\n Clear Data\n </button>\n <button mat-stroked-button\n color=\"primary\"\n (click)=\"updateData()\"\n >\n Update Data\n </button>\n <div style=\"flex:1\"></div>\n <button\n mat-stroked-button\n color=\"warn\"\n [disabled]=\"!dataToDisplay.length\"\n (click)=\"removeData()\"\n >\n Remove Data\n </button>\n <button mat-stroked-button\n color=\"primary\"\n (click)=\"addData()\"\n >\n Add Data\n </button>\n </div>\n\n <div class=\"table-container\">\n <table mat-table [dataSource]=\"dataSource\">\n\n <ng-container matColumnDef=\"id\">\n <th mat-header-cell *matHeaderCellDef>ID</th>\n <td mat-cell *matCellDef=\"let element\">{{element.id}}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"last_name\">\n <th mat-header-cell *matHeaderCellDef>Last Name</th>\n <td mat-cell *matCellDef=\"let element\">{{element.last_name}}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"age\">\n <th mat-header-cell *matHeaderCellDef>Age</th>\n <td mat-cell *matCellDef=\"let element\">{{element.age}}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"amount\">\n <th mat-header-cell *matHeaderCellDef>Amount</th>\n <td mat-cell *matCellDef=\"let element\">{{element.amount | currency}}</td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </div>\n\n</div>\n" }]
|
|
70
137
|
}], ctorParameters: () => [] });
|
|
71
|
-
|
|
138
|
+
class DatabaseDataSource extends DataSource {
|
|
139
|
+
constructor(initialData) {
|
|
140
|
+
super();
|
|
141
|
+
this._dataStream = new ReplaySubject();
|
|
142
|
+
this.setData(initialData);
|
|
143
|
+
}
|
|
144
|
+
connect() {
|
|
145
|
+
return this._dataStream;
|
|
146
|
+
}
|
|
147
|
+
disconnect() { }
|
|
148
|
+
setData(data) {
|
|
149
|
+
this._dataStream.next(data);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UtZGF0YS1kZW1vLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2h0dHAtcmVxdWVzdC1tYW5hZ2VyL3NyYy9saWIvaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8vZGF0YWJhc2UtZGF0YS1kZW1vL2RhdGFiYXNlLWRhdGEtZGVtby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vL2RhdGFiYXNlLWRhdGEtZGVtby9kYXRhYmFzZS1kYXRhLWRlbW8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLE9BQU8sRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDN0YsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7O0FBY2pGLE1BQU0sT0FBTyx5QkFBeUI7SUFXcEM7UUFUQSxPQUFFLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUE7UUFDM0IsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFdkMsa0JBQWEsR0FBa0IsRUFBRSxDQUFDO1FBQ2xDLGVBQVUsR0FBRyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4RCxxQkFBZ0IsR0FBYSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsS0FBSyxF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QUFDLENBQzVELENBQUE7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUksS0FBYSxFQUFFLEVBQVU7UUFDNUMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7YUFDMUMsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUM1RCxDQUFBO0lBQ0gsQ0FBQzsrR0FwTFUseUJBQXlCO21HQUF6Qix5QkFBeUIsOERDcEJ0QyxnMERBaUVBOzs0RkQ3Q2EseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLHdCQUF3Qjs7QUE0THBDLE1BQU0sa0JBQW1CLFNBQVEsVUFBdUI7SUFHdEQsWUFBWSxXQUEwQjtRQUNwQyxLQUFLLEVBQUUsQ0FBQztRQUhGLGdCQUFXLEdBQUcsSUFBSSxhQUFhLEVBQWlCLENBQUM7UUFJdkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsVUFBVSxLQUFJLENBQUM7SUFFZixPQUFPLENBQUMsSUFBbUI7UUFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIGluamVjdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcblxuaW1wb3J0IHsgVGFibGVTY2hlbWFEZWYgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhYmFzZS1tYW5hZ2VyLXNlcnZpY2UvbW9kZWxzL3RhYmxlLXNjaGVtYSc7XG5pbXBvcnQgeyBEYXRhYmFzZU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YWJhc2UtbWFuYWdlci1zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZVJlY29yZCB7XG4gIGlkOiBudW1iZXI7XG4gIGxhc3RfbmFtZTogc3RyaW5nO1xuICBhZ2U6IG51bWJlcjtcbiAgYW1vdW50OiBudW1iZXI7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1kYXRhYmFzZS1kYXRhLWRlbW8nLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YWJhc2UtZGF0YS1kZW1vLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YWJhc2UtZGF0YS1kZW1vLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRGF0YWJhc2VEYXRhRGVtb0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBkYiA9IGluamVjdChEYXRhYmFzZU1hbmFnZXJTZXJ2aWNlKVxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBkYXRhVG9EaXNwbGF5OiBUYWJsZVJlY29yZFtdID0gW107XG4gIGRhdGFTb3VyY2UgPSBuZXcgRGF0YWJhc2VEYXRhU291cmNlKHRoaXMuZGF0YVRvRGlzcGxheSk7XG4gIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdID0gWydpZCcsICdsYXN0X25hbWUnLCAnYWdlJywgJ2Ftb3VudCddO1xuXG4gIG5hbWVzID0gWydTbWl0aCcsICdKb2huc29uJywgJ1dpbGxpYW1zJywgJ0Jyb3duJywgJ0pvbmVzJywgJ0dhcmNpYScsICdNaWxsZXInLCAnRGF2aXMnXTtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGFkZERhdGEoKSB7XG5cbiAgICBjb25zdCBuZXdSZWNvcmQ6IFRhYmxlUmVjb3JkID0ge1xuICAgICAgaWQ6IE1hdGgubWF4KC4uLnRoaXMuZGF0YVRvRGlzcGxheS5tYXAociA9PiByLmlkKSwgMCkgKyAxLFxuICAgICAgbGFzdF9uYW1lOiB0aGlzLm5hbWVzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHRoaXMubmFtZXMubGVuZ3RoKV0sXG4gICAgICBhZ2U6IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDgwKSArIDE4LFxuICAgICAgYW1vdW50OiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDAwKVxuICAgIH07XG5cbiAgICB0aGlzLmRhdGFUb0Rpc3BsYXkgPSBbLi4udGhpcy5kYXRhVG9EaXNwbGF5LCBuZXdSZWNvcmRdO1xuICAgIHRoaXMuZGIuY3JlYXRlVGFibGVSZWNvcmQoJ3NhbXBsZV90YWJsZScsIG5ld1JlY29yZCkuc3Vic2NyaWJlKFxuICAgICAgKCkgPT4gdGhpcy5yZWZyZXNoRGF0YSgpXG4gICAgKTtcblxuICB9XG5cbiAgcmVtb3ZlRGF0YSgpIHtcbiAgICBpZiAodGhpcy5kYXRhVG9EaXNwbGF5Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHJlbW92ZWRSZWNvcmQgPSB0aGlzLmRhdGFUb0Rpc3BsYXlbdGhpcy5kYXRhVG9EaXNwbGF5Lmxlbmd0aCAtIDFdO1xuICAgICAgdGhpcy5kYXRhVG9EaXNwbGF5ID0gdGhpcy5kYXRhVG9EaXNwbGF5LnNsaWNlKDAsIC0xKTtcbiAgICAgIHRoaXMuZGIuZGVsZXRlVGFibGVSZWNvcmQoJ3NhbXBsZV90YWJsZScsIHJlbW92ZWRSZWNvcmQuaWQpLnN1YnNjcmliZShcbiAgICAgICAgKCkgPT4gdGhpcy5yZWZyZXNoRGF0YSgpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZURhdGEoKSB7XG5cbiAgICBpZiAodGhpcy5kYXRhVG9EaXNwbGF5Lmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgcmFuZG9tSW5kZXggPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiB0aGlzLmRhdGFUb0Rpc3BsYXkubGVuZ3RoKTtcbiAgICBjb25zdCByZWNvcmRUb1VwZGF0ZSA9IHRoaXMuZGF0YVRvRGlzcGxheVtyYW5kb21JbmRleF07XG5cbiAgICBjb25zdCB1cGRhdGVkUmVjb3JkOiBUYWJsZVJlY29yZCA9IHtcbiAgICAgIC4uLnJlY29yZFRvVXBkYXRlLFxuICAgICAgbGFzdF9uYW1lOiB0aGlzLm5hbWVzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHRoaXMubmFtZXMubGVuZ3RoKV0sXG4gICAgICBhZ2U6IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDgwKSArIDE4LFxuICAgICAgYW1vdW50OiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDAwKVxuICAgIH07XG5cbiAgICB0aGlzLmRhdGFUb0Rpc3BsYXkgPSB0aGlzLmRhdGFUb0Rpc3BsYXkubWFwKChyLCBpbmRleCkgPT5cbiAgICAgIGluZGV4ID09PSByYW5kb21JbmRleCA/IHVwZGF0ZWRSZWNvcmQgOiByXG4gICAgKTtcblxuICAgIHRoaXMuZGIudXBkYXRlVGFibGVSZWNvcmQoJ3NhbXBsZV90YWJsZScsIHVwZGF0ZWRSZWNvcmQpLnN1YnNjcmliZShcbiAgICAgICgpID0+IHRoaXMucmVmcmVzaERhdGEoKVxuICAgICk7XG5cbiAgfVxuXG4gIGNsZWFyQWxsRGF0YSgpIHtcbiAgICBpZiAodGhpcy5kYXRhVG9EaXNwbGF5Lmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgaWRzVG9EZWxldGUgPSB0aGlzLmRhdGFUb0Rpc3BsYXkubWFwKHIgPT4gci5pZCk7XG4gICAgdGhpcy5kYXRhVG9EaXNwbGF5ID0gW107XG5cbiAgICB0aGlzLmRiLmRlbGV0ZVRhYmxlUmVjb3Jkcygnc2FtcGxlX3RhYmxlJywgaWRzVG9EZWxldGUpLnN1YnNjcmliZShcbiAgICAgICgpID0+IHRoaXMucmVmcmVzaERhdGEoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2hEYXRhKCkge1xuICAgIHRoaXMuZGIuZ2V0VGFibGVSZWNvcmRzKCdzYW1wbGVfdGFibGUnKS5zdWJzY3JpYmUoXG4gICAgICAocmVjb3JkczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZGF0YVRvRGlzcGxheSA9IHJlY29yZHMgfHwgW107XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5zZXREYXRhKHRoaXMuZGF0YVRvRGlzcGxheSk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuXG4gICAgY29uc3QgdGFibGVEZWYgPSBUYWJsZVNjaGVtYURlZi5hZGFwdCh7XG4gICAgICB0YWJsZTogJ3NhbXBsZV90YWJsZScsXG4gICAgICBzY2hlbWE6ICcrK2lkLCBsYXN0X25hbWUsIGFnZSwgYW1vdW50J1xuICAgIH0pO1xuXG4gICAgdGhpcy5kYi5jcmVhdGVEYXRhYmFzZVRhYmxlKHRhYmxlRGVmKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc29sZS5sb2coJ0RhdGFiYXNlIFRhYmxlIEluaXRpYWxpemVkJyk7XG5cbiAgICAgIC8vIGhhc1RhYmxlXG4gICAgICB0aGlzLmRiLmhhc0RhdGFiYXNlVGFibGUoJ3NhbXBsZV90YWJsZScpXG4gICAgICAgIC5zdWJzY3JpYmUoZGF0YSA9PiBjb25zb2xlLmxvZygnaGFzRGF0YWJhc2VUYWJsZTonLCBkYXRhKSlcblxuICAgICAgLy8gVGFibGVzXG4gICAgICB0aGlzLmRiLmdldERhdGFiYXNlVGFibGVzKClcbiAgICAgICAgLnN1YnNjcmliZShkYXRhID0+IGNvbnNvbGUubG9nKCdnZXREYXRhYmFzZVRhYmxlczonLCBkYXRhKSlcblxuICAgICAgLy8gZ2V0VGFibGVcbiAgICAgIHRoaXMuZGIuZ2V0RGF0YWJhc2VUYWJsZSgnc2FtcGxlX3RhYmxlJylcbiAgICAgICAgLnN1YnNjcmliZShkYXRhID0+IGNvbnNvbGUubG9nKCdnZXREYXRhYmFzZVRhYmxlOicsIGRhdGEpKVxuXG4gICAgICAvLyBUYWJsZSBTY2hlbWFcbiAgICAgIHRoaXMuZGIuZ2V0RGF0YWJhc2VUYWJsZVNjaGVtYSgnc2FtcGxlX3RhYmxlJylcbiAgICAgICAgLnN1YnNjcmliZShkYXRhID0+IGNvbnNvbGUubG9nKCdnZXREYXRhYmFzZVRhYmxlU2NoZW1hOicsIGRhdGEpKVxuXG4gICAgICAvLyBJbnNlcnQgVGFibGUgUmVjb3Jkc1xuICAgICAgY29uc3QgcmVjb3JkcyA9IFtcbiAgICAgICAgeyBpZDogMSwgYWdlOiAxMiwgbGFzdF9uYW1lOiAnQm9uaWZhY2lvJywgYW1vdW50OiA4MCB9LFxuICAgICAgICB7IGlkOiAyLCBhZ2U6IDE1LCBsYXN0X25hbWU6ICdKb2hucycsIGFtb3VudDogNzAwIH0sXG4gICAgICAgIHsgaWQ6IDMsIGFnZTogMjIsIGxhc3RfbmFtZTogJ0tpbXMnLCBhbW91bnQ6IDIzNCB9LFxuICAgICAgICB7IGlkOiA0LCBhZ2U6IDQ1LCBsYXN0X25hbWU6ICdIYXJyeXMnLCBhbW91bnQ6IDEyMDAgfSxcbiAgICAgIF1cblxuICAgICAgdGhpcy5kYi5jcmVhdGVUYWJsZVJlY29yZHMoJ3NhbXBsZV90YWJsZScsIHJlY29yZHMpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMucmVmcmVzaERhdGEoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgY3JlYXRlVGFibGUodGFibGVEZWY6IFRhYmxlU2NoZW1hRGVmKSB7XG4gICAgcmV0dXJuIHRoaXMuZGIuY3JlYXRlRGF0YWJhc2VUYWJsZSh0YWJsZURlZilcbiAgfVxuXG4gIC8vIENSVURcbiAgZmluZFRhYmxlUmVjb3Jkcyh0YWJsZTogc3RyaW5nLCBjb2x1bW46IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmRiLmZpbmRUYWJsZVJlY29yZHModGFibGUsIGNvbHVtbiwgdmFsdWUpXG4gICAgLnBpcGUoXG4gICAgICB0YXAoKGRhdGE6IGFueSkgPT4gY29uc29sZS5sb2coJ2ZpbmRUYWJsZVJlY29yZHM6JywgZGF0YSkpXG4gICAgKVxuICB9XG5cbiAgZmluZFRhYmxlUmVjb3JkKHRhYmxlOiBzdHJpbmcsIGNvbHVtbjogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuZGIuZmluZFRhYmxlUmVjb3JkKHRhYmxlLCBjb2x1bW4sIHZhbHVlKVxuICAgIC5waXBlKFxuICAgICAgdGFwKChkYXRhOiBhbnkpID0+IGNvbnNvbGUubG9nKCdmaW5kVGFibGVSZWNvcmQ6JywgZGF0YSkpXG4gICAgKVxuICB9XG5cbiAgZ2V0VGFibGVSZWNvcmRzKHRhYmxlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5kYi5nZXRUYWJsZVJlY29yZHModGFibGUpXG4gICAgLnBpcGUoXG4gICAgICB0YXAoKGRhdGE6IGFueSkgPT4gY29uc29sZS5sb2coJ2dldFRhYmxlUmVjb3JkczonLCBkYXRhKSlcbiAgICApXG4gIH1cblxuICBnZXRUYWJsZVJlY29yZCh0YWJsZTogc3RyaW5nLCBpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuZGIuZ2V0VGFibGVSZWNvcmQodGFibGUsIGlkKVxuICAgIC5waXBlKFxuICAgICAgdGFwKChkYXRhOiBhbnkpID0+IGNvbnNvbGUubG9nKCdnZXRUYWJsZVJlY29yZDonLCBkYXRhKSlcbiAgICApXG4gIH1cblxuICBjcmVhdGVUYWJsZVJlY29yZDxUPih0YWJsZTogc3RyaW5nLCByZWNvcmQ6IFQpIHtcbiAgICByZXR1cm4gdGhpcy5kYi5jcmVhdGVUYWJsZVJlY29yZCh0YWJsZSwgcmVjb3JkKVxuICAgIC5waXBlKFxuICAgICAgdGFwKChkYXRhOiBhbnkpID0+IGNvbnNvbGUubG9nKCdjcmVhdGVUYWJsZVJlY29yZDonLCBkYXRhKSlcbiAgICApXG4gIH1cblxuICB1cGRhdGVUYWJsZVJlY29yZDxUPih0YWJsZTogc3RyaW5nLCByZWNvcmQ6IFQpIHtcbiAgICByZXR1cm4gdGhpcy5kYi51cGRhdGVUYWJsZVJlY29yZCh0YWJsZSwgcmVjb3JkKVxuICAgIC5waXBlKFxuICAgICAgdGFwKChkYXRhOiBhbnkpID0+IGNvbnNvbGUubG9nKCd1cGRhdGVUYWJsZVJlY29yZDonLCBkYXRhKSlcbiAgICApXG4gIH1cblxuICBkZWxldGVUYWJsZVJlY29yZDxUPih0YWJsZTogc3RyaW5nLCBpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuZGIuZGVsZXRlVGFibGVSZWNvcmQodGFibGUsIGlkKVxuICAgIC5waXBlKFxuICAgICAgdGFwKChkYXRhOiBhbnkpID0+IGNvbnNvbGUubG9nKCdkZWxldGVUYWJsZVJlY29yZDonLCBkYXRhKSlcbiAgICApXG4gIH1cblxufVxuXG5jbGFzcyBEYXRhYmFzZURhdGFTb3VyY2UgZXh0ZW5kcyBEYXRhU291cmNlPFRhYmxlUmVjb3JkPiB7XG4gIHByaXZhdGUgX2RhdGFTdHJlYW0gPSBuZXcgUmVwbGF5U3ViamVjdDxUYWJsZVJlY29yZFtdPigpO1xuXG4gIGNvbnN0cnVjdG9yKGluaXRpYWxEYXRhOiBUYWJsZVJlY29yZFtdKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnNldERhdGEoaW5pdGlhbERhdGEpO1xuICB9XG5cbiAgY29ubmVjdCgpOiBPYnNlcnZhYmxlPFRhYmxlUmVjb3JkW10+IHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVN0cmVhbTtcbiAgfVxuXG4gIGRpc2Nvbm5lY3QoKSB7fVxuXG4gIHNldERhdGEoZGF0YTogVGFibGVSZWNvcmRbXSkge1xuICAgIHRoaXMuX2RhdGFTdHJlYW0ubmV4dChkYXRhKTtcbiAgfVxuXG59XG4iLCI8ZGl2IHN0eWxlPVwicGFkZGluZzogMnJlbTtcIj5cblxuICA8aDI+XG4gICAgRGF0YWJhc2UgTWFuYWdlciBTZXJ2aWNlIERlbW9cbiAgPC9oMj5cblxuICA8ZGl2IHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMXJlbTsgZGlzcGxheTogZmxleDsgZ2FwOiAxcmVtO1wiPlxuICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgKGNsaWNrKT1cImNsZWFyQWxsRGF0YSgpXCJcbiAgICA+XG4gICAgICBDbGVhciBEYXRhXG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b25cbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAoY2xpY2spPVwidXBkYXRlRGF0YSgpXCJcbiAgICA+XG4gICAgICBVcGRhdGUgRGF0YVxuICAgIDwvYnV0dG9uPlxuICAgIDxkaXYgc3R5bGU9XCJmbGV4OjFcIj48L2Rpdj5cbiAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1zdHJva2VkLWJ1dHRvblxuICAgICAgICBjb2xvcj1cIndhcm5cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIWRhdGFUb0Rpc3BsYXkubGVuZ3RoXCJcbiAgICAgICAgKGNsaWNrKT1cInJlbW92ZURhdGEoKVwiXG4gICAgPlxuICAgICAgUmVtb3ZlIERhdGFcbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvblxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIChjbGljayk9XCJhZGREYXRhKClcIlxuICAgID5cbiAgICAgIEFkZCBEYXRhXG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb250YWluZXJcIj5cbiAgICA8dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJpZFwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPklEPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj57e2VsZW1lbnQuaWR9fTwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJsYXN0X25hbWVcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5MYXN0IE5hbWU8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPnt7ZWxlbWVudC5sYXN0X25hbWV9fTwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJhZ2VcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5BZ2U8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPnt7ZWxlbWVudC5hZ2V9fTwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJhbW91bnRcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5BbW91bnQ8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPnt7ZWxlbWVudC5hbW91bnQgfCBjdXJyZW5jeX19PC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNcIj48L3RyPlxuICAgICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCI+PC90cj5cbiAgICA8L3RhYmxlPlxuICA8L2Rpdj5cblxuPC9kaXY+XG4iXX0=
|
|
@@ -11,8 +11,10 @@ import * as i7 from "./request-manager-demo/request-manager-demo.component";
|
|
|
11
11
|
import * as i8 from "./request-signals-manager-demo/request-signals-manager-demo.component";
|
|
12
12
|
import * as i9 from "./local-storage-demo/local-storage-demo.component";
|
|
13
13
|
import * as i10 from "./local-storage-signals-demo/local-storage-signals-demo.component";
|
|
14
|
-
import * as i11 from "./
|
|
15
|
-
import * as i12 from "
|
|
14
|
+
import * as i11 from "./request-manager-ws-demo/request-manager-ws-demo.component";
|
|
15
|
+
import * as i12 from "./store-state-manager-demo/store-state-manager-demo.component";
|
|
16
|
+
import * as i13 from "./database-data-demo/database-data-demo.component";
|
|
17
|
+
import * as i14 from "../models/config-options.model";
|
|
16
18
|
export class HttpRequestServicesDemoComponent {
|
|
17
19
|
constructor(configOptions) {
|
|
18
20
|
this.configOptions = configOptions;
|
|
@@ -20,12 +22,13 @@ export class HttpRequestServicesDemoComponent {
|
|
|
20
22
|
{ name: "Http Service", value: 'http_service' },
|
|
21
23
|
{ name: "Http Signals Service", value: 'http_signals_service', new: true },
|
|
22
24
|
{ name: "Http State Service", value: 'http_state_service' },
|
|
23
|
-
{ name: "
|
|
25
|
+
{ name: "Http State Service - Websockets", value: 'http_state_service_ws', new: false },
|
|
26
|
+
{ name: "Database Service", value: 'database_service', divider: true, disabled: false },
|
|
24
27
|
{ name: "Local Storage Service", value: 'local_storage_service' },
|
|
25
28
|
{ name: "Local Signals Storage Service", value: 'local_storage_signals_service', new: true },
|
|
26
29
|
{ name: "Store State Manager Service", value: 'store_state_manager', new: true },
|
|
27
30
|
];
|
|
28
|
-
this.selectedService = this.requestTypes[
|
|
31
|
+
this.selectedService = this.requestTypes[3].value; //menu selection default
|
|
29
32
|
}
|
|
30
33
|
ngOnInit() {
|
|
31
34
|
if (this.configOptions)
|
|
@@ -35,13 +38,13 @@ export class HttpRequestServicesDemoComponent {
|
|
|
35
38
|
this.selectedService = this.requestTypes[type].value;
|
|
36
39
|
}
|
|
37
40
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpRequestServicesDemoComponent, deps: [{ token: CONFIG_SETTINGS_TOKEN }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
38
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: HttpRequestServicesDemoComponent, selector: "app-http-request-services-demo", ngImport: i0, template: "<mat-toolbar style=\"display:flex\">\n <div>Http Request Manager Services</div>\n <div style=\"flex:1\"></div>\n <button mat-stroked-button [matMenuTriggerFor]=\"menu\">Services</button>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngFor=\"let type of requestTypes; index as i\">\n <div\n *ngIf=\"type?.divider\"\n style=\"margin-top: .5rem; margin-bottom: .5rem;\"\n >\n <mat-divider></mat-divider>\n </div>\n <button\n mat-menu-item\n (click)=\"onSelected(i)\"\n [disabled]=\"type.disabled\"\n >\n {{ type.name }}\n </button>\n </ng-container>\n\n </mat-menu>\n</mat-toolbar>\n\n<span [ngSwitch]=\"selectedService\">\n <p *ngSwitchCase=\"'http_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-demo></app-request-manager-demo>\n </p>\n <p *ngSwitchCase=\"'http_signals_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-signals-manager-demo></app-request-signals-manager-demo>\n </p>\n <p *ngSwitchCase=\"'http_state_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-state-demo></app-request-manager-state-demo>\n </p>\n <p *ngSwitchCase=\"'
|
|
41
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: HttpRequestServicesDemoComponent, selector: "app-http-request-services-demo", ngImport: i0, template: "<mat-toolbar style=\"display:flex\">\n <div>Http Request Manager Services</div>\n <div style=\"flex:1\"></div>\n <button mat-stroked-button [matMenuTriggerFor]=\"menu\">Services</button>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngFor=\"let type of requestTypes; index as i\">\n <div\n *ngIf=\"type?.divider\"\n style=\"margin-top: .5rem; margin-bottom: .5rem;\"\n >\n <mat-divider></mat-divider>\n </div>\n <button\n mat-menu-item\n (click)=\"onSelected(i)\"\n [disabled]=\"type.disabled\"\n >\n {{ type.name }}\n </button>\n </ng-container>\n\n </mat-menu>\n</mat-toolbar>\n\n<span [ngSwitch]=\"selectedService\">\n <p *ngSwitchCase=\"'http_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-demo></app-request-manager-demo>\n </p>\n <p *ngSwitchCase=\"'http_signals_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-signals-manager-demo></app-request-signals-manager-demo>\n </p>\n <p *ngSwitchCase=\"'http_state_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-state-demo></app-request-manager-state-demo>\n </p>\n <p *ngSwitchCase=\"'http_state_service_ws'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-ws-demo></app-request-manager-ws-demo>\n </p>\n <p *ngSwitchCase=\"'database_service'\">\n <app-database-data-demo></app-database-data-demo>\n </p>\n <p *ngSwitchCase=\"'local_storage_service'\">\n <ng-container *ngTemplateOutlet=\"LOCAL_OPTIONS\"></ng-container>\n <app-local-storage-demo></app-local-storage-demo>\n </p>\n <p *ngSwitchCase=\"'local_storage_signals_service'\">\n <ng-container *ngTemplateOutlet=\"LOCAL_OPTIONS\"></ng-container>\n <app-local-storage-signals-demo></app-local-storage-signals-demo>\n </p>\n <p *ngSwitchCase=\"'store_state_manager'\">\n <ng-container *ngTemplateOutlet=\"LOCAL_OPTIONS\"></ng-container>\n <app-store-state-manager-demo></app-store-state-manager-demo>\n </p>\n <p *ngSwitchDefault>\n Other\n </p>\n</span>\n\n<ng-template #HTTP_OPTIONS>\n <ng-container *ngIf=\"injectionOptions?.httpRequestOptions\">\n <div class=\"box\">\n <h3 style=\"font-weight: bold;\">Injection Token Detected - HTTP Options</h3>\n {{ injectionOptions?.httpRequestOptions| json }}\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #LOCAL_OPTIONS>\n <ng-container class=\"box\" *ngIf=\"injectionOptions?.LocalStorageOptions\">\n <div class=\"box\">\n <h3 style=\"font-weight: bold;\">Injection Token Detected - LocalStorage Options</h3>\n {{ injectionOptions?.LocalStorageOptions| json }}\n </div>\n </ng-container>\n</ng-template>\n\n\n", styles: [".box{padding:1rem;background-color:#f5f5f5;border:thin gray solid;margin-top:1rem}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i4.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i5.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i6.RequestManagerStateDemoComponent, selector: "app-request-manager-state-demo" }, { kind: "component", type: i7.RequestManagerDemoComponent, selector: "app-request-manager-demo" }, { kind: "component", type: i8.RequestSignalsManagerDemoComponent, selector: "app-request-signals-manager-demo" }, { kind: "component", type: i9.LocalStorageDemoComponent, selector: "app-local-storage-demo" }, { kind: "component", type: i10.LocalStorageSignalsDemoComponent, selector: "app-local-storage-signals-demo" }, { kind: "component", type: i11.RequestManagerWsDemoComponent, selector: "app-request-manager-ws-demo" }, { kind: "component", type: i12.StoreStateManagerDemoComponent, selector: "app-store-state-manager-demo" }, { kind: "component", type: i13.DatabaseDataDemoComponent, selector: "app-database-data-demo" }, { kind: "pipe", type: i1.JsonPipe, name: "json" }] }); }
|
|
39
42
|
}
|
|
40
43
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpRequestServicesDemoComponent, decorators: [{
|
|
41
44
|
type: Component,
|
|
42
|
-
args: [{ selector: 'app-http-request-services-demo', template: "<mat-toolbar style=\"display:flex\">\n <div>Http Request Manager Services</div>\n <div style=\"flex:1\"></div>\n <button mat-stroked-button [matMenuTriggerFor]=\"menu\">Services</button>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngFor=\"let type of requestTypes; index as i\">\n <div\n *ngIf=\"type?.divider\"\n style=\"margin-top: .5rem; margin-bottom: .5rem;\"\n >\n <mat-divider></mat-divider>\n </div>\n <button\n mat-menu-item\n (click)=\"onSelected(i)\"\n [disabled]=\"type.disabled\"\n >\n {{ type.name }}\n </button>\n </ng-container>\n\n </mat-menu>\n</mat-toolbar>\n\n<span [ngSwitch]=\"selectedService\">\n <p *ngSwitchCase=\"'http_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-demo></app-request-manager-demo>\n </p>\n <p *ngSwitchCase=\"'http_signals_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-signals-manager-demo></app-request-signals-manager-demo>\n </p>\n <p *ngSwitchCase=\"'http_state_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-state-demo></app-request-manager-state-demo>\n </p>\n <p *ngSwitchCase=\"'
|
|
43
|
-
}], ctorParameters: () => [{ type:
|
|
45
|
+
args: [{ selector: 'app-http-request-services-demo', template: "<mat-toolbar style=\"display:flex\">\n <div>Http Request Manager Services</div>\n <div style=\"flex:1\"></div>\n <button mat-stroked-button [matMenuTriggerFor]=\"menu\">Services</button>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngFor=\"let type of requestTypes; index as i\">\n <div\n *ngIf=\"type?.divider\"\n style=\"margin-top: .5rem; margin-bottom: .5rem;\"\n >\n <mat-divider></mat-divider>\n </div>\n <button\n mat-menu-item\n (click)=\"onSelected(i)\"\n [disabled]=\"type.disabled\"\n >\n {{ type.name }}\n </button>\n </ng-container>\n\n </mat-menu>\n</mat-toolbar>\n\n<span [ngSwitch]=\"selectedService\">\n <p *ngSwitchCase=\"'http_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-demo></app-request-manager-demo>\n </p>\n <p *ngSwitchCase=\"'http_signals_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-signals-manager-demo></app-request-signals-manager-demo>\n </p>\n <p *ngSwitchCase=\"'http_state_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-state-demo></app-request-manager-state-demo>\n </p>\n <p *ngSwitchCase=\"'http_state_service_ws'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-ws-demo></app-request-manager-ws-demo>\n </p>\n <p *ngSwitchCase=\"'database_service'\">\n <app-database-data-demo></app-database-data-demo>\n </p>\n <p *ngSwitchCase=\"'local_storage_service'\">\n <ng-container *ngTemplateOutlet=\"LOCAL_OPTIONS\"></ng-container>\n <app-local-storage-demo></app-local-storage-demo>\n </p>\n <p *ngSwitchCase=\"'local_storage_signals_service'\">\n <ng-container *ngTemplateOutlet=\"LOCAL_OPTIONS\"></ng-container>\n <app-local-storage-signals-demo></app-local-storage-signals-demo>\n </p>\n <p *ngSwitchCase=\"'store_state_manager'\">\n <ng-container *ngTemplateOutlet=\"LOCAL_OPTIONS\"></ng-container>\n <app-store-state-manager-demo></app-store-state-manager-demo>\n </p>\n <p *ngSwitchDefault>\n Other\n </p>\n</span>\n\n<ng-template #HTTP_OPTIONS>\n <ng-container *ngIf=\"injectionOptions?.httpRequestOptions\">\n <div class=\"box\">\n <h3 style=\"font-weight: bold;\">Injection Token Detected - HTTP Options</h3>\n {{ injectionOptions?.httpRequestOptions| json }}\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #LOCAL_OPTIONS>\n <ng-container class=\"box\" *ngIf=\"injectionOptions?.LocalStorageOptions\">\n <div class=\"box\">\n <h3 style=\"font-weight: bold;\">Injection Token Detected - LocalStorage Options</h3>\n {{ injectionOptions?.LocalStorageOptions| json }}\n </div>\n </ng-container>\n</ng-template>\n\n\n", styles: [".box{padding:1rem;background-color:#f5f5f5;border:thin gray solid;margin-top:1rem}\n"] }]
|
|
46
|
+
}], ctorParameters: () => [{ type: i14.ConfigOptions, decorators: [{
|
|
44
47
|
type: Inject,
|
|
45
48
|
args: [CONFIG_SETTINGS_TOKEN]
|
|
46
49
|
}] }] });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBUXJFLE1BQU0sT0FBTyxnQ0FBZ0M7SUFpQjNDLFlBQ3lDLGFBQTZCO1FBQTdCLGtCQUFhLEdBQWIsYUFBYSxDQUFnQjtRQWhCdEUsaUJBQVksR0FBRztZQUNiLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFO1lBQy9DLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFO1lBQzFFLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRTtZQUMzRCxFQUFFLElBQUksRUFBRSxpQ0FBaUMsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtZQUN2RixFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO1lBQ3ZGLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRTtZQUNqRSxFQUFFLElBQUksRUFBRSwrQkFBK0IsRUFBRSxLQUFLLEVBQUUsK0JBQStCLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtZQUM1RixFQUFFLElBQUksRUFBRSw2QkFBNkIsRUFBRSxLQUFLLEVBQUUscUJBQXFCLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtTQUNqRixDQUFBO1FBRUQsb0JBQWUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQSxDQUFDLHdCQUF3QjtJQU1qRSxDQUFDO0lBRUwsUUFBUTtRQUNOLElBQUcsSUFBSSxDQUFDLGFBQWE7WUFBRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQTtJQUNuRSxDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVk7UUFDckIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQTtJQUN0RCxDQUFDOytHQTNCVSxnQ0FBZ0Msa0JBa0JqQyxxQkFBcUI7bUdBbEJwQixnQ0FBZ0Msc0VDVjdDLHd6RkFnRkE7OzRGRHRFYSxnQ0FBZ0M7a0JBTDVDLFNBQVM7K0JBQ0UsZ0NBQWdDOzswQkFzQnZDLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDT05GSUdfU0VUVElOR1NfVE9LRU4gfSBmcm9tICcuLi9tb2RlbHMvY29uZmlnLXRva2VuLm1vZGVsJztcbmltcG9ydCB7IENvbmZpZ09wdGlvbnMgfSBmcm9tICcuLi9tb2RlbHMvY29uZmlnLW9wdGlvbnMubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8nLFxuICB0ZW1wbGF0ZVVybDogJy4vaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEh0dHBSZXF1ZXN0U2VydmljZXNEZW1vQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICByZXF1ZXN0VHlwZXMgPSBbXG4gICAgeyBuYW1lOiBcIkh0dHAgU2VydmljZVwiLCB2YWx1ZTogJ2h0dHBfc2VydmljZScgfSxcbiAgICB7IG5hbWU6IFwiSHR0cCBTaWduYWxzIFNlcnZpY2VcIiwgdmFsdWU6ICdodHRwX3NpZ25hbHNfc2VydmljZScsIG5ldzogdHJ1ZSB9LFxuICAgIHsgbmFtZTogXCJIdHRwIFN0YXRlIFNlcnZpY2VcIiwgdmFsdWU6ICdodHRwX3N0YXRlX3NlcnZpY2UnIH0sXG4gICAgeyBuYW1lOiBcIkh0dHAgU3RhdGUgU2VydmljZSAtIFdlYnNvY2tldHNcIiwgdmFsdWU6ICdodHRwX3N0YXRlX3NlcnZpY2Vfd3MnLCBuZXc6IGZhbHNlIH0sXG4gICAgeyBuYW1lOiBcIkRhdGFiYXNlIFNlcnZpY2VcIiwgdmFsdWU6ICdkYXRhYmFzZV9zZXJ2aWNlJywgZGl2aWRlcjogdHJ1ZSwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgeyBuYW1lOiBcIkxvY2FsIFN0b3JhZ2UgU2VydmljZVwiLCB2YWx1ZTogJ2xvY2FsX3N0b3JhZ2Vfc2VydmljZScgfSxcbiAgICB7IG5hbWU6IFwiTG9jYWwgU2lnbmFscyBTdG9yYWdlIFNlcnZpY2VcIiwgdmFsdWU6ICdsb2NhbF9zdG9yYWdlX3NpZ25hbHNfc2VydmljZScsIG5ldzogdHJ1ZSB9LFxuICAgIHsgbmFtZTogXCJTdG9yZSBTdGF0ZSBNYW5hZ2VyIFNlcnZpY2VcIiwgdmFsdWU6ICdzdG9yZV9zdGF0ZV9tYW5hZ2VyJywgbmV3OiB0cnVlIH0sXG4gIF1cblxuICBzZWxlY3RlZFNlcnZpY2UgPSB0aGlzLnJlcXVlc3RUeXBlc1szXS52YWx1ZSAvL21lbnUgc2VsZWN0aW9uIGRlZmF1bHRcblxuICBpbmplY3Rpb25PcHRpb25zPzogQ29uZmlnT3B0aW9uc1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoQ09ORklHX1NFVFRJTkdTX1RPS0VOKSBwcml2YXRlIGNvbmZpZ09wdGlvbnM/OiBDb25maWdPcHRpb25zXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYodGhpcy5jb25maWdPcHRpb25zKSB0aGlzLmluamVjdGlvbk9wdGlvbnMgPSB0aGlzLmNvbmZpZ09wdGlvbnNcbiAgfVxuXG4gIG9uU2VsZWN0ZWQodHlwZTogbnVtYmVyKSB7XG4gICAgdGhpcy5zZWxlY3RlZFNlcnZpY2UgPSB0aGlzLnJlcXVlc3RUeXBlc1t0eXBlXS52YWx1ZVxuICB9XG5cbn1cbiIsIjxtYXQtdG9vbGJhciAgc3R5bGU9XCJkaXNwbGF5OmZsZXhcIj5cbiAgPGRpdj5IdHRwIFJlcXVlc3QgTWFuYWdlciBTZXJ2aWNlczwvZGl2PlxuICA8ZGl2IHN0eWxlPVwiZmxleDoxXCI+PC9kaXY+XG4gIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCI+U2VydmljZXM8L2J1dHRvbj5cbiAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHR5cGUgb2YgcmVxdWVzdFR5cGVzOyBpbmRleCBhcyBpXCI+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwidHlwZT8uZGl2aWRlclwiXG4gICAgICAgIHN0eWxlPVwibWFyZ2luLXRvcDogLjVyZW07IG1hcmdpbi1ib3R0b206IC41cmVtO1wiXG4gICAgICA+XG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0ZWQoaSlcIlxuICAgICAgICBbZGlzYWJsZWRdPVwidHlwZS5kaXNhYmxlZFwiXG4gICAgICAgID5cbiAgICAgICAge3sgdHlwZS5uYW1lIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICA8L21hdC1tZW51PlxuPC9tYXQtdG9vbGJhcj5cblxuPHNwYW4gW25nU3dpdGNoXT1cInNlbGVjdGVkU2VydmljZVwiPlxuICA8cCAqbmdTd2l0Y2hDYXNlPVwiJ2h0dHBfc2VydmljZSdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiSFRUUF9PUFRJT05TXCI+PC9uZy1jb250YWluZXI+XG4gICAgPGFwcC1yZXF1ZXN0LW1hbmFnZXItZGVtbz48L2FwcC1yZXF1ZXN0LW1hbmFnZXItZGVtbz5cbiAgPC9wPlxuICA8cCAqbmdTd2l0Y2hDYXNlPVwiJ2h0dHBfc2lnbmFsc19zZXJ2aWNlJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJIVFRQX09QVElPTlNcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8YXBwLXJlcXVlc3Qtc2lnbmFscy1tYW5hZ2VyLWRlbW8+PC9hcHAtcmVxdWVzdC1zaWduYWxzLW1hbmFnZXItZGVtbz5cbiAgPC9wPlxuICA8cCAqbmdTd2l0Y2hDYXNlPVwiJ2h0dHBfc3RhdGVfc2VydmljZSdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiSFRUUF9PUFRJT05TXCI+PC9uZy1jb250YWluZXI+XG4gICAgPGFwcC1yZXF1ZXN0LW1hbmFnZXItc3RhdGUtZGVtbz48L2FwcC1yZXF1ZXN0LW1hbmFnZXItc3RhdGUtZGVtbz5cbiAgPC9wPlxuICA8cCAqbmdTd2l0Y2hDYXNlPVwiJ2h0dHBfc3RhdGVfc2VydmljZV93cydcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiSFRUUF9PUFRJT05TXCI+PC9uZy1jb250YWluZXI+XG4gICAgPGFwcC1yZXF1ZXN0LW1hbmFnZXItd3MtZGVtbz48L2FwcC1yZXF1ZXN0LW1hbmFnZXItd3MtZGVtbz5cbiAgPC9wPlxuICA8cCAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGFiYXNlX3NlcnZpY2UnXCI+XG4gICAgPGFwcC1kYXRhYmFzZS1kYXRhLWRlbW8+PC9hcHAtZGF0YWJhc2UtZGF0YS1kZW1vPlxuICA8L3A+XG4gIDxwICpuZ1N3aXRjaENhc2U9XCInbG9jYWxfc3RvcmFnZV9zZXJ2aWNlJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJMT0NBTF9PUFRJT05TXCI+PC9uZy1jb250YWluZXI+XG4gICAgPGFwcC1sb2NhbC1zdG9yYWdlLWRlbW8+PC9hcHAtbG9jYWwtc3RvcmFnZS1kZW1vPlxuICA8L3A+XG4gIDxwICpuZ1N3aXRjaENhc2U9XCInbG9jYWxfc3RvcmFnZV9zaWduYWxzX3NlcnZpY2UnXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIkxPQ0FMX09QVElPTlNcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8YXBwLWxvY2FsLXN0b3JhZ2Utc2lnbmFscy1kZW1vPjwvYXBwLWxvY2FsLXN0b3JhZ2Utc2lnbmFscy1kZW1vPlxuICA8L3A+XG4gIDxwICpuZ1N3aXRjaENhc2U9XCInc3RvcmVfc3RhdGVfbWFuYWdlcidcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiTE9DQUxfT1BUSU9OU1wiPjwvbmctY29udGFpbmVyPlxuICAgIDxhcHAtc3RvcmUtc3RhdGUtbWFuYWdlci1kZW1vPjwvYXBwLXN0b3JlLXN0YXRlLW1hbmFnZXItZGVtbz5cbiAgPC9wPlxuICA8cCAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgIE90aGVyXG4gIDwvcD5cbjwvc3Bhbj5cblxuPG5nLXRlbXBsYXRlICNIVFRQX09QVElPTlM+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbmplY3Rpb25PcHRpb25zPy5odHRwUmVxdWVzdE9wdGlvbnNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYm94XCI+XG4gICAgICA8aDMgc3R5bGU9XCJmb250LXdlaWdodDogYm9sZDtcIj5JbmplY3Rpb24gVG9rZW4gRGV0ZWN0ZWQgLSBIVFRQIE9wdGlvbnM8L2gzPlxuICAgICAge3sgaW5qZWN0aW9uT3B0aW9ucz8uaHR0cFJlcXVlc3RPcHRpb25zfCBqc29uIH19XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNMT0NBTF9PUFRJT05TPlxuICA8bmctY29udGFpbmVyIGNsYXNzPVwiYm94XCIgKm5nSWY9XCJpbmplY3Rpb25PcHRpb25zPy5Mb2NhbFN0b3JhZ2VPcHRpb25zXCI+XG4gICAgPGRpdiBjbGFzcz1cImJveFwiPlxuICAgICAgPGgzIHN0eWxlPVwiZm9udC13ZWlnaHQ6IGJvbGQ7XCI+SW5qZWN0aW9uIFRva2VuIERldGVjdGVkIC0gTG9jYWxTdG9yYWdlIE9wdGlvbnM8L2gzPlxuICAgICAge3sgaW5qZWN0aW9uT3B0aW9ucz8uTG9jYWxTdG9yYWdlT3B0aW9uc3wganNvbiB9fVxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cblxuIl19
|