http-request-manager 19.0.0 → 19.2.5
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 +585 -300
- package/fesm2022/http-request-manager.mjs +9434 -3133
- package/fesm2022/http-request-manager.mjs.map +1 -1
- package/package.json +7 -9
- package/types/http-request-manager.d.ts +3546 -0
- package/esm2022/http-request-manager.mjs +0 -5
- package/esm2022/lib/http-request-manager.module.mjs +0 -186
- package/esm2022/lib/http-request-services-demo/database-data-demo/database-data-demo.component.mjs +0 -71
- package/esm2022/lib/http-request-services-demo/http-request-services-demo.component.mjs +0 -45
- package/esm2022/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.mjs +0 -173
- package/esm2022/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.mjs +0 -184
- package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.mjs +0 -80
- package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.mjs +0 -42
- package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.mjs +0 -88
- package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.mjs +0 -11
- package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.mjs +0 -29
- package/esm2022/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.mjs +0 -9
- package/esm2022/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.mjs +0 -12
- package/esm2022/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.mjs +0 -14
- package/esm2022/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.mjs +0 -315
- package/esm2022/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.mjs +0 -270
- package/esm2022/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.mjs +0 -67
- package/esm2022/lib/http-request-services-demo/request-signals-manager-demo/models/sample-ai-prompt.mjs +0 -9
- package/esm2022/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-info.mjs +0 -12
- package/esm2022/lib/http-request-services-demo/request-signals-manager-demo/models/sample-mapper-client-info.mjs +0 -14
- package/esm2022/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.mjs +0 -336
- package/esm2022/lib/index.mjs +0 -4
- package/esm2022/lib/interceptors/credentials.interceptor.mjs +0 -14
- package/esm2022/lib/interceptors/index.mjs +0 -5
- package/esm2022/lib/interceptors/models/error-settings.model.mjs +0 -10
- package/esm2022/lib/interceptors/proxy-debugger.interceptor.mjs +0 -47
- package/esm2022/lib/interceptors/request-error.interceptor.mjs +0 -49
- package/esm2022/lib/interceptors/request-header.interceptor.mjs +0 -41
- package/esm2022/lib/models/config-http-options.model.mjs +0 -18
- package/esm2022/lib/models/config-local-storage-options.model.mjs +0 -12
- package/esm2022/lib/models/config-options.model.mjs +0 -12
- package/esm2022/lib/models/config-token.model.mjs +0 -8
- package/esm2022/lib/models/data-type.enum.mjs +0 -7
- package/esm2022/lib/models/database-storage.model.mjs +0 -10
- package/esm2022/lib/models/index.mjs +0 -7
- package/esm2022/lib/models/retry-options.model.mjs +0 -10
- 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/index.mjs +0 -6
- package/esm2022/lib/services/local-storage-manager-service/index.mjs +0 -4
- package/esm2022/lib/services/local-storage-manager-service/local-storage-manager.service.mjs +0 -302
- package/esm2022/lib/services/local-storage-manager-service/local-storage-signals-manager.service.mjs +0 -277
- package/esm2022/lib/services/local-storage-manager-service/models/global-store-options.model.mjs +0 -13
- package/esm2022/lib/services/local-storage-manager-service/models/index.mjs +0 -6
- package/esm2022/lib/services/local-storage-manager-service/models/setting-options.model.mjs +0 -17
- package/esm2022/lib/services/local-storage-manager-service/models/storage-data.model.mjs +0 -10
- package/esm2022/lib/services/local-storage-manager-service/models/storage-option.model.mjs +0 -12
- package/esm2022/lib/services/local-storage-manager-service/models/storage-type.enum.mjs +0 -7
- package/esm2022/lib/services/request-manager-services/http-manager-signals.service.mjs +0 -199
- package/esm2022/lib/services/request-manager-services/http-manager.service.mjs +0 -207
- package/esm2022/lib/services/request-manager-services/index.mjs +0 -6
- package/esm2022/lib/services/request-manager-services/request-signals.service.mjs +0 -170
- package/esm2022/lib/services/request-manager-services/request.service.mjs +0 -191
- package/esm2022/lib/services/request-manager-services/rxjs-operators/countdown.mjs +0 -9
- package/esm2022/lib/services/request-manager-services/rxjs-operators/delay-retry.mjs +0 -10
- package/esm2022/lib/services/request-manager-services/rxjs-operators/index.mjs +0 -5
- package/esm2022/lib/services/request-manager-services/rxjs-operators/request-polling.mjs +0 -33
- package/esm2022/lib/services/request-manager-services/rxjs-operators/request-streaming.mjs +0 -19
- package/esm2022/lib/services/request-manager-state-service/http-manager-state.store.mjs +0 -360
- package/esm2022/lib/services/request-manager-state-service/index.mjs +0 -3
- package/esm2022/lib/services/request-manager-state-service/models/api-request.model.mjs +0 -21
- package/esm2022/lib/services/request-manager-state-service/models/index.mjs +0 -3
- package/esm2022/lib/services/request-manager-state-service/models/request-options.model.mjs +0 -10
- package/esm2022/lib/services/request-manager-state-service/models/ws-options.model.mjs +0 -12
- package/esm2022/lib/services/utils/app.service.mjs +0 -26
- package/esm2022/lib/services/utils/encryption/asymmetrical-encryption.service.mjs +0 -186
- package/esm2022/lib/services/utils/encryption/encryption-test.service.mjs +0 -35
- package/esm2022/lib/services/utils/encryption/index.mjs +0 -4
- package/esm2022/lib/services/utils/encryption/random.mjs +0 -52
- package/esm2022/lib/services/utils/encryption/symmetrical-encryption.service.mjs +0 -77
- package/esm2022/lib/services/utils/headers.service.mjs +0 -21
- package/esm2022/lib/services/utils/index.mjs +0 -6
- package/esm2022/lib/services/utils/object-merger.service.mjs +0 -70
- package/esm2022/lib/services/utils/path-query.service.mjs +0 -54
- package/esm2022/lib/services/utils/utils.service.mjs +0 -155
- package/esm2022/lib/services/ws-manager-service/models/assortment-data.model.mjs +0 -10
- package/esm2022/lib/services/ws-manager-service/websocket.service.mjs +0 -133
- package/esm2022/public-api.mjs +0 -11
- package/http-request-manager-19.0.0.tgz +0 -0
- package/index.d.ts +0 -5
- package/lib/http-request-manager.module.d.ts +0 -35
- package/lib/http-request-services-demo/database-data-demo/database-data-demo.component.d.ts +0 -19
- package/lib/http-request-services-demo/http-request-services-demo.component.d.ts +0 -32
- package/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.d.ts +0 -56
- package/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.d.ts +0 -55
- package/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.d.ts +0 -26
- package/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.d.ts +0 -13
- package/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.d.ts +0 -27
- package/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.d.ts +0 -12
- package/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.d.ts +0 -16
- package/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.d.ts +0 -8
- package/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.d.ts +0 -14
- package/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.d.ts +0 -14
- package/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.d.ts +0 -107
- package/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.d.ts +0 -122
- package/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.d.ts +0 -15
- package/lib/http-request-services-demo/request-signals-manager-demo/models/sample-ai-prompt.d.ts +0 -8
- package/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-info.d.ts +0 -14
- package/lib/http-request-services-demo/request-signals-manager-demo/models/sample-mapper-client-info.d.ts +0 -14
- package/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.d.ts +0 -106
- package/lib/index.d.ts +0 -3
- package/lib/interceptors/credentials.interceptor.d.ts +0 -8
- package/lib/interceptors/index.d.ts +0 -4
- package/lib/interceptors/models/error-settings.model.d.ts +0 -10
- package/lib/interceptors/proxy-debugger.interceptor.d.ts +0 -12
- package/lib/interceptors/request-error.interceptor.d.ts +0 -10
- package/lib/interceptors/request-header.interceptor.d.ts +0 -15
- package/lib/models/config-http-options.model.d.ts +0 -21
- package/lib/models/config-local-storage-options.model.d.ts +0 -13
- package/lib/models/config-options.model.d.ts +0 -12
- package/lib/models/config-token.model.d.ts +0 -8
- package/lib/models/data-type.enum.d.ts +0 -5
- package/lib/models/database-storage.model.d.ts +0 -10
- package/lib/models/index.d.ts +0 -6
- package/lib/models/retry-options.model.d.ts +0 -10
- package/lib/services/database-manager-services/database.manager.service.d.ts +0 -31
- package/lib/services/database-manager-services/db.storage.service.d.ts +0 -26
- package/lib/services/database-manager-services/index.d.ts +0 -3
- package/lib/services/database-manager-services/models/table-schema.d.ts +0 -11
- package/lib/services/index.d.ts +0 -4
- package/lib/services/local-storage-manager-service/index.d.ts +0 -3
- package/lib/services/local-storage-manager-service/local-storage-manager.service.d.ts +0 -86
- package/lib/services/local-storage-manager-service/local-storage-signals-manager.service.d.ts +0 -64
- package/lib/services/local-storage-manager-service/models/global-store-options.model.d.ts +0 -15
- package/lib/services/local-storage-manager-service/models/index.d.ts +0 -5
- package/lib/services/local-storage-manager-service/models/setting-options.model.d.ts +0 -15
- package/lib/services/local-storage-manager-service/models/storage-data.model.d.ts +0 -10
- package/lib/services/local-storage-manager-service/models/storage-option.model.d.ts +0 -13
- package/lib/services/local-storage-manager-service/models/storage-type.enum.d.ts +0 -5
- package/lib/services/request-manager-services/http-manager-signals.service.d.ts +0 -38
- package/lib/services/request-manager-services/http-manager.service.d.ts +0 -41
- package/lib/services/request-manager-services/index.d.ts +0 -4
- package/lib/services/request-manager-services/request-signals.service.d.ts +0 -26
- package/lib/services/request-manager-services/request.service.d.ts +0 -28
- package/lib/services/request-manager-services/rxjs-operators/countdown.d.ts +0 -2
- package/lib/services/request-manager-services/rxjs-operators/delay-retry.d.ts +0 -2
- package/lib/services/request-manager-services/rxjs-operators/index.d.ts +0 -4
- package/lib/services/request-manager-services/rxjs-operators/request-polling.d.ts +0 -2
- package/lib/services/request-manager-services/rxjs-operators/request-streaming.d.ts +0 -2
- package/lib/services/request-manager-state-service/http-manager-state.store.d.ts +0 -64
- package/lib/services/request-manager-state-service/index.d.ts +0 -2
- package/lib/services/request-manager-state-service/models/api-request.model.d.ts +0 -30
- package/lib/services/request-manager-state-service/models/index.d.ts +0 -2
- package/lib/services/request-manager-state-service/models/request-options.model.d.ts +0 -10
- package/lib/services/request-manager-state-service/models/ws-options.model.d.ts +0 -14
- package/lib/services/utils/app.service.d.ts +0 -8
- package/lib/services/utils/encryption/asymmetrical-encryption.service.d.ts +0 -17
- package/lib/services/utils/encryption/encryption-test.service.d.ts +0 -10
- package/lib/services/utils/encryption/index.d.ts +0 -3
- package/lib/services/utils/encryption/random.d.ts +0 -7
- package/lib/services/utils/encryption/symmetrical-encryption.service.d.ts +0 -14
- package/lib/services/utils/headers.service.d.ts +0 -10
- package/lib/services/utils/index.d.ts +0 -5
- package/lib/services/utils/object-merger.service.d.ts +0 -14
- package/lib/services/utils/path-query.service.d.ts +0 -11
- package/lib/services/utils/utils.service.d.ts +0 -24
- package/lib/services/ws-manager-service/models/assortment-data.model.d.ts +0 -10
- package/lib/services/ws-manager-service/websocket.service.d.ts +0 -21
- package/public-api.d.ts +0 -7
|
@@ -1,360 +0,0 @@
|
|
|
1
|
-
import { inject, Inject, Injectable, InjectionToken } from '@angular/core';
|
|
2
|
-
import { ComponentStore } from '@ngrx/component-store';
|
|
3
|
-
import { BehaviorSubject, of } from 'rxjs';
|
|
4
|
-
import { tap, switchMap, concatMap, scan, delay } from 'rxjs/operators';
|
|
5
|
-
import { DatabaseStorage } from '../../models/database-storage.model';
|
|
6
|
-
import { HTTPManagerService, DataType } from '../request-manager-services';
|
|
7
|
-
import { ApiRequest, RequestOptions } from './models';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
const API_OPTS = new InjectionToken('API_OPTS');
|
|
10
|
-
const defaultState = {
|
|
11
|
-
data: [],
|
|
12
|
-
dataObject: null,
|
|
13
|
-
};
|
|
14
|
-
export class HTTPManagerStateService extends ComponentStore {
|
|
15
|
-
constructor(apiOptions = ApiRequest.adapt(), dataType, database) {
|
|
16
|
-
super(defaultState);
|
|
17
|
-
this.apiOptions = apiOptions;
|
|
18
|
-
this.dataType = dataType;
|
|
19
|
-
this.database = database;
|
|
20
|
-
this.httpManagerService = inject(HTTPManagerService);
|
|
21
|
-
this.error$ = this.httpManagerService.error$;
|
|
22
|
-
this.isPending$ = this.httpManagerService.isPending$.pipe(delay(1));
|
|
23
|
-
// PAGINATION
|
|
24
|
-
this.page = new BehaviorSubject(0);
|
|
25
|
-
this.page$ = this.page.asObservable();
|
|
26
|
-
this.totalPages = new BehaviorSubject(0);
|
|
27
|
-
this.totalPages$ = this.totalPages.asObservable();
|
|
28
|
-
this.percentage = new BehaviorSubject(0);
|
|
29
|
-
this.percentage$ = this.percentage.asObservable();
|
|
30
|
-
// ----------
|
|
31
|
-
this.hasDatabase = false;
|
|
32
|
-
this.streamedResponse = [];
|
|
33
|
-
// WS
|
|
34
|
-
this.status$ = this.httpManagerService.connectionStatus$;
|
|
35
|
-
this.messages$ = null;
|
|
36
|
-
this.connectionStatus$ = null;
|
|
37
|
-
this.userList = [];
|
|
38
|
-
this.channels = [];
|
|
39
|
-
this.channelList = [];
|
|
40
|
-
this.messages = [];
|
|
41
|
-
this.wsConnection = false;
|
|
42
|
-
// --------------------------------------------------------------------------------------------------
|
|
43
|
-
// SELECTORS
|
|
44
|
-
this.data$ = this.select(({ data, dataObject }) => {
|
|
45
|
-
const isArray = (this.dataType === DataType.ARRAY) ? true : false;
|
|
46
|
-
return (isArray) ? data : dataObject;
|
|
47
|
-
});
|
|
48
|
-
this.selectRecord$ = (id) => this.select(this.data$, (data) => {
|
|
49
|
-
if (this.dataType === DataType.ARRAY && Array.isArray(data)) {
|
|
50
|
-
return data.find(item => item.id === id);
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
return data.id === id ? data : null;
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
// --------------------------------------------------------------------------------------------------
|
|
57
|
-
// UPDATERS
|
|
58
|
-
this.setData$ = this.updater((state, data) => {
|
|
59
|
-
if (!data)
|
|
60
|
-
return state;
|
|
61
|
-
if (this.dataType === DataType.ARRAY) {
|
|
62
|
-
const dataArray = Array.isArray(data) ? data : [data];
|
|
63
|
-
const stateDataSample = (state.data.length > 0) ? Object.keys(state.data[0]) : [];
|
|
64
|
-
const newDataSample = (dataArray.length > 0) ? Object.keys(dataArray[0]) : [];
|
|
65
|
-
const isSame = (state.data.length === 0) ? false : stateDataSample.every((value, index) => value === newDataSample[index]);
|
|
66
|
-
const updatedData = (!isSame && dataArray.length !== 0) ? this.updateArrayState([], dataArray) : this.updateArrayState(state.data, dataArray);
|
|
67
|
-
return { ...state, data: updatedData, dataObject: null };
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
const dataObject = this.isEmpty(data) ? null : data;
|
|
71
|
-
return { ...state, data: [], dataObject: dataObject };
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
this.addData$ = this.updater((state, data) => {
|
|
75
|
-
if (this.dataType === DataType.ARRAY) {
|
|
76
|
-
const exists = state.data.some(item => item.id === data.id);
|
|
77
|
-
if (exists) {
|
|
78
|
-
const updatedData = state.data.map(item => item.id === data.id ? data : item);
|
|
79
|
-
return { ...state, data: updatedData };
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
const newState = [...state.data, data];
|
|
83
|
-
return { ...state, data: newState };
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
return { ...state, dataObject: data };
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
|
-
this.deleteData$ = this.updater((state, data) => {
|
|
91
|
-
if (this.dataType === DataType.ARRAY) {
|
|
92
|
-
const newState = state.data.filter(item => item.id !== data.id);
|
|
93
|
-
return { ...state, ...{ data: newState } };
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
return { ...state, ...{ dataObject: null } };
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
|
-
this.updateData$ = this.updater((state, data) => {
|
|
100
|
-
if (this.dataType === DataType.ARRAY) {
|
|
101
|
-
const objIndex = state.data.findIndex(item => item.id === data.id);
|
|
102
|
-
if (objIndex > -1) {
|
|
103
|
-
const newState = [...state.data];
|
|
104
|
-
newState[objIndex] = data;
|
|
105
|
-
return { ...state, ...{ data: newState } };
|
|
106
|
-
}
|
|
107
|
-
return state;
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
return { ...state, ...{ dataObject: data } };
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
// --------------------------------------------------------------------------------------------------
|
|
114
|
-
// EFFECTS
|
|
115
|
-
this.clearRecords = this.effect(data => data.pipe(tap(() => {
|
|
116
|
-
if (this.dataType === DataType.ARRAY) {
|
|
117
|
-
this.setData$([]);
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
this.setData$({});
|
|
121
|
-
}
|
|
122
|
-
})));
|
|
123
|
-
this.refreshData = this.effect(data => data.pipe(tap(() => {
|
|
124
|
-
// this.apiService.flushDatabase(this.otherOptions.database?.table)
|
|
125
|
-
this.fetchRecords();
|
|
126
|
-
})));
|
|
127
|
-
// --------------------------------------------------------------------------------------------------
|
|
128
|
-
// CRUD OPERATIONS
|
|
129
|
-
// FETCH RECORDS
|
|
130
|
-
this.fetchRecords = (options) => this.effect(() => of(RequestOptions.adapt(options)).pipe(switchMap(() => {
|
|
131
|
-
this.streamedResponse = [];
|
|
132
|
-
const requestOptions = this.updateRequestOptions(options?.headers);
|
|
133
|
-
return this.httpManagerService.getRequest(requestOptions, options?.path)
|
|
134
|
-
.pipe(tap((data) => {
|
|
135
|
-
data = (!data) ? (this.dataType === DataType.ARRAY) ? [] : {} : data;
|
|
136
|
-
this.setData$(data);
|
|
137
|
-
}));
|
|
138
|
-
})));
|
|
139
|
-
// FETCH RECORD
|
|
140
|
-
this.fetchRecord = (options, method) => this.effect(() => of(RequestOptions.adapt(options)).pipe(switchMap((options) => {
|
|
141
|
-
this.streamedResponse = [];
|
|
142
|
-
const requestOptions = this.updateRequestOptions(options?.headers);
|
|
143
|
-
return this.httpManagerService.getRequest(requestOptions, options?.path)
|
|
144
|
-
.pipe(tap((data) => {
|
|
145
|
-
data = (!data) ? (this.dataType === DataType.ARRAY) ? [] : {} : data;
|
|
146
|
-
const id = options.path?.length ? options.path[options.path.length - 1] : 0;
|
|
147
|
-
if (method === 'DELETE')
|
|
148
|
-
this.deleteData$({ id });
|
|
149
|
-
if (method === 'UPDATE')
|
|
150
|
-
this.updateData$(data);
|
|
151
|
-
if (method === 'CREATE')
|
|
152
|
-
this.addData$(data);
|
|
153
|
-
}));
|
|
154
|
-
})));
|
|
155
|
-
// CREATE RECORD
|
|
156
|
-
this.createRecord = (data, options) => this.effect(() => of(data).pipe(switchMap((data) => {
|
|
157
|
-
this.streamedResponse = [];
|
|
158
|
-
const requestOptions = this.updateRequestOptions(options?.headers);
|
|
159
|
-
return this.httpManagerService.postRequest(data, requestOptions, options?.path)
|
|
160
|
-
.pipe(tap((data) => {
|
|
161
|
-
data = (!data) ? (this.dataType === DataType.ARRAY) ? [] : {} : data;
|
|
162
|
-
this.addData$(data);
|
|
163
|
-
if (this.wsConnection)
|
|
164
|
-
this.wsCommunication('CREATE', [...options?.path || [], data.id]);
|
|
165
|
-
}));
|
|
166
|
-
})));
|
|
167
|
-
// UPDATE RECORD
|
|
168
|
-
this.updateRecord = (data, options) => this.effect(() => of(data).pipe(concatMap((data) => {
|
|
169
|
-
this.streamedResponse = [];
|
|
170
|
-
const requestOptions = this.updateRequestOptions(options?.headers);
|
|
171
|
-
return this.httpManagerService.putRequest(data, requestOptions, options?.path)
|
|
172
|
-
.pipe(tap((data) => {
|
|
173
|
-
data = (!data) ? (this.dataType === DataType.ARRAY) ? [] : {} : data;
|
|
174
|
-
this.updateData$(data);
|
|
175
|
-
if (this.wsConnection)
|
|
176
|
-
this.wsCommunication('UPDATE', [...options?.path || []]);
|
|
177
|
-
}));
|
|
178
|
-
})));
|
|
179
|
-
// DELETE RECORD
|
|
180
|
-
this.deleteRecord = (options) => this.effect(() => of(options).pipe(concatMap((data) => {
|
|
181
|
-
this.streamedResponse = [];
|
|
182
|
-
const requestOptions = this.updateRequestOptions(options?.headers);
|
|
183
|
-
return this.httpManagerService.deleteRequest(requestOptions, options?.path)
|
|
184
|
-
.pipe(tap((data) => {
|
|
185
|
-
data = (!data) ? (this.dataType === DataType.ARRAY) ? [] : {} : data;
|
|
186
|
-
this.deleteData$(data);
|
|
187
|
-
if (this.wsConnection)
|
|
188
|
-
this.wsCommunication('DELETE', [...options?.path || []]);
|
|
189
|
-
}));
|
|
190
|
-
})));
|
|
191
|
-
// --------------------------------------------------------------------------------------------------
|
|
192
|
-
// FETCH STREAM
|
|
193
|
-
this.createStream = (data, options) => this.effect(() => of(data).pipe(tap(() => this.httpManagerService.isPending.next(true)), switchMap((data) => {
|
|
194
|
-
const requestOptions = this.updateRequestOptions(options?.headers);
|
|
195
|
-
return this.httpManagerService.postRequest(data, requestOptions, options?.path)
|
|
196
|
-
.pipe(tap((res) => {
|
|
197
|
-
if (res.length > 0)
|
|
198
|
-
this.setData$(res);
|
|
199
|
-
this.streamedResponse = res;
|
|
200
|
-
}), scan((acc, res) => {
|
|
201
|
-
const previous = acc.current;
|
|
202
|
-
const current = res;
|
|
203
|
-
return { previous, current };
|
|
204
|
-
}, { previous: null, current: null }), tap(({ previous, current }) => {
|
|
205
|
-
if (previous && JSON.stringify(previous) === JSON.stringify(current)) {
|
|
206
|
-
this.httpManagerService.isPending.next(false);
|
|
207
|
-
this.setData$([]);
|
|
208
|
-
}
|
|
209
|
-
else {
|
|
210
|
-
this.httpManagerService.isPending.next(true);
|
|
211
|
-
}
|
|
212
|
-
}));
|
|
213
|
-
})));
|
|
214
|
-
this.fetchStream = (options) => this.effect(() => of(options).pipe(tap(() => this.httpManagerService.isPending.next(true)), switchMap((options) => {
|
|
215
|
-
const requestOptions = this.updateRequestOptions(options?.headers);
|
|
216
|
-
requestOptions.stream = true;
|
|
217
|
-
return this.httpManagerService.getRequest(requestOptions, options?.path)
|
|
218
|
-
.pipe(tap((res) => {
|
|
219
|
-
if (res.length > 0)
|
|
220
|
-
this.setData$(res);
|
|
221
|
-
this.streamedResponse = res;
|
|
222
|
-
}), scan((acc, res) => {
|
|
223
|
-
const previous = acc.current;
|
|
224
|
-
const current = res;
|
|
225
|
-
return { previous, current };
|
|
226
|
-
}, { previous: null, current: null }), tap(({ previous, current }) => {
|
|
227
|
-
if (previous && JSON.stringify(previous) === JSON.stringify(current)) {
|
|
228
|
-
this.httpManagerService.isPending.next(false);
|
|
229
|
-
this.setData$([]);
|
|
230
|
-
}
|
|
231
|
-
else {
|
|
232
|
-
this.httpManagerService.isPending.next(true);
|
|
233
|
-
}
|
|
234
|
-
}));
|
|
235
|
-
})));
|
|
236
|
-
this.setApiRequestOptions(apiOptions, dataType, database);
|
|
237
|
-
}
|
|
238
|
-
setApiRequestOptions(apiOptions, dataType, database) {
|
|
239
|
-
this.apiOptions = ApiRequest.adapt(apiOptions);
|
|
240
|
-
this.dataType = (dataType) ? dataType : DataType.ARRAY;
|
|
241
|
-
this.hasDatabase = this.database?.table === "" ? false : true;
|
|
242
|
-
this.database = (this.hasDatabase) ? DatabaseStorage.adapt(database) : undefined;
|
|
243
|
-
console.log('WS API Options:', this.apiOptions.ws);
|
|
244
|
-
this.initWS(this.apiOptions.ws);
|
|
245
|
-
}
|
|
246
|
-
initWS(wsOptions) {
|
|
247
|
-
if (wsOptions?.wsServer)
|
|
248
|
-
this.httpManagerService.connect(wsOptions.wsServer, wsOptions.jwtToken);
|
|
249
|
-
// connection status
|
|
250
|
-
this.connectionStatus$ = this.httpManagerService.connectionStatus$
|
|
251
|
-
.subscribe((isConnected) => {
|
|
252
|
-
this.wsConnection = isConnected;
|
|
253
|
-
if (isConnected) {
|
|
254
|
-
console.log('🟢 WebSocket connection is open.');
|
|
255
|
-
this.httpManagerService.getAllChannels();
|
|
256
|
-
}
|
|
257
|
-
else {
|
|
258
|
-
console.log('🔴 WebSocket connection is closed.');
|
|
259
|
-
}
|
|
260
|
-
});
|
|
261
|
-
// Subscribe to incoming messages
|
|
262
|
-
this.messages$ = this.httpManagerService.messages$
|
|
263
|
-
.subscribe((message) => {
|
|
264
|
-
if (!message)
|
|
265
|
-
return;
|
|
266
|
-
console.log('Received message:', message);
|
|
267
|
-
switch (message.type) {
|
|
268
|
-
case 'channelsList':
|
|
269
|
-
console.log('💬 Channels:', message.channels);
|
|
270
|
-
this.channelList = message.channels;
|
|
271
|
-
if (this.channelList.includes(wsOptions.id)) {
|
|
272
|
-
this.httpManagerService.subscribeToChannel(wsOptions.id);
|
|
273
|
-
}
|
|
274
|
-
else {
|
|
275
|
-
this.httpManagerService.createChannel(wsOptions.id);
|
|
276
|
-
}
|
|
277
|
-
break;
|
|
278
|
-
case 'channelMessage':
|
|
279
|
-
console.log('💬 Message:', message.content);
|
|
280
|
-
this.fetchRecord(RequestOptions.adapt({ path: message.content.path }), message.content.method);
|
|
281
|
-
break;
|
|
282
|
-
case 'usersInChannel':
|
|
283
|
-
this.userList = message.users;
|
|
284
|
-
console.log('👥 Users:', message.users);
|
|
285
|
-
break;
|
|
286
|
-
default:
|
|
287
|
-
if (message)
|
|
288
|
-
this.messages.push(message);
|
|
289
|
-
break;
|
|
290
|
-
}
|
|
291
|
-
});
|
|
292
|
-
}
|
|
293
|
-
get ApiRequestOptions() {
|
|
294
|
-
return this.apiOptions;
|
|
295
|
-
}
|
|
296
|
-
initStorage() {
|
|
297
|
-
// if(this.otherOptions.database) {
|
|
298
|
-
// console.log('Has Database Option:', this.otherOptions.database.table)
|
|
299
|
-
// const schema = (this.otherOptions.adapters?.incoming) ? Object.keys(this.otherOptions.adapters.incoming({})).join() : '++id'
|
|
300
|
-
// this.apiService.initDB(this.otherOptions.database.expiresIn, this.otherOptions.database.table, schema)
|
|
301
|
-
// }
|
|
302
|
-
}
|
|
303
|
-
initializeState(data) {
|
|
304
|
-
this.setData$(data);
|
|
305
|
-
}
|
|
306
|
-
updateArrayState(currentData, newData) {
|
|
307
|
-
const filterCurrentData = () => {
|
|
308
|
-
const ids = this.streamedResponse.map((obj) => obj.id);
|
|
309
|
-
return currentData.filter(obj => (obj.id) ? ids.includes(obj.id) : obj);
|
|
310
|
-
};
|
|
311
|
-
const filteredCurrentData = (this.httpManagerService.isPending.value) ? currentData : filterCurrentData();
|
|
312
|
-
const updatedData = filteredCurrentData.map(item => {
|
|
313
|
-
const newItem = newData.find(newItem => {
|
|
314
|
-
const hasId = (newItem?.id && item?.id) ? true : false;
|
|
315
|
-
return (hasId) ? newItem.id === item.id : JSON.stringify(newItem) === JSON.stringify(item);
|
|
316
|
-
});
|
|
317
|
-
return (newItem) ? { ...item, ...newItem } : item;
|
|
318
|
-
});
|
|
319
|
-
const addedData = newData.filter(newItem => {
|
|
320
|
-
return !filteredCurrentData.some(item => {
|
|
321
|
-
const hasId = (newItem?.id && item?.id) ? true : false;
|
|
322
|
-
return (hasId) ? item.id === newItem.id : JSON.stringify(newItem) === JSON.stringify(item);
|
|
323
|
-
});
|
|
324
|
-
});
|
|
325
|
-
return [...updatedData, ...addedData];
|
|
326
|
-
}
|
|
327
|
-
wsCommunication(method, path) {
|
|
328
|
-
if (this.wsConnection && this.apiOptions.ws) {
|
|
329
|
-
const wsServer = this.apiOptions.ws.id;
|
|
330
|
-
this.httpManagerService.sendMessage(wsServer, { method, path });
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
// --------------------------------------------------------------------------------------------------
|
|
334
|
-
// MISC
|
|
335
|
-
isEmpty(obj) {
|
|
336
|
-
return Object.keys(obj).length === 0;
|
|
337
|
-
}
|
|
338
|
-
updateRequestOptions(headers) {
|
|
339
|
-
const options = ApiRequest.adapt({ ...this.apiOptions });
|
|
340
|
-
options.headers = (headers)
|
|
341
|
-
? { ...options.headers, ...headers }
|
|
342
|
-
: { ...options.headers };
|
|
343
|
-
return options;
|
|
344
|
-
}
|
|
345
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HTTPManagerStateService, deps: [{ token: API_OPTS }, { token: "dataType" }, { token: "database" }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
346
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HTTPManagerStateService }); }
|
|
347
|
-
}
|
|
348
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HTTPManagerStateService, decorators: [{
|
|
349
|
-
type: Injectable
|
|
350
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
351
|
-
type: Inject,
|
|
352
|
-
args: [API_OPTS]
|
|
353
|
-
}] }, { type: undefined, decorators: [{
|
|
354
|
-
type: Inject,
|
|
355
|
-
args: ["dataType"]
|
|
356
|
-
}] }, { type: undefined, decorators: [{
|
|
357
|
-
type: Inject,
|
|
358
|
-
args: ["database"]
|
|
359
|
-
}] }] });
|
|
360
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1tYW5hZ2VyLXN0YXRlLnN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy9yZXF1ZXN0LW1hbmFnZXItc3RhdGUtc2VydmljZS9odHRwLW1hbmFnZXItc3RhdGUuc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFJdEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxjQUFjLENBQWEsVUFBVSxDQUFDLENBQUM7QUFPNUQsTUFBTSxZQUFZLEdBQTZCO0lBQzdDLElBQUksRUFBRSxFQUFFO0lBQ1IsVUFBVSxFQUFFLElBQUk7Q0FDakIsQ0FBQztBQUdGLE1BQU0sT0FBTyx1QkFBa0QsU0FBUSxjQUFzQztJQWtDM0csWUFDNEIsYUFBYSxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQzdCLFFBQThCLEVBQzlCLFFBQXNDO1FBRWxFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUpNLGVBQVUsR0FBVixVQUFVLENBQXFC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Q0FBQzsrR0FyZ0JVLHVCQUF1QixrQkFtQ3hCLFFBQVEsYUFDUixVQUFVLGFBQ1YsVUFBVTttSEFyQ1QsdUJBQXVCOzs0RkFBdkIsdUJBQXVCO2tCQURuQyxVQUFVOzswQkFvQ04sTUFBTTsyQkFBQyxRQUFROzswQkFDZixNQUFNOzJCQUFDLFVBQVU7OzBCQUNqQixNQUFNOzJCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudFN0b3JlIH0gZnJvbSAnQG5ncngvY29tcG9uZW50LXN0b3JlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YXAsIHN3aXRjaE1hcCwgY29uY2F0TWFwLCBzY2FuLCBkZWxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERhdGFiYXNlU3RvcmFnZSB9IGZyb20gJy4uLy4uL21vZGVscy9kYXRhYmFzZS1zdG9yYWdlLm1vZGVsJztcbmltcG9ydCB7IEhUVFBNYW5hZ2VyU2VydmljZSwgRGF0YVR5cGUgfSBmcm9tICcuLi9yZXF1ZXN0LW1hbmFnZXItc2VydmljZXMnO1xuaW1wb3J0IHsgQXBpUmVxdWVzdCwgUmVxdWVzdE9wdGlvbnMgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBDaGFubmVsSW5mbyB9IGZyb20gJy4uL3dzLW1hbmFnZXItc2VydmljZS9tb2RlbHMvYXNzb3J0bWVudC1kYXRhLm1vZGVsJztcblxuXG5jb25zdCBBUElfT1BUUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBcGlSZXF1ZXN0PignQVBJX09QVFMnKTtcblxuZXhwb3J0IGludGVyZmFjZSBBUElTdGF0ZU1hbmFnZXJEYXRhPFQ+IHtcbiAgZGF0YTogVFtdXG4gIGRhdGFPYmplY3Q6IFQgfCBudWxsXG59XG5cbmNvbnN0IGRlZmF1bHRTdGF0ZTogQVBJU3RhdGVNYW5hZ2VyRGF0YTxhbnk+ID0ge1xuICBkYXRhOiBbXSxcbiAgZGF0YU9iamVjdDogbnVsbCxcbn07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBIVFRQTWFuYWdlclN0YXRlU2VydmljZTxUIGV4dGVuZHMgeyBpZDogbnVtYmVyIH0+IGV4dGVuZHMgQ29tcG9uZW50U3RvcmU8QVBJU3RhdGVNYW5hZ2VyRGF0YTxUPj4ge1xuXG4gIGh0dHBNYW5hZ2VyU2VydmljZSA9IGluamVjdChIVFRQTWFuYWdlclNlcnZpY2UpXG5cbiAgZXJyb3IkID0gdGhpcy5odHRwTWFuYWdlclNlcnZpY2UuZXJyb3IkXG4gIGlzUGVuZGluZyQgPSB0aGlzLmh0dHBNYW5hZ2VyU2VydmljZS5pc1BlbmRpbmckLnBpcGUoZGVsYXkoMSkpXG5cbiAgLy8gUEFHSU5BVElPTlxuICBwcml2YXRlIHBhZ2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMClcbiAgcGFnZSQgPSB0aGlzLnBhZ2UuYXNPYnNlcnZhYmxlKClcblxuICBwcml2YXRlIHRvdGFsUGFnZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMClcbiAgdG90YWxQYWdlcyQgPSB0aGlzLnRvdGFsUGFnZXMuYXNPYnNlcnZhYmxlKClcblxuICBwcml2YXRlIHBlcmNlbnRhZ2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMClcbiAgcGVyY2VudGFnZSQgPSB0aGlzLnBlcmNlbnRhZ2UuYXNPYnNlcnZhYmxlKClcbiAgLy8gLS0tLS0tLS0tLVxuXG4gIHByaXZhdGUgaGFzRGF0YWJhc2UgPSBmYWxzZVxuXG4gIHN0cmVhbWVkUmVzcG9uc2UgPSBbXVxuXG4gIC8vIFdTXG4gIHN0YXR1cyQgPSB0aGlzLmh0dHBNYW5hZ2VyU2VydmljZS5jb25uZWN0aW9uU3RhdHVzJDtcblxuICBtZXNzYWdlcyQ6IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuICBjb25uZWN0aW9uU3RhdHVzJDogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgdXNlckxpc3Q6IHN0cmluZ1tdID0gW11cbiAgY2hhbm5lbHM6IENoYW5uZWxJbmZvW10gPSBbXVxuICBjaGFubmVsTGlzdDogc3RyaW5nW10gPSBbXVxuICBtZXNzYWdlczogYW55W10gPSBbXVxuICB3c0Nvbm5lY3Rpb24gPSBmYWxzZVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoQVBJX09QVFMpIHByaXZhdGUgYXBpT3B0aW9ucyA9IEFwaVJlcXVlc3QuYWRhcHQoKSxcbiAgICBASW5qZWN0KFwiZGF0YVR5cGVcIikgcHJpdmF0ZSBkYXRhVHlwZTogRGF0YVR5cGUgfCB1bmRlZmluZWQsXG4gICAgQEluamVjdChcImRhdGFiYXNlXCIpIHByaXZhdGUgZGF0YWJhc2U/OiBEYXRhYmFzZVN0b3JhZ2UgfCB1bmRlZmluZWRcbiAgKSB7XG4gICAgc3VwZXIoZGVmYXVsdFN0YXRlKTtcbiAgICB0aGlzLnNldEFwaVJlcXVlc3RPcHRpb25zKGFwaU9wdGlvbnMsIGRhdGFUeXBlLCBkYXRhYmFzZSlcbiAgfVxuXG4gIHNldEFwaVJlcXVlc3RPcHRpb25zKGFwaU9wdGlvbnM/OiBBcGlSZXF1ZXN0LCBkYXRhVHlwZT86IERhdGFUeXBlLCBkYXRhYmFzZT86IERhdGFiYXNlU3RvcmFnZSkge1xuXG4gICAgdGhpcy5hcGlPcHRpb25zID0gQXBpUmVxdWVzdC5hZGFwdChhcGlPcHRpb25zKVxuICAgIHRoaXMuZGF0YVR5cGUgPSAoZGF0YVR5cGUpID8gZGF0YVR5cGUgOiBEYXRhVHlwZS5BUlJBWVxuXG4gICAgdGhpcy5oYXNEYXRhYmFzZSA9IHRoaXMuZGF0YWJhc2U/LnRhYmxlID09PSBcIlwiID8gZmFsc2UgOiB0cnVlXG4gICAgdGhpcy5kYXRhYmFzZSA9ICh0aGlzLmhhc0RhdGFiYXNlKSA/IERhdGFiYXNlU3RvcmFnZS5hZGFwdChkYXRhYmFzZSkgOiB1bmRlZmluZWRcblxuICAgIGNvbnNvbGUubG9nKCdXUyBBUEkgT3B0aW9uczonLCB0aGlzLmFwaU9wdGlvbnMud3MpXG4gICAgdGhpcy5pbml0V1ModGhpcy5hcGlPcHRpb25zLndzKVxuICB9XG5cbiAgaW5pdFdTKHdzT3B0aW9uczogYW55KSB7XG5cbiAgICBpZih3c09wdGlvbnM/LndzU2VydmVyKSB0aGlzLmh0dHBNYW5hZ2VyU2VydmljZS5jb25uZWN0KHdzT3B0aW9ucy53c1NlcnZlciwgd3NPcHRpb25zLmp3dFRva2VuKVxuXG4gICAgICAvLyBjb25uZWN0aW9uIHN0YXR1c1xuICAgIHRoaXMuY29ubmVjdGlvblN0YXR1cyQgPSB0aGlzLmh0dHBNYW5hZ2VyU2VydmljZS5jb25uZWN0aW9uU3RhdHVzJFxuICAgIC5zdWJzY3JpYmUoXG4gICAgICAoaXNDb25uZWN0ZWQ6IGFueSkgPT4ge1xuXG4gICAgICAgIHRoaXMud3NDb25uZWN0aW9uID0gaXNDb25uZWN0ZWRcblxuICAgICAgICBpZiAoaXNDb25uZWN0ZWQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygn8J+foiBXZWJTb2NrZXQgY29ubmVjdGlvbiBpcyBvcGVuLicpXG4gICAgICAgICAgdGhpcy5odHRwTWFuYWdlclNlcnZpY2UuZ2V0QWxsQ2hhbm5lbHMoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCfwn5S0IFdlYlNvY2tldCBjb25uZWN0aW9uIGlzIGNsb3NlZC4nKVxuICAgICAgICB9XG5cbiAgICAgIH1cbiAgICApXG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gaW5jb21pbmcgbWVzc2FnZXNcbiAgICB0aGlzLm1lc3NhZ2VzJCA9IHRoaXMuaHR0cE1hbmFnZXJTZXJ2aWNlLm1lc3NhZ2VzJFxuICAgIC5zdWJzY3JpYmUoKG1lc3NhZ2U6IGFueSkgPT4ge1xuXG4gICAgICBpZighbWVzc2FnZSkgcmV0dXJuXG5cbiAgICAgICAgY29uc29sZS5sb2coJ1JlY2VpdmVkIG1lc3NhZ2U6JywgbWVzc2FnZSlcblxuICAgICAgICBzd2l0Y2ggKG1lc3NhZ2UudHlwZSkge1xuICAgICAgICAgIGNhc2UgJ2NoYW5uZWxzTGlzdCc6XG5cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfwn5KsIENoYW5uZWxzOicsIG1lc3NhZ2UuY2hhbm5lbHMpXG5cbiAgICAgICAgICAgIHRoaXMuY2hhbm5lbExpc3QgPSBtZXNzYWdlLmNoYW5uZWxzXG5cbiAgICAgICAgICAgIGlmKHRoaXMuY2hhbm5lbExpc3QuaW5jbHVkZXMod3NPcHRpb25zLmlkKSkge1xuICAgICAgICAgICAgICB0aGlzLmh0dHBNYW5hZ2VyU2VydmljZS5zdWJzY3JpYmVUb0NoYW5uZWwod3NPcHRpb25zLmlkKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5odHRwTWFuYWdlclNlcnZpY2UuY3JlYXRlQ2hhbm5lbCh3c09wdGlvbnMuaWQpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAnY2hhbm5lbE1lc3NhZ2UnOlxuXG4gICAgICAgICAgICBjb25zb2xlLmxvZygn8J+SrCBNZXNzYWdlOicsIG1lc3NhZ2UuY29udGVudClcbiAgICAgICAgICAgIHRoaXMuZmV0Y2hSZWNvcmQoUmVxdWVzdE9wdGlvbnMuYWRhcHQoeyBwYXRoOiBtZXNzYWdlLmNvbnRlbnQucGF0aCB9KSwgbWVzc2FnZS5jb250ZW50Lm1ldGhvZClcblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICd1c2Vyc0luQ2hhbm5lbCc6XG5cbiAgICAgICAgICAgIHRoaXMudXNlckxpc3QgPSBtZXNzYWdlLnVzZXJzXG4gICAgICAgICAgICBjb25zb2xlLmxvZygn8J+RpSBVc2VyczonLCBtZXNzYWdlLnVzZXJzKVxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGRlZmF1bHQ6XG5cbiAgICAgICAgICAgIGlmIChtZXNzYWdlKSB0aGlzLm1lc3NhZ2VzLnB1c2gobWVzc2FnZSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cblxuICAgIH0pXG5cbiAgfVxuXG4gIGdldCBBcGlSZXF1ZXN0T3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlPcHRpb25zXG4gIH1cblxuICBpbml0U3RvcmFnZSgpIHtcbiAgICAvLyBpZih0aGlzLm90aGVyT3B0aW9ucy5kYXRhYmFzZSkge1xuICAgICAgLy8gY29uc29sZS5sb2coJ0hhcyBEYXRhYmFzZSBPcHRpb246JywgdGhpcy5vdGhlck9wdGlvbnMuZGF0YWJhc2UudGFibGUpXG4gICAgICAvLyBjb25zdCBzY2hlbWEgPSAodGhpcy5vdGhlck9wdGlvbnMuYWRhcHRlcnM/LmluY29taW5nKSA/IE9iamVjdC5rZXlzKHRoaXMub3RoZXJPcHRpb25zLmFkYXB0ZXJzLmluY29taW5nKHt9KSkuam9pbigpIDogJysraWQnXG4gICAgICAvLyB0aGlzLmFwaVNlcnZpY2UuaW5pdERCKHRoaXMub3RoZXJPcHRpb25zLmRhdGFiYXNlLmV4cGlyZXNJbiwgdGhpcy5vdGhlck9wdGlvbnMuZGF0YWJhc2UudGFibGUsIHNjaGVtYSlcbiAgICAvLyB9XG4gIH1cblxuICBpbml0aWFsaXplU3RhdGUoZGF0YTogYW55KSB7XG4gICAgdGhpcy5zZXREYXRhJChkYXRhKVxuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gU0VMRUNUT1JTXG5cbiAgcmVhZG9ubHkgZGF0YSQgPSB0aGlzLnNlbGVjdCgoeyBkYXRhLCBkYXRhT2JqZWN0IH0pID0+IHtcbiAgICBjb25zdCBpc0FycmF5ID0oIHRoaXMuZGF0YVR5cGUgPT09IERhdGFUeXBlLkFSUkFZKSA/IHRydWUgOiBmYWxzZVxuICAgIHJldHVybiAoaXNBcnJheSkgPyBkYXRhIDogZGF0YU9iamVjdFxuICB9KVxuXG4gIHJlYWRvbmx5IHNlbGVjdFJlY29yZCQgPSAoaWQ6IG51bWJlcikgPT4gdGhpcy5zZWxlY3QoXG4gICAgdGhpcy5kYXRhJCxcbiAgICAoZGF0YSkgPT4ge1xuICAgICAgaWYgKHRoaXMuZGF0YVR5cGUgPT09IERhdGFUeXBlLkFSUkFZICYmIEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgcmV0dXJuIGRhdGEuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IGlkKSBhcyBUIHwgbnVsbFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIChkYXRhIGFzIFQpLmlkID09PSBpZCA/IGRhdGEgOiBudWxsXG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8gVVBEQVRFUlNcblxuICBwcml2YXRlIHJlYWRvbmx5IHNldERhdGEkID0gdGhpcy51cGRhdGVyKChzdGF0ZTogQVBJU3RhdGVNYW5hZ2VyRGF0YTxUPiwgZGF0YTogVCB8IFRbXSB8IGFueSkgPT4ge1xuXG4gICAgaWYgKCFkYXRhKSByZXR1cm4gc3RhdGU7XG5cbiAgICBpZiAodGhpcy5kYXRhVHlwZSA9PT0gRGF0YVR5cGUuQVJSQVkpIHtcblxuICAgICAgY29uc3QgZGF0YUFycmF5ID0gQXJyYXkuaXNBcnJheShkYXRhKSA/IGRhdGEgOiBbZGF0YV1cblxuICAgICAgY29uc3Qgc3RhdGVEYXRhU2FtcGxlID0gKHN0YXRlLmRhdGEubGVuZ3RoID4gMCkgPyBPYmplY3Qua2V5cyhzdGF0ZS5kYXRhWzBdKSA6IFtdXG4gICAgICBjb25zdCBuZXdEYXRhU2FtcGxlID0gKGRhdGFBcnJheS5sZW5ndGggPiAwKSA/IE9iamVjdC5rZXlzKGRhdGFBcnJheVswXSkgOiBbXVxuXG4gICAgICBjb25zdCBpc1NhbWUgPSAoc3RhdGUuZGF0YS5sZW5ndGggPT09IDApID8gZmFsc2UgOiBzdGF0ZURhdGFTYW1wbGUuZXZlcnkoKHZhbHVlLCBpbmRleCkgPT4gdmFsdWUgPT09IG5ld0RhdGFTYW1wbGVbaW5kZXhdKVxuICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSAoIWlzU2FtZSAmJiBkYXRhQXJyYXkubGVuZ3RoICE9PSAwKSA/IHRoaXMudXBkYXRlQXJyYXlTdGF0ZShbXSwgZGF0YUFycmF5KSA6IHRoaXMudXBkYXRlQXJyYXlTdGF0ZShzdGF0ZS5kYXRhLCBkYXRhQXJyYXkpXG5cbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBkYXRhOiB1cGRhdGVkRGF0YSwgZGF0YU9iamVjdDogbnVsbCB9IGFzIEFQSVN0YXRlTWFuYWdlckRhdGE8VD47XG5cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZGF0YU9iamVjdCA9IHRoaXMuaXNFbXB0eShkYXRhKSA/IG51bGwgOiBkYXRhO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGRhdGE6IFtdLCBkYXRhT2JqZWN0OiBkYXRhT2JqZWN0IH0gYXMgQVBJU3RhdGVNYW5hZ2VyRGF0YTxUPjtcbiAgICB9XG5cbiAgfSk7XG5cbiAgcHJpdmF0ZSB1cGRhdGVBcnJheVN0YXRlKGN1cnJlbnREYXRhOiBhbnlbXSwgbmV3RGF0YTogYW55W10pOiBhbnlbXSB7XG5cbiAgICBjb25zdCBmaWx0ZXJDdXJyZW50RGF0YSA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGlkcyA9IHRoaXMuc3RyZWFtZWRSZXNwb25zZS5tYXAoKG9iajogYW55KSA9PiBvYmouaWQpXG4gICAgICByZXR1cm4gY3VycmVudERhdGEuZmlsdGVyKG9iaiA9PiAob2JqLmlkKSA/IGlkcy5pbmNsdWRlcyhvYmouaWQpIDogb2JqKVxuICAgIH1cblxuICAgIGNvbnN0IGZpbHRlcmVkQ3VycmVudERhdGEgPSAodGhpcy5odHRwTWFuYWdlclNlcnZpY2UuaXNQZW5kaW5nLnZhbHVlKSA/IGN1cnJlbnREYXRhIDogZmlsdGVyQ3VycmVudERhdGEoKVxuXG4gICAgY29uc3QgdXBkYXRlZERhdGEgPSBmaWx0ZXJlZEN1cnJlbnREYXRhLm1hcChpdGVtID0+IHtcbiAgICAgICAgY29uc3QgbmV3SXRlbSA9IG5ld0RhdGEuZmluZChuZXdJdGVtID0+IHtcbiAgICAgICAgICBjb25zdCBoYXNJZCA9IChuZXdJdGVtPy5pZCAmJiBpdGVtPy5pZCkgPyB0cnVlIDogZmFsc2VcbiAgICAgICAgICByZXR1cm4gKGhhc0lkKSA/IG5ld0l0ZW0uaWQgPT09IGl0ZW0uaWQgOiBKU09OLnN0cmluZ2lmeShuZXdJdGVtKSA9PT0gSlNPTi5zdHJpbmdpZnkoaXRlbSlcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuIChuZXdJdGVtKSA/IHsgLi4uaXRlbSwgLi4ubmV3SXRlbSB9IDogaXRlbVxuICAgIH0pXG5cbiAgICBjb25zdCBhZGRlZERhdGEgPSBuZXdEYXRhLmZpbHRlcihuZXdJdGVtID0+IHtcbiAgICAgIHJldHVybiAhZmlsdGVyZWRDdXJyZW50RGF0YS5zb21lKGl0ZW0gPT4ge1xuICAgICAgICAgIGNvbnN0IGhhc0lkID0gKG5ld0l0ZW0/LmlkICYmIGl0ZW0/LmlkKSA/IHRydWUgOiBmYWxzZVxuICAgICAgICAgIHJldHVybiAoaGFzSWQpID8gaXRlbS5pZCA9PT0gbmV3SXRlbS5pZCA6IEpTT04uc3RyaW5naWZ5KG5ld0l0ZW0pID09PSBKU09OLnN0cmluZ2lmeShpdGVtKVxuICAgICAgfSlcbiAgICB9KVxuXG4gICAgcmV0dXJuIFsuLi51cGRhdGVkRGF0YSwgLi4uYWRkZWREYXRhXVxuXG59XG5cbiAgcHJpdmF0ZSByZWFkb25seSBhZGREYXRhJCA9IHRoaXMudXBkYXRlcigoc3RhdGU6IEFQSVN0YXRlTWFuYWdlckRhdGE8VD4sIGRhdGE6IFQpID0+IHtcblxuICBpZiAodGhpcy5kYXRhVHlwZSA9PT0gRGF0YVR5cGUuQVJSQVkpIHtcbiAgICAgIGNvbnN0IGV4aXN0cyA9IHN0YXRlLmRhdGEuc29tZShpdGVtID0+IGl0ZW0uaWQgPT09IGRhdGEuaWQpO1xuXG4gICAgICBpZiAoZXhpc3RzKSB7XG4gICAgICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSBzdGF0ZS5kYXRhLm1hcChpdGVtID0+XG4gICAgICAgICAgaXRlbS5pZCA9PT0gZGF0YS5pZCA/IGRhdGEgOiBpdGVtXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGRhdGE6IHVwZGF0ZWREYXRhIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IFsuLi5zdGF0ZS5kYXRhLCBkYXRhXTtcbiAgICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGRhdGE6IG5ld1N0YXRlIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBkYXRhT2JqZWN0OiBkYXRhIH07XG4gICAgfVxuXG4gIH0pXG5cbiAgcHJpdmF0ZSByZWFkb25seSBkZWxldGVEYXRhJCA9IHRoaXMudXBkYXRlcigoc3RhdGU6IEFQSVN0YXRlTWFuYWdlckRhdGE8VD4sIGRhdGE6IFQgJiB7IGlkOiBudW1iZXIgfSkgPT4ge1xuICAgIGlmICh0aGlzLmRhdGFUeXBlID09PSBEYXRhVHlwZS5BUlJBWSkge1xuICAgIGNvbnN0IG5ld1N0YXRlID0gc3RhdGUuZGF0YS5maWx0ZXIoaXRlbSA9PiBpdGVtLmlkICE9PSBkYXRhLmlkKVxuICAgIHJldHVybiB7IC4uLnN0YXRlLCAuLi57IGRhdGE6IG5ld1N0YXRlIH0gfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgLi4ueyBkYXRhT2JqZWN0OiBudWxsIH0gfVxuICAgIH1cbiAgfSlcblxuICBwcml2YXRlIHJlYWRvbmx5IHVwZGF0ZURhdGEkID0gdGhpcy51cGRhdGVyKChzdGF0ZTogQVBJU3RhdGVNYW5hZ2VyRGF0YTxUPiwgZGF0YTogVCkgPT4ge1xuXG4gICAgaWYgKHRoaXMuZGF0YVR5cGUgPT09IERhdGFUeXBlLkFSUkFZKSB7XG5cbiAgICAgIGNvbnN0IG9iakluZGV4ID0gc3RhdGUuZGF0YS5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmlkID09PSBkYXRhLmlkKVxuXG4gICAgICBpZiAob2JqSW5kZXggPiAtMSkge1xuICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IFsuLi5zdGF0ZS5kYXRhXVxuICAgICAgICBuZXdTdGF0ZVtvYmpJbmRleF0gPSBkYXRhXG4gICAgICAgIHJldHVybiB7IC4uLnN0YXRlLCAuLi57IGRhdGE6IG5ld1N0YXRlIH0gfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gc3RhdGVcblxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgLi4ueyBkYXRhT2JqZWN0OiBkYXRhIH0gfVxuICAgIH1cblxuICB9KVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIEVGRkVDVFNcblxuICByZWFkb25seSBjbGVhclJlY29yZHMgPSB0aGlzLmVmZmVjdChkYXRhID0+XG4gICAgZGF0YS5waXBlKFxuICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZGF0YVR5cGUgPT09IERhdGFUeXBlLkFSUkFZKSB7XG4gICAgICAgICAgdGhpcy5zZXREYXRhJChbXSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNldERhdGEkKHt9KVxuICAgICAgICB9XG4gICAgICB9KVxuICApKVxuXG4gIHJlYWRvbmx5IHJlZnJlc2hEYXRhID0gdGhpcy5lZmZlY3QoZGF0YSA9PlxuICAgIGRhdGEucGlwZShcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIC8vIHRoaXMuYXBpU2VydmljZS5mbHVzaERhdGFiYXNlKHRoaXMub3RoZXJPcHRpb25zLmRhdGFiYXNlPy50YWJsZSlcbiAgICAgICAgdGhpcy5mZXRjaFJlY29yZHMoKVxuICAgICAgfSlcbiAgKSlcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBDUlVEIE9QRVJBVElPTlNcblxuICAvLyBGRVRDSCBSRUNPUkRTXG4gIHJlYWRvbmx5IGZldGNoUmVjb3JkcyA9IChvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpID0+XG4gICAgdGhpcy5lZmZlY3Q8YW55PigoKSA9PlxuICAgIG9mKFJlcXVlc3RPcHRpb25zLmFkYXB0KG9wdGlvbnMpKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcblxuICAgICAgICB0aGlzLnN0cmVhbWVkUmVzcG9uc2UgPSBbXVxuICAgICAgICBjb25zdCByZXF1ZXN0T3B0aW9ucyA9IHRoaXMudXBkYXRlUmVxdWVzdE9wdGlvbnMob3B0aW9ucz8uaGVhZGVycylcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwTWFuYWdlclNlcnZpY2UuZ2V0UmVxdWVzdChyZXF1ZXN0T3B0aW9ucywgb3B0aW9ucz8ucGF0aClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFwKChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGRhdGEgPSAoIWRhdGEpID8gKHRoaXMuZGF0YVR5cGUgPT09IERhdGFUeXBlLkFSUkFZKSA/IFtdIDoge30gOiBkYXRhXG4gICAgICAgICAgICB0aGlzLnNldERhdGEkKGRhdGEpXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuXG4gICAgICB9KVxuICAgIClcbiAgKVxuXG4gIC8vIEZFVENIIFJFQ09SRFxuICByZWFkb25seSBmZXRjaFJlY29yZCA9IChvcHRpb25zOiBSZXF1ZXN0T3B0aW9ucywgbWV0aG9kOiBzdHJpbmcpID0+XG4gICAgdGhpcy5lZmZlY3Q8YW55PigoKSA9PlxuICAgIG9mKFJlcXVlc3RPcHRpb25zLmFkYXB0KG9wdGlvbnMpKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChvcHRpb25zKSA9PiB7XG5cbiAgICAgICAgdGhpcy5zdHJlYW1lZFJlc3BvbnNlID0gW11cbiAgICAgICAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB0aGlzLnVwZGF0ZVJlcXVlc3RPcHRpb25zKG9wdGlvbnM/LmhlYWRlcnMpXG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cE1hbmFnZXJTZXJ2aWNlLmdldFJlcXVlc3QocmVxdWVzdE9wdGlvbnMsIG9wdGlvbnM/LnBhdGgpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRhcCgoZGF0YTogYW55KSA9PiB7XG5cbiAgICAgICAgICAgIGRhdGEgPSAoIWRhdGEpID8gKHRoaXMuZGF0YVR5cGUgPT09IERhdGFUeXBlLkFSUkFZKSA/IFtdIDoge30gOiBkYXRhXG5cbiAgICAgICAgICAgIGNvbnN0IGlkID0gKG9wdGlvbnMgYXMgYW55KS5wYXRoPy5sZW5ndGggPyBvcHRpb25zLnBhdGhbb3B0aW9ucy5wYXRoLmxlbmd0aCAtMV0gOiAwXG5cbiAgICAgICAgICAgIGlmKG1ldGhvZCA9PT0gJ0RFTEVURScpIHRoaXMuZGVsZXRlRGF0YSQoeyBpZCB9IGFzIFQgJiB7IGlkOiBudW1iZXIgfSlcbiAgICAgICAgICAgIGlmKG1ldGhvZCA9PT0gJ1VQREFURScpIHRoaXMudXBkYXRlRGF0YSQoZGF0YSlcbiAgICAgICAgICAgIGlmKG1ldGhvZCA9PT0gJ0NSRUFURScpIHRoaXMuYWRkRGF0YSQoZGF0YSlcblxuICAgICAgICAgIH0pXG4gICAgICAgIClcblxuICAgICAgfSlcbiAgICApXG4gIClcblxuICAvLyBDUkVBVEUgUkVDT1JEXG4gIHJlYWRvbmx5IGNyZWF0ZVJlY29yZCA9IChkYXRhOiBhbnl8bnVsbCwgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKSA9PlxuICAgIHRoaXMuZWZmZWN0PGFueT4oKCkgPT5cbiAgICAgIG9mKGRhdGEpLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoZGF0YTogYW55KSA9PiB7XG5cbiAgICAgICAgdGhpcy5zdHJlYW1lZFJlc3BvbnNlID0gW11cbiAgICAgICAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB0aGlzLnVwZGF0ZVJlcXVlc3RPcHRpb25zKG9wdGlvbnM/LmhlYWRlcnMpXG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cE1hbmFnZXJTZXJ2aWNlLnBvc3RSZXF1ZXN0KGRhdGEsIHJlcXVlc3RPcHRpb25zLCBvcHRpb25zPy5wYXRoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YXAoKGRhdGE6IGFueSkgPT4ge1xuXG4gICAgICAgICAgICBkYXRhID0gKCFkYXRhKSA/ICh0aGlzLmRhdGFUeXBlID09PSBEYXRhVHlwZS5BUlJBWSkgPyBbXSA6IHt9IDogZGF0YVxuICAgICAgICAgICAgdGhpcy5hZGREYXRhJChkYXRhKVxuXG4gICAgICAgICAgICBpZih0aGlzLndzQ29ubmVjdGlvbikgdGhpcy53c0NvbW11bmljYXRpb24oJ0NSRUFURScsIFsuLi5vcHRpb25zPy5wYXRoIHx8IFtdLCBkYXRhLmlkXSlcblxuICAgICAgICAgIH0pLFxuICAgICAgICApXG5cbiAgICAgIH0pXG4gICAgKVxuICApXG5cbiAgLy8gVVBEQVRFIFJFQ09SRFxuICByZWFkb25seSB1cGRhdGVSZWNvcmQgPSAoZGF0YTogYW55fG51bGwsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucykgPT5cbiAgICB0aGlzLmVmZmVjdDxhbnk+KCgpID0+XG4gICAgb2YoZGF0YSkucGlwZShcbiAgICAgIGNvbmNhdE1hcCgoZGF0YTogYW55KSA9PiB7XG5cbiAgICAgICAgdGhpcy5zdHJlYW1lZFJlc3BvbnNlID0gW11cbiAgICAgICAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB0aGlzLnVwZGF0ZVJlcXVlc3RPcHRpb25zKG9wdGlvbnM/LmhlYWRlcnMpXG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cE1hbmFnZXJTZXJ2aWNlLnB1dFJlcXVlc3QoZGF0YSwgcmVxdWVzdE9wdGlvbnMsIG9wdGlvbnM/LnBhdGgpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRhcCgoZGF0YTogYW55KSA9PiB7XG5cbiAgICAgICAgICAgIGRhdGEgPSAoIWRhdGEpID8gKHRoaXMuZGF0YVR5cGUgPT09IERhdGFUeXBlLkFSUkFZKSA/IFtdIDoge30gOiBkYXRhXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZURhdGEkKGRhdGEpXG5cbiAgICAgICAgICAgIGlmKHRoaXMud3NDb25uZWN0aW9uKSB0aGlzLndzQ29tbXVuaWNhdGlvbignVVBEQVRFJywgWy4uLm9wdGlvbnM/LnBhdGggfHwgW11dKVxuXG4gICAgICAgICAgfSksXG4gICAgICAgIClcblxuICAgICAgfSlcbiAgICApXG4gIClcblxuICAvLyBERUxFVEUgUkVDT1JEXG4gIHJlYWRvbmx5IGRlbGV0ZVJlY29yZCA9IChvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpID0+XG4gICAgdGhpcy5lZmZlY3Q8YW55PigoKSA9PlxuICAgIG9mKG9wdGlvbnMpLnBpcGUoXG4gICAgICBjb25jYXRNYXAoKGRhdGE6IGFueSkgPT4ge1xuXG4gICAgICAgIHRoaXMuc3RyZWFtZWRSZXNwb25zZSA9IFtdXG4gICAgICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zID0gdGhpcy51cGRhdGVSZXF1ZXN0T3B0aW9ucyhvcHRpb25zPy5oZWFkZXJzKVxuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBNYW5hZ2VyU2VydmljZS5kZWxldGVSZXF1ZXN0KHJlcXVlc3RPcHRpb25zLCBvcHRpb25zPy5wYXRoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YXAoKGRhdGE6IGFueSkgPT4ge1xuXG4gICAgICAgICAgICBkYXRhID0gKCFkYXRhKSA/ICh0aGlzLmRhdGFUeXBlID09PSBEYXRhVHlwZS5BUlJBWSkgPyBbXSA6IHt9IDogZGF0YVxuICAgICAgICAgICAgdGhpcy5kZWxldGVEYXRhJChkYXRhKVxuXG4gICAgICAgICAgICBpZih0aGlzLndzQ29ubmVjdGlvbikgdGhpcy53c0NvbW11bmljYXRpb24oJ0RFTEVURScsIFsuLi5vcHRpb25zPy5wYXRoIHx8IFtdXSlcblxuICAgICAgICAgIH0pLFxuICAgICAgICApXG5cbiAgICAgIH0pXG4gICAgKVxuICApXG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gRkVUQ0ggU1RSRUFNXG5cbiAgcmVhZG9ubHkgY3JlYXRlU3RyZWFtID0gKGRhdGE6IGFueXxudWxsLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpID0+XG4gICAgdGhpcy5lZmZlY3Q8YW55PigoKSA9PlxuICAgIG9mKGRhdGEpLnBpcGUoXG4gICAgICB0YXAoKCkgPT4gdGhpcy5odHRwTWFuYWdlclNlcnZpY2UuaXNQZW5kaW5nLm5leHQodHJ1ZSkpLFxuICAgICAgc3dpdGNoTWFwKChkYXRhOiBhbnkpID0+IHtcblxuICAgICAgICBjb25zdCByZXF1ZXN0T3B0aW9ucyA9IHRoaXMudXBkYXRlUmVxdWVzdE9wdGlvbnMob3B0aW9ucz8uaGVhZGVycylcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwTWFuYWdlclNlcnZpY2UucG9zdFJlcXVlc3QoZGF0YSwgcmVxdWVzdE9wdGlvbnMsIG9wdGlvbnM/LnBhdGgpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRhcCgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmKHJlcy5sZW5ndGggPiAwKSB0aGlzLnNldERhdGEkKHJlcylcbiAgICAgICAgICAgIHRoaXMuc3RyZWFtZWRSZXNwb25zZSA9IHJlc1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHNjYW4oKGFjYywgcmVzOiBhbnkpID0+IHtcblxuICAgICAgICAgICAgY29uc3QgcHJldmlvdXMgPSBhY2MuY3VycmVudFxuICAgICAgICAgICAgY29uc3QgY3VycmVudCA9IHJlc1xuICAgICAgICAgICAgcmV0dXJuIHsgcHJldmlvdXMsIGN1cnJlbnQgfTtcblxuICAgICAgICAgIH0sIHsgcHJldmlvdXM6IG51bGwsIGN1cnJlbnQ6IG51bGwgfSksXG4gICAgICAgICAgdGFwKCh7IHByZXZpb3VzLCBjdXJyZW50IH0pID0+IHtcblxuICAgICAgICAgICAgaWYocHJldmlvdXMgJiYgSlNPTi5zdHJpbmdpZnkocHJldmlvdXMpID09PSBKU09OLnN0cmluZ2lmeShjdXJyZW50KSkge1xuICAgICAgICAgICAgICB0aGlzLmh0dHBNYW5hZ2VyU2VydmljZS5pc1BlbmRpbmcubmV4dChmYWxzZSlcbiAgICAgICAgICAgICAgdGhpcy5zZXREYXRhJChbXSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuaHR0cE1hbmFnZXJTZXJ2aWNlLmlzUGVuZGluZy5uZXh0KHRydWUpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9KVxuICAgICAgICApXG5cbiAgICAgIH0pXG4gICAgKVxuXG4gIClcblxuICByZWFkb25seSBmZXRjaFN0cmVhbSA9IChvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpID0+XG4gICAgdGhpcy5lZmZlY3Q8YW55PigoKSA9PlxuICAgIG9mKG9wdGlvbnMpLnBpcGUoXG4gICAgICB0YXAoKCkgPT4gdGhpcy5odHRwTWFuYWdlclNlcnZpY2UuaXNQZW5kaW5nLm5leHQodHJ1ZSkpLFxuICAgICAgc3dpdGNoTWFwKChvcHRpb25zOiBhbnkpID0+IHtcblxuICAgICAgICBjb25zdCByZXF1ZXN0T3B0aW9ucyA9IHRoaXMudXBkYXRlUmVxdWVzdE9wdGlvbnMob3B0aW9ucz8uaGVhZGVycylcbiAgICAgICAgcmVxdWVzdE9wdGlvbnMuc3RyZWFtID0gdHJ1ZVxuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBNYW5hZ2VyU2VydmljZS5nZXRSZXF1ZXN0KHJlcXVlc3RPcHRpb25zLCBvcHRpb25zPy5wYXRoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YXAoKHJlczogYW55KSA9PiB7XG5cbiAgICAgICAgICAgIGlmKHJlcy5sZW5ndGggPiAwKSB0aGlzLnNldERhdGEkKHJlcylcbiAgICAgICAgICAgIHRoaXMuc3RyZWFtZWRSZXNwb25zZSA9IHJlc1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHNjYW4oKGFjYywgcmVzOiBhbnkpID0+IHtcblxuICAgICAgICAgICAgY29uc3QgcHJldmlvdXMgPSBhY2MuY3VycmVudFxuICAgICAgICAgICAgY29uc3QgY3VycmVudCA9IHJlc1xuICAgICAgICAgICAgcmV0dXJuIHsgcHJldmlvdXMsIGN1cnJlbnQgfVxuXG4gICAgICAgICAgfSwgeyBwcmV2aW91czogbnVsbCwgY3VycmVudDogbnVsbCB9KSxcbiAgICAgICAgICB0YXAoKHsgcHJldmlvdXMsIGN1cnJlbnQgfSkgPT4ge1xuXG4gICAgICAgICAgICBpZihwcmV2aW91cyAmJiBKU09OLnN0cmluZ2lmeShwcmV2aW91cykgPT09IEpTT04uc3RyaW5naWZ5KGN1cnJlbnQpKSB7XG4gICAgICAgICAgICAgIHRoaXMuaHR0cE1hbmFnZXJTZXJ2aWNlLmlzUGVuZGluZy5uZXh0KGZhbHNlKVxuICAgICAgICAgICAgICB0aGlzLnNldERhdGEkKFtdKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5odHRwTWFuYWdlclNlcnZpY2UuaXNQZW5kaW5nLm5leHQodHJ1ZSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0pXG4gICAgICAgIClcblxuICAgICAgfSksXG4gICAgKVxuICApXG5cbiAgcHJpdmF0ZSB3c0NvbW11bmljYXRpb24obWV0aG9kOiBzdHJpbmcsIHBhdGg/OiBzdHJpbmd8bnVtYmVyW10pIHtcblxuICAgIGlmKHRoaXMud3NDb25uZWN0aW9uICYmIHRoaXMuYXBpT3B0aW9ucy53cykge1xuICAgICAgY29uc3Qgd3NTZXJ2ZXIgPSB0aGlzLmFwaU9wdGlvbnMud3MuaWRcbiAgICAgIHRoaXMuaHR0cE1hbmFnZXJTZXJ2aWNlLnNlbmRNZXNzYWdlKHdzU2VydmVyLCB7IG1ldGhvZCwgcGF0aCB9KVxuICAgIH1cblxuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gTUlTQ1xuXG4gIHByaXZhdGUgaXNFbXB0eShvYmo6IGFueSkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA9PT0gMFxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVSZXF1ZXN0T3B0aW9ucyhoZWFkZXJzPzogYW55KTogQXBpUmVxdWVzdCB7XG5cbiAgICBjb25zdCBvcHRpb25zID0gQXBpUmVxdWVzdC5hZGFwdCh7IC4uLnRoaXMuYXBpT3B0aW9ucyB9KVxuXG4gICAgb3B0aW9ucy5oZWFkZXJzID0gKGhlYWRlcnMpXG4gICAgICAgICAgPyB7IC4uLm9wdGlvbnMuaGVhZGVycywgLi4uaGVhZGVycyB9XG4gICAgICAgICAgOiB7IC4uLm9wdGlvbnMuaGVhZGVycyB9XG5cbiAgICByZXR1cm4gb3B0aW9uc1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export * from "./http-manager-state.store";
|
|
2
|
-
export * from "./models/index";
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3JlcXVlc3QtbWFuYWdlci1zdGF0ZS1zZXJ2aWNlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNEJBQTRCLENBQUM7QUFFM0MsY0FBYyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2h0dHAtbWFuYWdlci1zdGF0ZS5zdG9yZVwiO1xuXG5leHBvcnQgKiBmcm9tIFwiLi9tb2RlbHMvaW5kZXhcIjtcbiJdfQ==
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { RetryOptions } from "../../request-manager-services";
|
|
2
|
-
export class ApiRequest {
|
|
3
|
-
constructor(server = '', path, headers, adapter, mapper, polling, retry, stream, displayError, saveAs, ws) {
|
|
4
|
-
this.server = server;
|
|
5
|
-
this.path = path;
|
|
6
|
-
this.headers = headers;
|
|
7
|
-
this.adapter = adapter;
|
|
8
|
-
this.mapper = mapper;
|
|
9
|
-
this.polling = polling;
|
|
10
|
-
this.retry = retry;
|
|
11
|
-
this.stream = stream;
|
|
12
|
-
this.displayError = displayError;
|
|
13
|
-
this.saveAs = saveAs;
|
|
14
|
-
this.ws = ws;
|
|
15
|
-
}
|
|
16
|
-
static adapt(item) {
|
|
17
|
-
const server = Array.isArray(item?.server) ? item.server.join('/') : item?.server || '';
|
|
18
|
-
return new ApiRequest(server, (item?.path) ? item.path : [], (item?.headers) ? item.headers : {}, item?.adapter, item?.mapper, item?.polling ? Math.floor(item.polling) : 0, item?.retry ? RetryOptions.adapt(item.retry) : RetryOptions.adapt(), (item?.stream) ? item.stream : false, (item?.displayError) ? item.displayError : false, item?.saveAs, item?.ws);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXJlcXVlc3QubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3JlcXVlc3QtbWFuYWdlci1zdGF0ZS1zZXJ2aWNlL21vZGVscy9hcGktcmVxdWVzdC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUE7QUFpQjdELE1BQU0sT0FBTyxVQUFVO0lBRXJCLFlBQ1MsU0FBUyxFQUFFLEVBQ1gsSUFBWSxFQUNaLE9BQWEsRUFDYixPQUFhLEVBQ2IsTUFBWSxFQUNaLE9BQWdCLEVBQ2hCLEtBQW9CLEVBQ3BCLE1BQWdCLEVBQ2hCLFlBQXNCLEVBQ3RCLE1BQWUsRUFDZixFQUFjO1FBVmQsV0FBTSxHQUFOLE1BQU0sQ0FBSztRQUNYLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixZQUFPLEdBQVAsT0FBTyxDQUFNO1FBQ2IsWUFBTyxHQUFQLE9BQU8sQ0FBTTtRQUNiLFdBQU0sR0FBTixNQUFNLENBQU07UUFDWixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLFVBQUssR0FBTCxLQUFLLENBQWU7UUFDcEIsV0FBTSxHQUFOLE1BQU0sQ0FBVTtRQUNoQixpQkFBWSxHQUFaLFlBQVksQ0FBVTtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFTO1FBQ2YsT0FBRSxHQUFGLEVBQUUsQ0FBWTtJQUNwQixDQUFDO0lBRUosTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFVO1FBRXJCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFFeEYsT0FBTyxJQUFJLFVBQVUsQ0FDbkIsTUFBTSxFQUNOLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQzdCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQ25DLElBQUksRUFBRSxPQUFPLEVBQ2IsSUFBSSxFQUFFLE1BQU0sRUFDWixJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUM1QyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxFQUNuRSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUNwQyxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUNoRCxJQUFJLEVBQUUsTUFBTSxFQUNaLElBQUksRUFBRSxFQUFFLENBQ1QsQ0FBQTtJQUVILENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJldHJ5T3B0aW9ucyB9IGZyb20gXCIuLi8uLi9yZXF1ZXN0LW1hbmFnZXItc2VydmljZXNcIlxuaW1wb3J0IHsgV1NPcHRpb25zIH0gZnJvbSBcIi4vd3Mtb3B0aW9ucy5tb2RlbFwiXG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBpUmVxdWVzdEludGVyZmFjZSB7XG4gIHNlcnZlcjogc3RyaW5nXG4gIHBhdGg/OiBhbnlbXVxuICBoZWFkZXJzPzogYW55XG4gIGFkYXB0ZXI/OiBhbnlcbiAgbWFwcGVyPzogYW55XG4gIHBvbGxpbmc/OiBudW1iZXIgLy8gc2Vjb25kcyAodW5kZWZpbmVkIHwgMCA9IG5vbmUpXG4gIHJldHJ5PzogUmV0cnlPcHRpb25zXG4gIHN0cmVhbT86IGJvb2xlYW5cbiAgZGlzcGxheUVycm9yPzogYm9vbGVhblxuICBzYXZlQXM/OiBzdHJpbmdcbiAgd3M/OiBXU09wdGlvbnMgLy8gV2Vic29ja2V0IE9wdGlvbnNcbn1cblxuZXhwb3J0IGNsYXNzIEFwaVJlcXVlc3QgaW1wbGVtZW50cyBBcGlSZXF1ZXN0SW50ZXJmYWNlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgc2VydmVyID0gJycsXG4gICAgcHVibGljIHBhdGg/OiBhbnlbXSxcbiAgICBwdWJsaWMgaGVhZGVycz86IGFueSxcbiAgICBwdWJsaWMgYWRhcHRlcj86IGFueSxcbiAgICBwdWJsaWMgbWFwcGVyPzogYW55LFxuICAgIHB1YmxpYyBwb2xsaW5nPzogbnVtYmVyLFxuICAgIHB1YmxpYyByZXRyeT86IFJldHJ5T3B0aW9ucyxcbiAgICBwdWJsaWMgc3RyZWFtPzogYm9vbGVhbixcbiAgICBwdWJsaWMgZGlzcGxheUVycm9yPzogYm9vbGVhbixcbiAgICBwdWJsaWMgc2F2ZUFzPzogc3RyaW5nLFxuICAgIHB1YmxpYyB3cz86IFdTT3B0aW9ucyxcbiAgKSB7fVxuXG4gIHN0YXRpYyBhZGFwdChpdGVtPzogYW55KTogQXBpUmVxdWVzdCB7XG5cbiAgICBjb25zdCBzZXJ2ZXIgPSBBcnJheS5pc0FycmF5KGl0ZW0/LnNlcnZlcikgPyBpdGVtLnNlcnZlci5qb2luKCcvJykgOiBpdGVtPy5zZXJ2ZXIgfHwgJyc7XG5cbiAgICByZXR1cm4gbmV3IEFwaVJlcXVlc3QoXG4gICAgICBzZXJ2ZXIsXG4gICAgICAoaXRlbT8ucGF0aCkgPyBpdGVtLnBhdGggOiBbXSxcbiAgICAgIChpdGVtPy5oZWFkZXJzKSA/IGl0ZW0uaGVhZGVycyA6IHt9LFxuICAgICAgaXRlbT8uYWRhcHRlcixcbiAgICAgIGl0ZW0/Lm1hcHBlcixcbiAgICAgIGl0ZW0/LnBvbGxpbmcgPyBNYXRoLmZsb29yKGl0ZW0ucG9sbGluZykgOiAwLFxuICAgICAgaXRlbT8ucmV0cnkgPyBSZXRyeU9wdGlvbnMuYWRhcHQoaXRlbS5yZXRyeSkgOiBSZXRyeU9wdGlvbnMuYWRhcHQoKSxcbiAgICAgIChpdGVtPy5zdHJlYW0pID8gaXRlbS5zdHJlYW0gOiBmYWxzZSxcbiAgICAgIChpdGVtPy5kaXNwbGF5RXJyb3IpID8gaXRlbS5kaXNwbGF5RXJyb3IgOiBmYWxzZSxcbiAgICAgIGl0ZW0/LnNhdmVBcyxcbiAgICAgIGl0ZW0/LndzLFxuICAgIClcblxuICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export * from "./api-request.model";
|
|
2
|
-
export * from "./request-options.model";
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3JlcXVlc3QtbWFuYWdlci1zdGF0ZS1zZXJ2aWNlL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9hcGktcmVxdWVzdC5tb2RlbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmVxdWVzdC1vcHRpb25zLm1vZGVsXCI7XG5cbiJdfQ==
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export class RequestOptions {
|
|
2
|
-
constructor(path = [], headers = {}) {
|
|
3
|
-
this.path = path;
|
|
4
|
-
this.headers = headers;
|
|
5
|
-
}
|
|
6
|
-
static adapt(item) {
|
|
7
|
-
return new RequestOptions(item?.path, item?.headers);
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1vcHRpb25zLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9zZXJ2aWNlcy9yZXF1ZXN0LW1hbmFnZXItc3RhdGUtc2VydmljZS9tb2RlbHMvcmVxdWVzdC1vcHRpb25zLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE1BQU0sT0FBTyxjQUFjO0lBRXpCLFlBQ1MsT0FBYyxFQUFFLEVBQ2hCLFVBQVUsRUFBRTtRQURaLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsWUFBTyxHQUFQLE9BQU8sQ0FBSztJQUNsQixDQUFDO0lBRUosTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFVO1FBRXJCLE9BQU8sSUFBSSxjQUFjLENBQ3ZCLElBQUksRUFBRSxJQUFJLEVBQ1YsSUFBSSxFQUFFLE9BQU8sQ0FDZCxDQUFBO0lBRUgsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0T3B0aW9uc0ludGVyZmFjZSB7XG4gICAgcGF0aDogYW55W10sXG4gICAgaGVhZGVyczogYW55LFxufVxuXG5leHBvcnQgY2xhc3MgUmVxdWVzdE9wdGlvbnMgaW1wbGVtZW50cyBSZXF1ZXN0T3B0aW9uc0ludGVyZmFjZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHBhdGg6IGFueVtdID0gW10sXG4gICAgcHVibGljIGhlYWRlcnMgPSB7fSxcbiAgKSB7fVxuXG4gIHN0YXRpYyBhZGFwdChpdGVtPzogYW55KTogUmVxdWVzdE9wdGlvbnMge1xuXG4gICAgcmV0dXJuIG5ldyBSZXF1ZXN0T3B0aW9ucyhcbiAgICAgIGl0ZW0/LnBhdGgsXG4gICAgICBpdGVtPy5oZWFkZXJzLFxuICAgIClcblxuICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export class WSOptions {
|
|
2
|
-
constructor(id = '', wsServer = '', jwtToken = '', permissions) {
|
|
3
|
-
this.id = id;
|
|
4
|
-
this.wsServer = wsServer;
|
|
5
|
-
this.jwtToken = jwtToken;
|
|
6
|
-
this.permissions = permissions;
|
|
7
|
-
}
|
|
8
|
-
static adapt(item) {
|
|
9
|
-
return new WSOptions(item?.id, item?.wsServer, item?.jwtToken, (item?.permissions) ? item.permissions.split(',').map((p) => p.trim()) : []);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3Mtb3B0aW9ucy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2h0dHAtcmVxdWVzdC1tYW5hZ2VyL3NyYy9saWIvc2VydmljZXMvcmVxdWVzdC1tYW5hZ2VyLXN0YXRlLXNlcnZpY2UvbW9kZWxzL3dzLW9wdGlvbnMubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsTUFBTSxPQUFPLFNBQVM7SUFFcEIsWUFDUyxLQUFhLEVBQUUsRUFDZixXQUFtQixFQUFFLEVBQ3JCLFdBQW1CLEVBQUUsRUFDckIsV0FBc0I7UUFIdEIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixnQkFBVyxHQUFYLFdBQVcsQ0FBVztJQUM1QixDQUFDO0lBRUosTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFVO1FBRXJCLE9BQU8sSUFBSSxTQUFTLENBQ2xCLElBQUksRUFBRSxFQUFFLEVBQ1IsSUFBSSxFQUFFLFFBQVEsRUFDZCxJQUFJLEVBQUUsUUFBUSxFQUNkLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3BGLENBQUE7SUFFSCxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFdTT3B0aW9uc0ludGVyZmFjZSB7XG4gICAgaWQ6IHN0cmluZyxcbiAgICB3c1NlcnZlcjogc3RyaW5nLFxuICAgIGp3dFRva2VuOiBzdHJpbmcsXG4gICAgcGVybWlzc2lvbnM/OiBzdHJpbmdbXSxcbn1cblxuZXhwb3J0IGNsYXNzIFdTT3B0aW9ucyBpbXBsZW1lbnRzIFdTT3B0aW9uc0ludGVyZmFjZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGlkOiBzdHJpbmcgPSAnJyxcbiAgICBwdWJsaWMgd3NTZXJ2ZXI6IHN0cmluZyA9ICcnLFxuICAgIHB1YmxpYyBqd3RUb2tlbjogc3RyaW5nID0gJycsXG4gICAgcHVibGljIHBlcm1pc3Npb25zPzogc3RyaW5nW10sXG4gICkge31cblxuICBzdGF0aWMgYWRhcHQoaXRlbT86IGFueSk6IFdTT3B0aW9ucyB7XG5cbiAgICByZXR1cm4gbmV3IFdTT3B0aW9ucyhcbiAgICAgIGl0ZW0/LmlkLFxuICAgICAgaXRlbT8ud3NTZXJ2ZXIsXG4gICAgICBpdGVtPy5qd3RUb2tlbixcbiAgICAgIChpdGVtPy5wZXJtaXNzaW9ucykgPyBpdGVtLnBlcm1pc3Npb25zLnNwbGl0KCcsJykubWFwKChwOiBzdHJpbmcpID0+IHAudHJpbSgpKSA6IFtdLFxuICAgIClcblxuICB9XG5cbn1cbiJdfQ==
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { APP_ID, Inject, Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
// Must provide a value for APP_ID in AppModule->Providers
|
|
4
|
-
// providers: [
|
|
5
|
-
// {
|
|
6
|
-
// provide: APP_ID,
|
|
7
|
-
// useValue: "056991ac-3537-43ab-b5b9-83edf6554eff",
|
|
8
|
-
// },
|
|
9
|
-
export class AppService {
|
|
10
|
-
constructor(id) {
|
|
11
|
-
this.id = id;
|
|
12
|
-
this.appID = this.id;
|
|
13
|
-
}
|
|
14
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AppService, deps: [{ token: APP_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
15
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AppService, providedIn: 'root' }); }
|
|
16
|
-
}
|
|
17
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AppService, decorators: [{
|
|
18
|
-
type: Injectable,
|
|
19
|
-
args: [{
|
|
20
|
-
providedIn: 'root'
|
|
21
|
-
}]
|
|
22
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
23
|
-
type: Inject,
|
|
24
|
-
args: [APP_ID]
|
|
25
|
-
}] }] });
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL3NlcnZpY2VzL3V0aWxzL2FwcC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFM0QsMERBQTBEO0FBQzFELGVBQWU7QUFDZixNQUFNO0FBQ04sdUJBQXVCO0FBQ3ZCLHdEQUF3RDtBQUN4RCxPQUFPO0FBS1AsTUFBTSxPQUFPLFVBQVU7SUFJckIsWUFBb0MsRUFBVTtRQUFWLE9BQUUsR0FBRixFQUFFLENBQVE7UUFDNUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFBO0lBQ3RCLENBQUM7K0dBTlUsVUFBVSxrQkFJRCxNQUFNO21IQUpmLFVBQVUsY0FGVCxNQUFNOzs0RkFFUCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBS2MsTUFBTTsyQkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVBQX0lELCBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLy8gTXVzdCBwcm92aWRlIGEgdmFsdWUgZm9yIEFQUF9JRCBpbiBBcHBNb2R1bGUtPlByb3ZpZGVyc1xuLy8gcHJvdmlkZXJzOiBbXG4vLyAgIHtcbi8vICAgICBwcm92aWRlOiBBUFBfSUQsXG4vLyAgICAgdXNlVmFsdWU6IFwiMDU2OTkxYWMtMzUzNy00M2FiLWI1YjktODNlZGY2NTU0ZWZmXCIsXG4vLyAgIH0sXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFwcFNlcnZpY2Uge1xuXG4gIGFwcElEOiBzdHJpbmdcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KEFQUF9JRCkgcHJpdmF0ZSBpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5hcHBJRCA9IHRoaXMuaWRcbiAgfVxuXG59XG4iXX0=
|